code: func tryToConvertConstantInt(ctx sessionctx.Context, isUnsigned bool, con *Constant) (_ *Constant, isAlwaysFalse bool) {
  	if con.GetType().EvalType() == types.ETInt {
  		return con, false
  	}
  	dt, err := con.Eval(chunk.Row{})
  	if err != nil {
  		return con, false
  	}
  	sc := ctx.GetSessionVars().StmtCtx
  	fieldType := types.NewFieldType(mysql.TypeLonglong)
  	if isUnsigned {
  		fieldType.Flag |= mysql.UnsignedFlag
  	}
  	dt, err = dt.ConvertTo(sc, fieldType)
  	if err != nil {
  		return con, terror.ErrorEqual(err, types.ErrOverflow)
  	}
  	return &Constant{
  		Value:        dt,
  		RetType:      fieldType,
  		DeferredExpr: con.DeferredExpr,
  	}, false
  }
docs: // tryToConvertConstantInt tries to convert a constant with other type to a int constant.