code: func (b *builtinLog2ArgsSig) evalReal(row chunk.Row) (float64, bool, error) {
  	val1, isNull, err := b.args[0].EvalReal(b.ctx, row)
  	if isNull || err != nil {
  		return 0, isNull, err
  	}
  
  	val2, isNull, err := b.args[1].EvalReal(b.ctx, row)
  	if isNull || err != nil {
  		return 0, isNull, err
  	}
  
  	if val1 <= 0 || val1 == 1 || val2 <= 0 {
  		return 0, true, nil
  	}
  
  	return math.Log(val2) / math.Log(val1), false, nil
  }
docs: // evalReal evals a builtinLog2ArgsSig, corresponding to log(b, x).
  // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_log