You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-11-03 17:13:17 +03:00 
			
		
		
		
	Merge pull request #148 from mariadb-corporation/MCOL-664
MCOL-664 Add function support for TEXT
This commit is contained in:
		@@ -325,8 +325,7 @@ void ExpressionStep::populateColumnInfo(ReturnedColumn* rc, JobInfo& jobInfo)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	// As of bug3695, make sure varbinary is not used in function expression.
 | 
						// As of bug3695, make sure varbinary is not used in function expression.
 | 
				
			||||||
	if ((rc->resultType().colDataType == CalpontSystemCatalog::VARBINARY ||
 | 
						if ((rc->resultType().colDataType == CalpontSystemCatalog::VARBINARY ||
 | 
				
			||||||
         rc->resultType().colDataType == CalpontSystemCatalog::BLOB ||
 | 
					         rc->resultType().colDataType == CalpontSystemCatalog::BLOB) && !fVarBinOK)
 | 
				
			||||||
         rc->resultType().colDataType == CalpontSystemCatalog::TEXT) && !fVarBinOK)
 | 
					 | 
				
			||||||
		throw runtime_error("VARBINARY/BLOB in filter or function is not supported.");
 | 
							throw runtime_error("VARBINARY/BLOB in filter or function is not supported.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SimpleColumn* sc = dynamic_cast<SimpleColumn*>(rc);
 | 
						SimpleColumn* sc = dynamic_cast<SimpleColumn*>(rc);
 | 
				
			||||||
@@ -347,8 +346,7 @@ void ExpressionStep::populateColumnInfo(SimpleColumn* sc, JobInfo& jobInfo)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	// As of bug3695, make sure varbinary is not used in function expression.
 | 
						// As of bug3695, make sure varbinary is not used in function expression.
 | 
				
			||||||
	if ((sc->resultType().colDataType == CalpontSystemCatalog::VARBINARY ||
 | 
						if ((sc->resultType().colDataType == CalpontSystemCatalog::VARBINARY ||
 | 
				
			||||||
         sc->resultType().colDataType == CalpontSystemCatalog::BLOB ||
 | 
					         sc->resultType().colDataType == CalpontSystemCatalog::BLOB) && !fVarBinOK)
 | 
				
			||||||
         sc->resultType().colDataType == CalpontSystemCatalog::TEXT) && !fVarBinOK)
 | 
					 | 
				
			||||||
		throw runtime_error ("VARBINARY/BLOB in filter or function is not supported.");
 | 
							throw runtime_error ("VARBINARY/BLOB in filter or function is not supported.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	CalpontSystemCatalog::OID tblOid = joblist::tableOid(sc, jobInfo.csc);
 | 
						CalpontSystemCatalog::OID tblOid = joblist::tableOid(sc, jobInfo.csc);
 | 
				
			||||||
@@ -414,8 +412,7 @@ void ExpressionStep::populateColumnInfo(WindowFunctionColumn* wc, JobInfo& jobIn
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	// As of bug3695, make sure varbinary is not used in function expression.
 | 
						// As of bug3695, make sure varbinary is not used in function expression.
 | 
				
			||||||
	if ((wc->resultType().colDataType == CalpontSystemCatalog::VARBINARY ||
 | 
						if ((wc->resultType().colDataType == CalpontSystemCatalog::VARBINARY ||
 | 
				
			||||||
         wc->resultType().colDataType == CalpontSystemCatalog::BLOB ||
 | 
					         wc->resultType().colDataType == CalpontSystemCatalog::BLOB) && !fVarBinOK)
 | 
				
			||||||
         wc->resultType().colDataType == CalpontSystemCatalog::TEXT) && !fVarBinOK)
 | 
					 | 
				
			||||||
		throw runtime_error("VARBINARY/BLOB in filter or function is not supported.");
 | 
							throw runtime_error("VARBINARY/BLOB in filter or function is not supported.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// This is for window function in IN/EXISTS sub-query.
 | 
						// This is for window function in IN/EXISTS sub-query.
 | 
				
			||||||
@@ -441,8 +438,7 @@ void ExpressionStep::populateColumnInfo(AggregateColumn* ac, JobInfo& jobInfo)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	// As of bug3695, make sure varbinary is not used in function expression.
 | 
						// As of bug3695, make sure varbinary is not used in function expression.
 | 
				
			||||||
	if ((ac->resultType().colDataType == CalpontSystemCatalog::VARBINARY ||
 | 
						if ((ac->resultType().colDataType == CalpontSystemCatalog::VARBINARY ||
 | 
				
			||||||
         ac->resultType().colDataType == CalpontSystemCatalog::BLOB ||
 | 
					         ac->resultType().colDataType == CalpontSystemCatalog::BLOB) && !fVarBinOK)
 | 
				
			||||||
         ac->resultType().colDataType == CalpontSystemCatalog::TEXT) && !fVarBinOK)
 | 
					 | 
				
			||||||
		throw runtime_error("VARBINARY/BLOB in filter or function is not supported.");
 | 
							throw runtime_error("VARBINARY/BLOB in filter or function is not supported.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// This is for aggregate function in IN/EXISTS sub-query.
 | 
						// This is for aggregate function in IN/EXISTS sub-query.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -174,6 +174,7 @@ namespace
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			case execplan::CalpontSystemCatalog::VARCHAR: // including CHAR'
 | 
								case execplan::CalpontSystemCatalog::VARCHAR: // including CHAR'
 | 
				
			||||||
			case execplan::CalpontSystemCatalog::CHAR:
 | 
								case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
					            case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				const string& val = pm[0]->data()->getStrVal(row, isNull);
 | 
									const string& val = pm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
				if (notBetween)
 | 
									if (notBetween)
 | 
				
			||||||
@@ -215,6 +216,7 @@ CalpontSystemCatalog::ColType Func_between::operationType( FunctionParm& fp, Cal
 | 
				
			|||||||
		ct = op.operationType();
 | 
							ct = op.operationType();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if ((fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::CHAR &&
 | 
							if ((fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::CHAR &&
 | 
				
			||||||
 | 
								fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::TEXT && 
 | 
				
			||||||
			fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::VARCHAR) || 
 | 
								fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::VARCHAR) || 
 | 
				
			||||||
			ct.colDataType == CalpontSystemCatalog::DATE ||
 | 
								ct.colDataType == CalpontSystemCatalog::DATE ||
 | 
				
			||||||
			ct.colDataType == CalpontSystemCatalog::DATETIME)
 | 
								ct.colDataType == CalpontSystemCatalog::DATETIME)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,6 +85,7 @@ int64_t Func_bitand::getIntVal(Row& row,
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
			case execplan::CalpontSystemCatalog::VARCHAR:
 | 
								case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			case execplan::CalpontSystemCatalog::CHAR:
 | 
								case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
								case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				int64_t value = parm[i]->data()->getIntVal(row, isNull);
 | 
									int64_t value = parm[i]->data()->getIntVal(row, isNull);
 | 
				
			||||||
				if (isNull)
 | 
									if (isNull)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,6 +85,7 @@ bool getUIntValFromParm(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::VARCHAR:
 | 
					        case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			value = parm->data()->getIntVal(row, isNull);
 | 
								value = parm->data()->getIntVal(row, isNull);
 | 
				
			||||||
			if (isNull)
 | 
								if (isNull)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -101,6 +101,7 @@ inline uint64_t simple_case_cmp(Row& row,
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
   			const string& ev = parm[n]->data()->getStrVal(row, isNull);
 | 
					   			const string& ev = parm[n]->data()->getStrVal(row, isNull);
 | 
				
			||||||
@@ -252,6 +253,7 @@ CalpontSystemCatalog::ColType caseOperationType(FunctionParm& fp,
 | 
				
			|||||||
			{
 | 
								{
 | 
				
			||||||
				// the case expression
 | 
									// the case expression
 | 
				
			||||||
				if (fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::CHAR &&
 | 
									if (fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::CHAR &&
 | 
				
			||||||
 | 
										fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::TEXT &&
 | 
				
			||||||
					fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::VARCHAR)
 | 
										fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::VARCHAR)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					PredicateOperator op;
 | 
										PredicateOperator op;
 | 
				
			||||||
@@ -267,6 +269,7 @@ CalpontSystemCatalog::ColType caseOperationType(FunctionParm& fp,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::CHAR &&
 | 
							if (fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::CHAR &&
 | 
				
			||||||
 | 
					            fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::TEXT &&
 | 
				
			||||||
			fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::VARCHAR)
 | 
								fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::VARCHAR)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			// this is not a string column
 | 
								// this is not a string column
 | 
				
			||||||
@@ -280,6 +283,7 @@ CalpontSystemCatalog::ColType caseOperationType(FunctionParm& fp,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			// If any parm is of string type, the result type should be string. (same as if)
 | 
								// If any parm is of string type, the result type should be string. (same as if)
 | 
				
			||||||
			else if (rct.colDataType != CalpontSystemCatalog::CHAR &&
 | 
								else if (rct.colDataType != CalpontSystemCatalog::CHAR &&
 | 
				
			||||||
 | 
					                        rct.colDataType != CalpontSystemCatalog::TEXT &&
 | 
				
			||||||
						rct.colDataType != CalpontSystemCatalog::VARCHAR)
 | 
											rct.colDataType != CalpontSystemCatalog::VARCHAR)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				op.setOpType(rct, fp[i]->data()->resultType());
 | 
									op.setOpType(rct, fp[i]->data()->resultType());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -134,6 +134,7 @@ int64_t Func_cast_signed::getIntVal(Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const string& value = parm[0]->data()->getStrVal(row, isNull);
 | 
								const string& value = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
			if (isNull)
 | 
								if (isNull)
 | 
				
			||||||
@@ -243,6 +244,7 @@ uint64_t Func_cast_unsigned::getUintVal(Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const string& value = parm[0]->data()->getStrVal(row, isNull);
 | 
								const string& value = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
			if (isNull)
 | 
								if (isNull)
 | 
				
			||||||
@@ -358,6 +360,7 @@ string Func_cast_char::getStrVal(Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const string& value = parm[0]->data()->getStrVal(row, isNull);
 | 
								const string& value = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
			if (isNull)
 | 
								if (isNull)
 | 
				
			||||||
@@ -519,6 +522,7 @@ int32_t Func_cast_date::getDateIntVal(rowgroup::Row& row,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
					        case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDate(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDate(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
@@ -588,6 +592,7 @@ int64_t Func_cast_date::getDatetimeIntVal(rowgroup::Row& row,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
					        case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
@@ -716,6 +721,7 @@ int64_t Func_cast_datetime::getDatetimeIntVal(rowgroup::Row& row,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
@@ -893,6 +899,7 @@ IDB_Decimal Func_cast_decimal::getDecimalVal(Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            const string& strValue = parm[0]->data()->getStrVal(row, isNull);
 | 
					            const string& strValue = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
            const char* str = strValue.c_str();
 | 
					            const char* str = strValue.c_str();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -122,6 +122,7 @@ int64_t Func_ceil::getIntVal(Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const string& str = parm[0]->data()->getStrVal(row, isNull);
 | 
								const string& str = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
			if (!isNull)
 | 
								if (!isNull)
 | 
				
			||||||
@@ -197,6 +198,7 @@ uint64_t Func_ceil::getUintVal(Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const string& str = parm[0]->data()->getStrVal(row, isNull);
 | 
								const string& str = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
			if (!isNull)
 | 
								if (!isNull)
 | 
				
			||||||
@@ -247,7 +249,8 @@ double Func_ceil::getDoubleVal(Row& row,
 | 
				
			|||||||
		ret = ceil(parm[0]->data()->getDoubleVal(row, isNull));
 | 
							ret = ceil(parm[0]->data()->getDoubleVal(row, isNull));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else if (op_ct.colDataType == CalpontSystemCatalog::VARCHAR ||
 | 
						else if (op_ct.colDataType == CalpontSystemCatalog::VARCHAR ||
 | 
				
			||||||
			 op_ct.colDataType == CalpontSystemCatalog::CHAR)
 | 
								 op_ct.colDataType == CalpontSystemCatalog::CHAR ||
 | 
				
			||||||
 | 
								 op_ct.colDataType == CalpontSystemCatalog::TEXT)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		const string& str = parm[0]->data()->getStrVal(row, isNull);
 | 
							const string& str = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
		if (!isNull)
 | 
							if (!isNull)
 | 
				
			||||||
@@ -280,7 +283,8 @@ string Func_ceil::getStrVal(Row& row,
 | 
				
			|||||||
		op_ct.colDataType == CalpontSystemCatalog::FLOAT ||
 | 
							op_ct.colDataType == CalpontSystemCatalog::FLOAT ||
 | 
				
			||||||
        op_ct.colDataType == CalpontSystemCatalog::UFLOAT ||
 | 
					        op_ct.colDataType == CalpontSystemCatalog::UFLOAT ||
 | 
				
			||||||
		op_ct.colDataType == CalpontSystemCatalog::VARCHAR ||
 | 
							op_ct.colDataType == CalpontSystemCatalog::VARCHAR ||
 | 
				
			||||||
		op_ct.colDataType == CalpontSystemCatalog::CHAR)
 | 
							op_ct.colDataType == CalpontSystemCatalog::CHAR ||
 | 
				
			||||||
 | 
							op_ct.colDataType == CalpontSystemCatalog::TEXT)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		snprintf(tmp, 511, "%f", getDoubleVal(row, parm, isNull, op_ct));
 | 
							snprintf(tmp, 511, "%f", getDoubleVal(row, parm, isNull, op_ct));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -121,6 +121,7 @@ string Func_char::getStrVal(Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::VARCHAR: // including CHAR'
 | 
					        case execplan::CalpontSystemCatalog::VARCHAR: // including CHAR'
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DOUBLE:
 | 
							case execplan::CalpontSystemCatalog::DOUBLE:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDOUBLE:
 | 
					        case execplan::CalpontSystemCatalog::UDOUBLE:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,6 +73,7 @@ int64_t Func_char_length::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR: // including CHAR
 | 
							case execplan::CalpontSystemCatalog::VARCHAR: // including CHAR
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -88,6 +88,7 @@ int64_t Func_date::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -661,6 +661,7 @@ int64_t Func_date_add::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
@@ -693,6 +694,7 @@ int64_t Func_date_add::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
	ConstantColumn* constCol = dynamic_cast<ConstantColumn*>(parm[3]->data());
 | 
						ConstantColumn* constCol = dynamic_cast<ConstantColumn*>(parm[3]->data());
 | 
				
			||||||
	execplan::CalpontSystemCatalog::ColType ct3 = parm[3]->data()->resultType();
 | 
						execplan::CalpontSystemCatalog::ColType ct3 = parm[3]->data()->resultType();
 | 
				
			||||||
	if ((ct3.colDataType == execplan::CalpontSystemCatalog::CHAR ||
 | 
						if ((ct3.colDataType == execplan::CalpontSystemCatalog::CHAR ||
 | 
				
			||||||
 | 
					         ct3.colDataType == execplan::CalpontSystemCatalog::TEXT ||
 | 
				
			||||||
	     ct3.colDataType == execplan::CalpontSystemCatalog::VARCHAR) &&
 | 
						     ct3.colDataType == execplan::CalpontSystemCatalog::VARCHAR) &&
 | 
				
			||||||
	    constCol != NULL && constCol->constval().compare("SUB") == 0)
 | 
						    constCol != NULL && constCol->constval().compare("SUB") == 0)
 | 
				
			||||||
		funcType = OP_SUB;
 | 
							funcType = OP_SUB;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -238,6 +238,7 @@ string Func_date_format::getStrVal(rowgroup::Row& row,
 | 
				
			|||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,6 +58,7 @@ int64_t Func_day::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			val = parm[0]->data()->getIntVal(row, isNull);
 | 
								val = parm[0]->data()->getIntVal(row, isNull);
 | 
				
			||||||
			return (uint32_t)((val >> 38) & 0x3f);
 | 
								return (uint32_t)((val >> 38) & 0x3f);
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,6 +68,7 @@ int64_t Func_dayname::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			day = (uint32_t)((val >> 38) & 0x3f);
 | 
								day = (uint32_t)((val >> 38) & 0x3f);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,6 +67,7 @@ int64_t Func_dayofweek::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			day = (uint32_t)((val >> 38) & 0x3f);
 | 
								day = (uint32_t)((val >> 38) & 0x3f);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,6 +67,7 @@ int64_t Func_dayofyear::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			day = (uint32_t)((val >> 38) & 0x3f);
 | 
								day = (uint32_t)((val >> 38) & 0x3f);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,6 +60,7 @@ string Func_elt::getStrVal(rowgroup::Row& row,
 | 
				
			|||||||
		case CalpontSystemCatalog::DOUBLE:
 | 
							case CalpontSystemCatalog::DOUBLE:
 | 
				
			||||||
		case CalpontSystemCatalog::FLOAT:
 | 
							case CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			double value = parm[0]->data()->getDoubleVal(row, isNull);
 | 
								double value = parm[0]->data()->getDoubleVal(row, isNull);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -118,6 +118,7 @@ int64_t Func_extract::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
		break;
 | 
							break;
 | 
				
			||||||
	case CalpontSystemCatalog::VARCHAR:
 | 
						case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
	case CalpontSystemCatalog::CHAR:
 | 
						case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
						case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		const string& val = parm[0]->data()->getStrVal(row, isNull);
 | 
							const string& val = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
		time = dataconvert::DataConvert::stringToDatetime(val);
 | 
							time = dataconvert::DataConvert::stringToDatetime(val);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -118,6 +118,7 @@ int64_t Func_floor::getIntVal(Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const string& str = parm[0]->data()->getStrVal(row, isNull);
 | 
								const string& str = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
			if (!isNull)
 | 
								if (!isNull)
 | 
				
			||||||
@@ -200,6 +201,7 @@ uint64_t Func_floor::getUintVal(Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const string& str = parm[0]->data()->getStrVal(row, isNull);
 | 
								const string& str = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
			if (!isNull)
 | 
								if (!isNull)
 | 
				
			||||||
@@ -252,7 +254,8 @@ double Func_floor::getDoubleVal(Row& row,
 | 
				
			|||||||
		ret = floor(parm[0]->data()->getDoubleVal(row, isNull));
 | 
							ret = floor(parm[0]->data()->getDoubleVal(row, isNull));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else if (op_ct.colDataType == CalpontSystemCatalog::VARCHAR ||
 | 
						else if (op_ct.colDataType == CalpontSystemCatalog::VARCHAR ||
 | 
				
			||||||
			 op_ct.colDataType == CalpontSystemCatalog::CHAR)
 | 
								 op_ct.colDataType == CalpontSystemCatalog::CHAR ||
 | 
				
			||||||
 | 
								 op_ct.colDataType == CalpontSystemCatalog::TEXT)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		const string& str = parm[0]->data()->getStrVal(row, isNull);
 | 
							const string& str = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
		if (!isNull)
 | 
							if (!isNull)
 | 
				
			||||||
@@ -278,7 +281,8 @@ string Func_floor::getStrVal(Row& row,
 | 
				
			|||||||
		op_ct.colDataType == CalpontSystemCatalog::FLOAT ||
 | 
							op_ct.colDataType == CalpontSystemCatalog::FLOAT ||
 | 
				
			||||||
		op_ct.colDataType == CalpontSystemCatalog::UFLOAT ||
 | 
							op_ct.colDataType == CalpontSystemCatalog::UFLOAT ||
 | 
				
			||||||
		op_ct.colDataType == CalpontSystemCatalog::VARCHAR ||
 | 
							op_ct.colDataType == CalpontSystemCatalog::VARCHAR ||
 | 
				
			||||||
		op_ct.colDataType == CalpontSystemCatalog::CHAR)
 | 
							op_ct.colDataType == CalpontSystemCatalog::CHAR ||
 | 
				
			||||||
 | 
							op_ct.colDataType == CalpontSystemCatalog::TEXT)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		snprintf(tmp, 511, "%f", getDoubleVal(row, parm, isNull, op_ct));
 | 
							snprintf(tmp, 511, "%f", getDoubleVal(row, parm, isNull, op_ct));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,6 +72,7 @@ string Func_hex::getStrVal(rowgroup::Row& row,
 | 
				
			|||||||
	switch (parm[0]->data()->resultType().colDataType)
 | 
						switch (parm[0]->data()->resultType().colDataType)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case CalpontSystemCatalog::DATETIME:
 | 
							case CalpontSystemCatalog::DATETIME:
 | 
				
			||||||
		case CalpontSystemCatalog::DATE:
 | 
							case CalpontSystemCatalog::DATE:
 | 
				
			||||||
@@ -97,7 +98,6 @@ string Func_hex::getStrVal(rowgroup::Row& row,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		case CalpontSystemCatalog::VARBINARY:
 | 
							case CalpontSystemCatalog::VARBINARY:
 | 
				
			||||||
        case CalpontSystemCatalog::BLOB:
 | 
					        case CalpontSystemCatalog::BLOB:
 | 
				
			||||||
        case CalpontSystemCatalog::TEXT:
 | 
					 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const string& arg = parm[0]->data()->getStrVal(row, isNull);
 | 
								const string& arg = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
			uint64_t hexLen = arg.size() * 2;
 | 
								uint64_t hexLen = arg.size() * 2;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -78,6 +78,7 @@ int64_t Func_hour::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,6 +47,7 @@ bool boolVal(SPTP& parm, Row& row, bool& isNull)
 | 
				
			|||||||
		switch (parm->data()->resultType().colDataType)
 | 
							switch (parm->data()->resultType().colDataType)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			case CalpontSystemCatalog::CHAR:
 | 
								case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
								case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
			case CalpontSystemCatalog::VARCHAR:
 | 
								case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
				ret = (atoi((char*)(parm->data()->getStrVal().c_str())) != 0);
 | 
									ret = (atoi((char*)(parm->data()->getStrVal().c_str())) != 0);
 | 
				
			||||||
            case CalpontSystemCatalog::FLOAT:
 | 
					            case CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
@@ -95,7 +96,9 @@ CalpontSystemCatalog::ColType Func_if::operationType(FunctionParm& fp, CalpontSy
 | 
				
			|||||||
	// If any parm is of string type, the result type should be string.
 | 
						// If any parm is of string type, the result type should be string.
 | 
				
			||||||
	if (fp[1]->data()->resultType().colDataType == CalpontSystemCatalog::CHAR ||
 | 
						if (fp[1]->data()->resultType().colDataType == CalpontSystemCatalog::CHAR ||
 | 
				
			||||||
		  fp[1]->data()->resultType().colDataType == CalpontSystemCatalog::VARCHAR ||
 | 
							  fp[1]->data()->resultType().colDataType == CalpontSystemCatalog::VARCHAR ||
 | 
				
			||||||
 | 
							  fp[1]->data()->resultType().colDataType == CalpontSystemCatalog::TEXT ||
 | 
				
			||||||
		  fp[2]->data()->resultType().colDataType == CalpontSystemCatalog::CHAR ||
 | 
							  fp[2]->data()->resultType().colDataType == CalpontSystemCatalog::CHAR ||
 | 
				
			||||||
 | 
							  fp[2]->data()->resultType().colDataType == CalpontSystemCatalog::TEXT ||
 | 
				
			||||||
		  fp[2]->data()->resultType().colDataType == CalpontSystemCatalog::VARCHAR)
 | 
							  fp[2]->data()->resultType().colDataType == CalpontSystemCatalog::VARCHAR)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		CalpontSystemCatalog::ColType ct;
 | 
							CalpontSystemCatalog::ColType ct;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -169,6 +169,7 @@ namespace
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			case execplan::CalpontSystemCatalog::VARCHAR: // including CHAR'
 | 
								case execplan::CalpontSystemCatalog::VARCHAR: // including CHAR'
 | 
				
			||||||
			case execplan::CalpontSystemCatalog::CHAR:
 | 
								case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
								case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				const string& val = pm[0]->data()->getStrVal(row, isNull);
 | 
									const string& val = pm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
				if (isNull)
 | 
									if (isNull)
 | 
				
			||||||
@@ -211,7 +212,8 @@ CalpontSystemCatalog::ColType Func_in::operationType( FunctionParm& fp, CalpontS
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
		//op.setOpType(op.operationType(), fp[i]->data()->resultType());
 | 
							//op.setOpType(op.operationType(), fp[i]->data()->resultType());
 | 
				
			||||||
		if (fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::CHAR &&
 | 
							if (fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::CHAR &&
 | 
				
			||||||
			fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::VARCHAR)
 | 
								fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::VARCHAR &&
 | 
				
			||||||
 | 
					            fp[i]->data()->resultType().colDataType != CalpontSystemCatalog::TEXT)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			allString = false;
 | 
								allString = false;
 | 
				
			||||||
			op.setOpType(ct, fp[i]->data()->resultType());
 | 
								op.setOpType(ct, fp[i]->data()->resultType());
 | 
				
			||||||
@@ -222,6 +224,8 @@ CalpontSystemCatalog::ColType Func_in::operationType( FunctionParm& fp, CalpontS
 | 
				
			|||||||
			if ((fp[i]->data()->resultType().colDataType == CalpontSystemCatalog::CHAR && 
 | 
								if ((fp[i]->data()->resultType().colDataType == CalpontSystemCatalog::CHAR && 
 | 
				
			||||||
				  fp[i]->data()->resultType().colWidth > 8) || 
 | 
									  fp[i]->data()->resultType().colWidth > 8) || 
 | 
				
			||||||
				  (fp[i]->data()->resultType().colDataType == CalpontSystemCatalog::VARCHAR &&
 | 
									  (fp[i]->data()->resultType().colDataType == CalpontSystemCatalog::VARCHAR &&
 | 
				
			||||||
 | 
									  fp[i]->data()->resultType().colWidth >= 8) || 
 | 
				
			||||||
 | 
									  (fp[i]->data()->resultType().colDataType == CalpontSystemCatalog::TEXT &&
 | 
				
			||||||
				  fp[i]->data()->resultType().colWidth >= 8))
 | 
									  fp[i]->data()->resultType().colWidth >= 8))
 | 
				
			||||||
				  allNonToken = false;
 | 
									  allNonToken = false;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,6 +68,7 @@ bool Func_isnull::getBoolVal(Row& row,
 | 
				
			|||||||
			parm[0]->data()->getDecimalVal(row, isNull);
 | 
								parm[0]->data()->getDecimalVal(row, isNull);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			parm[0]->data()->getStrVal(row, isNull);
 | 
								parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -69,6 +69,7 @@ int64_t Func_last_day::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			day = (uint32_t)((val >> 38) & 0x3f);
 | 
								day = (uint32_t)((val >> 38) & 0x3f);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,8 +49,7 @@ int64_t Func_length::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
							CalpontSystemCatalog::ColType&)
 | 
												CalpontSystemCatalog::ColType&)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if ((fp[0]->data()->resultType().colDataType == CalpontSystemCatalog::VARBINARY) ||
 | 
						if ((fp[0]->data()->resultType().colDataType == CalpontSystemCatalog::VARBINARY) ||
 | 
				
			||||||
        (fp[0]->data()->resultType().colDataType == CalpontSystemCatalog::BLOB) ||
 | 
					        (fp[0]->data()->resultType().colDataType == CalpontSystemCatalog::BLOB))
 | 
				
			||||||
        (fp[0]->data()->resultType().colDataType == CalpontSystemCatalog::TEXT))
 | 
					 | 
				
			||||||
		return fp[0]->data()->getStrVal(row, isNull).length();
 | 
							return fp[0]->data()->getStrVal(row, isNull).length();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return strlen(fp[0]->data()->getStrVal(row, isNull).c_str());
 | 
						return strlen(fp[0]->data()->getStrVal(row, isNull).c_str());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,6 +57,7 @@ uint64_t makedate(rowgroup::Row& row,
 | 
				
			|||||||
		case CalpontSystemCatalog::DOUBLE:
 | 
							case CalpontSystemCatalog::DOUBLE:
 | 
				
			||||||
		case CalpontSystemCatalog::FLOAT:
 | 
							case CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			double value = parm[0]->data()->getDoubleVal(row, isNull);
 | 
								double value = parm[0]->data()->getDoubleVal(row, isNull);
 | 
				
			||||||
@@ -102,6 +103,7 @@ uint64_t makedate(rowgroup::Row& row,
 | 
				
			|||||||
		case CalpontSystemCatalog::DOUBLE:
 | 
							case CalpontSystemCatalog::DOUBLE:
 | 
				
			||||||
		case CalpontSystemCatalog::FLOAT:
 | 
							case CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			dayofyear = parm[1]->data()->getStrVal(row, isNull);
 | 
								dayofyear = parm[1]->data()->getStrVal(row, isNull);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,6 +63,7 @@ string Func_maketime::getStrVal(rowgroup::Row& row,
 | 
				
			|||||||
		case CalpontSystemCatalog::DOUBLE:
 | 
							case CalpontSystemCatalog::DOUBLE:
 | 
				
			||||||
		case CalpontSystemCatalog::FLOAT:
 | 
							case CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			double value = parm[0]->data()->getDoubleVal(row, isNull);
 | 
								double value = parm[0]->data()->getDoubleVal(row, isNull);
 | 
				
			||||||
@@ -96,6 +97,7 @@ string Func_maketime::getStrVal(rowgroup::Row& row,
 | 
				
			|||||||
		case CalpontSystemCatalog::DOUBLE:
 | 
							case CalpontSystemCatalog::DOUBLE:
 | 
				
			||||||
		case CalpontSystemCatalog::FLOAT:
 | 
							case CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			double value = parm[1]->data()->getDoubleVal(row, isNull);
 | 
								double value = parm[1]->data()->getDoubleVal(row, isNull);
 | 
				
			||||||
@@ -135,6 +137,7 @@ string Func_maketime::getStrVal(rowgroup::Row& row,
 | 
				
			|||||||
		case CalpontSystemCatalog::DOUBLE:
 | 
							case CalpontSystemCatalog::DOUBLE:
 | 
				
			||||||
		case CalpontSystemCatalog::FLOAT:
 | 
							case CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			double value = parm[2]->data()->getDoubleVal(row, isNull);
 | 
								double value = parm[2]->data()->getDoubleVal(row, isNull);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -104,6 +104,7 @@ double Func_acos::getDoubleVal(Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UBIGINT:
 | 
					        case execplan::CalpontSystemCatalog::UBIGINT:
 | 
				
			||||||
@@ -189,6 +190,7 @@ double Func_asin::getDoubleVal(Row& row,
 | 
				
			|||||||
		case execplan::CalpontSystemCatalog::FLOAT:
 | 
							case execplan::CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
@@ -275,6 +277,7 @@ double Func_atan::getDoubleVal(Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::FLOAT:
 | 
					        case execplan::CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
@@ -396,6 +399,7 @@ double Func_cos::getDoubleVal(Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::FLOAT:
 | 
					        case execplan::CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
@@ -481,6 +485,7 @@ double Func_cot::getDoubleVal(Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::FLOAT:
 | 
					        case execplan::CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
@@ -674,6 +679,7 @@ double Func_log::getDoubleVal(Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			isNull = true;
 | 
								isNull = true;
 | 
				
			||||||
			return doubleNullVal();
 | 
								return doubleNullVal();
 | 
				
			||||||
@@ -763,6 +769,7 @@ double Func_log2::getDoubleVal(Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			isNull = true;
 | 
								isNull = true;
 | 
				
			||||||
			return doubleNullVal();
 | 
								return doubleNullVal();
 | 
				
			||||||
@@ -852,6 +859,7 @@ double Func_log10::getDoubleVal(Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			isNull = true;
 | 
								isNull = true;
 | 
				
			||||||
			return doubleNullVal();
 | 
								return doubleNullVal();
 | 
				
			||||||
@@ -895,6 +903,7 @@ double Func_sin::getDoubleVal(Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UBIGINT:
 | 
					        case execplan::CalpontSystemCatalog::UBIGINT:
 | 
				
			||||||
@@ -980,6 +989,7 @@ double Func_sqrt::getDoubleVal(Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UBIGINT:
 | 
					        case execplan::CalpontSystemCatalog::UBIGINT:
 | 
				
			||||||
@@ -1065,6 +1075,7 @@ double Func_tan::getDoubleVal(Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UBIGINT:
 | 
					        case execplan::CalpontSystemCatalog::UBIGINT:
 | 
				
			||||||
@@ -1166,6 +1177,7 @@ string Func_format::getStrVal(Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			double rawValue = parm[0]->data()->getDoubleVal(row, isNull);
 | 
								double rawValue = parm[0]->data()->getDoubleVal(row, isNull);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1355,6 +1367,7 @@ double Func_radians::getDoubleVal(Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::FLOAT:
 | 
					        case execplan::CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
@@ -1440,6 +1453,7 @@ double Func_degrees::getDoubleVal(Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::FLOAT:
 | 
					        case execplan::CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					        case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -62,6 +62,7 @@ int64_t Func_microsecond::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			microSecond = (uint32_t)((val & 0xfffff));
 | 
								microSecond = (uint32_t)((val & 0xfffff));
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -78,6 +78,7 @@ int64_t Func_minute::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -159,6 +159,7 @@ double Func_mod::getDoubleVal(Row& row,
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			double value = parm[0]->data()->getDoubleVal(row, isNull);
 | 
								double value = parm[0]->data()->getDoubleVal(row, isNull);
 | 
				
			||||||
			mod = fmod(value,div);
 | 
								mod = fmod(value,div);
 | 
				
			||||||
@@ -203,6 +204,7 @@ int64_t Func_mod::getIntVal(Row& row,
 | 
				
			|||||||
		case execplan::CalpontSystemCatalog::TINYINT:
 | 
							case execplan::CalpontSystemCatalog::TINYINT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::SMALLINT:
 | 
							case execplan::CalpontSystemCatalog::SMALLINT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			int64_t value = parm[0]->data()->getIntVal(row, isNull);
 | 
								int64_t value = parm[0]->data()->getIntVal(row, isNull);
 | 
				
			||||||
@@ -290,6 +292,7 @@ uint64_t Func_mod::getUIntVal(Row& row,
 | 
				
			|||||||
		case execplan::CalpontSystemCatalog::TINYINT:
 | 
							case execplan::CalpontSystemCatalog::TINYINT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::SMALLINT:
 | 
							case execplan::CalpontSystemCatalog::SMALLINT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			int64_t value = parm[0]->data()->getIntVal(row, isNull);
 | 
								int64_t value = parm[0]->data()->getIntVal(row, isNull);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,6 +58,7 @@ int64_t Func_month::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			val = parm[0]->data()->getIntVal(row, isNull);
 | 
								val = parm[0]->data()->getIntVal(row, isNull);
 | 
				
			||||||
			return (unsigned)((val >> 44) & 0xf);
 | 
								return (unsigned)((val >> 44) & 0xf);
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,6 +85,7 @@ int64_t Func_monthname::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			val = parm[0]->data()->getIntVal(row, isNull);
 | 
								val = parm[0]->data()->getIntVal(row, isNull);
 | 
				
			||||||
			return (unsigned)((val >> 44) & 0xf);
 | 
								return (unsigned)((val >> 44) & 0xf);
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -74,6 +74,7 @@ int64_t Func_nullif::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			exp2 = parm[1]->data()->getIntVal(row, isNull);
 | 
								exp2 = parm[1]->data()->getIntVal(row, isNull);
 | 
				
			||||||
			if (isNull) {
 | 
								if (isNull) {
 | 
				
			||||||
@@ -177,6 +178,7 @@ uint64_t Func_nullif::getUintVal(rowgroup::Row& row,
 | 
				
			|||||||
        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
					        case execplan::CalpontSystemCatalog::UDECIMAL:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			int64_t iexp2 = parm[1]->data()->getIntVal(row, isNull);
 | 
								int64_t iexp2 = parm[1]->data()->getIntVal(row, isNull);
 | 
				
			||||||
			if (isNull || iexp2 < 0) {
 | 
								if (isNull || iexp2 < 0) {
 | 
				
			||||||
@@ -290,6 +292,7 @@ int32_t Func_nullif::getDateIntVal(rowgroup::Row& row,
 | 
				
			|||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			exp2 = parm[1]->data()->getIntVal(row, isNull);
 | 
								exp2 = parm[1]->data()->getIntVal(row, isNull);
 | 
				
			||||||
			if (isNull) {
 | 
								if (isNull) {
 | 
				
			||||||
@@ -352,6 +355,7 @@ int64_t Func_nullif::getDatetimeIntVal(rowgroup::Row& row,
 | 
				
			|||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			exp2 = parm[1]->data()->getIntVal(row, isNull);
 | 
								exp2 = parm[1]->data()->getIntVal(row, isNull);
 | 
				
			||||||
			if (isNull) {
 | 
								if (isNull) {
 | 
				
			||||||
@@ -415,6 +419,7 @@ double Func_nullif::getDoubleVal(rowgroup::Row& row,
 | 
				
			|||||||
		case execplan::CalpontSystemCatalog::DECIMAL:
 | 
							case execplan::CalpontSystemCatalog::DECIMAL:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			exp2 = parm[1]->data()->getDoubleVal(row, isNull);
 | 
								exp2 = parm[1]->data()->getDoubleVal(row, isNull);
 | 
				
			||||||
			if (isNull) {
 | 
								if (isNull) {
 | 
				
			||||||
@@ -491,6 +496,7 @@ execplan::IDB_Decimal Func_nullif::getDecimalVal(rowgroup::Row& row,
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			int64_t value = parm[1]->data()->getIntVal(row, isNull);
 | 
								int64_t value = parm[1]->data()->getIntVal(row, isNull);
 | 
				
			||||||
			if (isNull) {
 | 
								if (isNull) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -86,6 +86,7 @@ int64_t Func_period_diff::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			period1 = atoi(parm[0]->data()->getStrVal(row, isNull).c_str());
 | 
								period1 = atoi(parm[0]->data()->getStrVal(row, isNull).c_str());
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
@@ -129,6 +130,7 @@ int64_t Func_period_diff::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			period2 = atoi(parm[1]->data()->getStrVal(row, isNull).c_str());
 | 
								period2 = atoi(parm[1]->data()->getStrVal(row, isNull).c_str());
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,6 +61,7 @@ int64_t Func_quarter::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			month = (val >> 44) & 0xf;
 | 
								month = (val >> 44) & 0xf;
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:			
 | 
							case CalpontSystemCatalog::VARCHAR:			
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,6 +70,7 @@ namespace
 | 
				
			|||||||
			case execplan::CalpontSystemCatalog::USMALLINT:
 | 
								case execplan::CalpontSystemCatalog::USMALLINT:
 | 
				
			||||||
			case execplan::CalpontSystemCatalog::VARCHAR: // including CHAR'
 | 
								case execplan::CalpontSystemCatalog::VARCHAR: // including CHAR'
 | 
				
			||||||
			case execplan::CalpontSystemCatalog::CHAR:
 | 
								case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
								case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
			case execplan::CalpontSystemCatalog::DOUBLE:
 | 
								case execplan::CalpontSystemCatalog::DOUBLE:
 | 
				
			||||||
            case execplan::CalpontSystemCatalog::UDOUBLE:
 | 
					            case execplan::CalpontSystemCatalog::UDOUBLE:
 | 
				
			||||||
			case execplan::CalpontSystemCatalog::FLOAT:
 | 
								case execplan::CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
@@ -129,6 +130,7 @@ namespace
 | 
				
			|||||||
			case execplan::CalpontSystemCatalog::FLOAT:
 | 
								case execplan::CalpontSystemCatalog::FLOAT:
 | 
				
			||||||
            case execplan::CalpontSystemCatalog::UFLOAT:
 | 
					            case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
			case execplan::CalpontSystemCatalog::CHAR:
 | 
								case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
								case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				pattern = pm[1]->data()->getStrVal(row, isNull);
 | 
									pattern = pm[1]->data()->getStrVal(row, isNull);
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -283,6 +283,7 @@ IDB_Decimal Func_round::getDecimalVal(Row& row,
 | 
				
			|||||||
		case execplan::CalpontSystemCatalog::UFLOAT:
 | 
							case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			int64_t s = 0;
 | 
								int64_t s = 0;
 | 
				
			||||||
			double  p = 1;
 | 
								double  p = 1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -138,6 +138,7 @@ string Func_sec_to_time::getStrVal(rowgroup::Row& row,
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			val = parm[0]->data()->getIntVal(row, isNull);
 | 
								val = parm[0]->data()->getIntVal(row, isNull);
 | 
				
			||||||
	        
 | 
						        
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -78,6 +78,7 @@ int64_t Func_second::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -86,6 +86,7 @@ dataconvert::DateTime getDateTime (rowgroup::Row& row,
 | 
				
			|||||||
			break;
 | 
								break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const string& valref = parm[0]->data()->getStrVal(row, isNull);
 | 
								const string& valref = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,6 +85,7 @@ string Func_time::getStrVal(rowgroup::Row& row,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,6 +72,7 @@ string Func_time_format::getStrVal(rowgroup::Row& row,
 | 
				
			|||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,6 +68,7 @@ int64_t Func_time_to_sec::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			sec = (uint32_t)((val >> 20) & 0x3f);
 | 
								sec = (uint32_t)((val >> 20) & 0x3f);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
        case CalpontSystemCatalog::VARCHAR:
 | 
					        case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                std::string strVal = parm[0]->data()->getStrVal(row, isNull);
 | 
					                std::string strVal = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -116,6 +116,7 @@ string Func_timediff::getStrVal(rowgroup::Row& row,
 | 
				
			|||||||
			break;
 | 
								break;
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
			val1 = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull), &isDate1);
 | 
								val1 = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull), &isDate1);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::BIGINT:
 | 
							case execplan::CalpontSystemCatalog::BIGINT:
 | 
				
			||||||
@@ -151,6 +152,7 @@ string Func_timediff::getStrVal(rowgroup::Row& row,
 | 
				
			|||||||
			break;
 | 
								break;
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
			val2 = dataconvert::DataConvert::stringToDatetime(parm[1]->data()->getStrVal(row, isNull), &isDate2);
 | 
								val2 = dataconvert::DataConvert::stringToDatetime(parm[1]->data()->getStrVal(row, isNull), &isDate2);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::BIGINT:
 | 
							case execplan::CalpontSystemCatalog::BIGINT:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,6 +84,7 @@ int64_t Func_to_days::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR: // including CHAR'
 | 
							case execplan::CalpontSystemCatalog::VARCHAR: // including CHAR'
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const string& value = parm[0]->data()->getStrVal(row, isNull);
 | 
								const string& value = parm[0]->data()->getStrVal(row, isNull);
 | 
				
			||||||
			int64_t val = 0;
 | 
								int64_t val = 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -264,6 +264,7 @@ IDB_Decimal Func_truncate::getDecimalVal(Row& row,
 | 
				
			|||||||
		case execplan::CalpontSystemCatalog::UFLOAT:
 | 
							case execplan::CalpontSystemCatalog::UFLOAT:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::VARCHAR:
 | 
							case execplan::CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
		case execplan::CalpontSystemCatalog::CHAR:
 | 
							case execplan::CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case execplan::CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			int64_t s = 0;
 | 
								int64_t s = 0;
 | 
				
			||||||
			double  p = 1;
 | 
								double  p = 1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,6 +82,7 @@ int64_t Func_unix_timestamp::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,6 +72,7 @@ int64_t Func_week::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			day = (uint32_t)((val >> 38) & 0x3f);
 | 
								day = (uint32_t)((val >> 38) & 0x3f);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,6 +67,7 @@ int64_t Func_weekday::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			day = (uint32_t)((val >> 38) & 0x3f);
 | 
								day = (uint32_t)((val >> 38) & 0x3f);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,6 +58,7 @@ int64_t Func_year::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			val = parm[0]->data()->getIntVal(row, isNull);
 | 
								val = parm[0]->data()->getIntVal(row, isNull);
 | 
				
			||||||
			return (unsigned)((val >> 48) & 0xffff);
 | 
								return (unsigned)((val >> 48) & 0xffff);
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,6 +75,7 @@ int64_t Func_yearweek::getIntVal(rowgroup::Row& row,
 | 
				
			|||||||
			day = (uint32_t)((val >> 38) & 0x3f);
 | 
								day = (uint32_t)((val >> 38) & 0x3f);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case CalpontSystemCatalog::CHAR:
 | 
							case CalpontSystemCatalog::CHAR:
 | 
				
			||||||
 | 
							case CalpontSystemCatalog::TEXT:
 | 
				
			||||||
		case CalpontSystemCatalog::VARCHAR:
 | 
							case CalpontSystemCatalog::VARCHAR:
 | 
				
			||||||
			val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
								val = dataconvert::DataConvert::stringToDatetime(parm[0]->data()->getStrVal(row, isNull));
 | 
				
			||||||
			if (val == -1)
 | 
								if (val == -1)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user