public override SqlType GetAggregateType(SqlType other) { int num2; if (base.TypeCode == other.TypeCode) { if (base.Precision < other.Precision) { return(other); } return(this); } int typeCode = other.TypeCode; if (typeCode <= 30) { switch (typeCode) { case 0: return(this); case 1: if (base.Precision < other.Precision) { return(GetCharacterType(base.TypeCode, other.Precision)); } return(this); case 12: if ((base.TypeCode == 40) || (base.TypeCode == 100)) { if (base.Precision < other.Precision) { return(GetCharacterType(base.TypeCode, other.Precision)); } return(this); } if (other.Precision < base.Precision) { return(this); } return(GetCharacterType(base.TypeCode, other.Precision)); } if (typeCode != 30) { goto Label_0174; } } else { if (typeCode <= 0x3d) { if (typeCode == 40) { if (other.Precision < base.Precision) { return(GetCharacterType(other.TypeCode, base.Precision)); } return(other); } if ((typeCode - 60) <= 1) { goto Label_0169; } } else { switch (typeCode) { case 100: if (base.TypeCode == 40) { if (base.Precision < other.Precision) { return(GetCharacterType(base.TypeCode, other.Precision)); } return(this); } if (other.Precision < base.Precision) { return(GetCharacterType(other.TypeCode, base.Precision)); } return(other); case 0x457: goto Label_0169; } } goto Label_0174; } Label_0169: throw Error.GetError(0x15ba); Label_0174: num2 = other.DisplaySize(); return(GetCharacterType(12, (long)num2).GetAggregateType(this)); }