// Equal implements Expression interface.
517848
func (c *Constant) Equal(ctx sessionctx.Context, b Expression) bool {
	y, ok := b.(*Constant)
	if !ok {
		return false
	}
	_, err1 := y.Eval(chunk.Row{})
	_, err2 := c.Eval(chunk.Row{})
	if err1 != nil || err2 != nil {
		return false
	}
	con, err := c.Value.CompareDatum(ctx.GetSessionVars().StmtCtx, &y.Value)
	if err != nil || con != 0 {
		return false
	}
	return true
}
767655
func Equal(t testing.TB, v1, v2 interface{}, args ...interface{}) {
	assert(t, IsEqual(v1, v2), args, []interface{}{"Equal 失败，实际值为v1=[%T:%[1]v];v2=[%T:%[2]v]", v1, v2})
}
1101652
func (o *AdvancedOption) Equal(o2 *AdvancedOption) bool {
	if o2 == nil {
		return o.value == 0
	}
	return o.value == o2.value
}
489394
func (o *PrimaryOption) Equal(o2 *PrimaryOption) bool {
	if o2 == nil {
		return o.value == ""
	}
	return o.value == o2.value
}
773850
func (o *AdvancedSyntaxOption) Equal(o2 *AdvancedSyntaxOption) bool {
	if o2 == nil {
		return o.value == false
	}
	return o.value == o2.value
}
604508
func (o *UserTokenOption) Equal(o2 *UserTokenOption) bool {
	if o2 == nil {
		return o.value == ""
	}
	return o.value == o2.value
}
316218
func (o *MinWordSizefor1TypoOption) Equal(o2 *MinWordSizefor1TypoOption) bool {
	if o2 == nil {
		return o.value == 4
	}
	return o.value == o2.value
}
1160840
func (o *AllowCompressionOfIntegerArrayOption) Equal(o2 *AllowCompressionOfIntegerArrayOption) bool {
	if o2 == nil {
		return o.value == false
	}
	return o.value == o2.value
}
1255767
func (t SimpleType) Equal(u convert.Equaler) bool {
	other, ok := u.(SimpleType)
	if !ok {
		return false
	}
	if t.DefaultValue != other.DefaultValue {
		return false
	}
	return t.Kind == other.Kind
}
260593
func (s1 String) Equal(s2 String) bool {
	return len(s1) == len(s2) && s1.IsSuperset(s2)
}
961502
func (o *ReplaceSynonymsInHighlightOption) Equal(o2 *ReplaceSynonymsInHighlightOption) bool {
	if o2 == nil {
		return o.value == true
	}
	return o.value == o2.value
}
177525
func (f ContextInformation) Equal(u convert.Equaler) bool {
	other, ok := u.(ContextInformation)
	if !ok {
		return false
	}
	return reflect.DeepEqual(f, other)
}
52690
func (o *QueryOption) Equal(o2 *QueryOption) bool {
	if o2 == nil {
		return o.value == ""
	}
	return o.value == o2.value
}
365677
func (self *todo) Equal(e s5.Equaler) bool {
	if e == nil {
		return false
	}
	other := e.(*todo)
	return self.Id() == other.Id()
}
96756
func (a *AttributeTypeAndValue) Equal(other *AttributeTypeAndValue) bool {
	return strings.EqualFold(a.Type, other.Type) && a.Value == other.Value
}
1291636
func (o *SynonymsOption) Equal(o2 *SynonymsOption) bool {
	if o2 == nil {
		return o.value == true
	}
	return o.value == o2.value
}
541482
func (d DummyEqualer) Equal(u Equaler) bool {
	_, ok := u.(DummyEqualer)
	return ok
}