internal void SetCharsLength(long length)
{
Debug.Assert(
SmiXetterAccessMap.IsSetterAccessValid(_metaData, SmiXetterTypeCode.XetChars));
CheckSettingOffset(length);
if (0 == length)
{
if (_isPlp)
{
Debug.Assert(!_plpUnknownSent, "A plpUnknown has already been sent before setting length to zero.");
_stateObj.Parser.WriteLong(0, _stateObj);
_plpUnknownSent = true;
}
else
{
Debug.Assert(!MetaType.GetMetaTypeFromSqlDbType(_metaData.SqlDbType, _metaData.IsMultiValued).IsLong,
"We're assuming long length types are sent as PLP. SqlDbType = " + _metaData.SqlDbType);
_stateObj.Parser.WriteShort(0, _stateObj);
}
}
if (_plpUnknownSent)
{
_stateObj.Parser.WriteInt(TdsEnums.SQL_PLP_CHUNK_TERMINATOR, _stateObj);
_plpUnknownSent = false;
}
_encoder = null;
#if DEBUG
_currentOffset = 0;
#endif
}