code: func PosFromPositionExpr(ctx sessionctx.Context, v *ast.PositionExpr) (int, bool, error) {
  	if v.P == nil {
  		return v.N, false, nil
  	}
  	value, err := GetParamExpression(ctx, v.P.(*driver.ParamMarkerExpr))
  	if err != nil {
  		return 0, true, err
  	}
  	pos, isNull, err := GetIntFromConstant(ctx, value)
  	if err != nil || isNull {
  		return 0, true, err
  	}
  	return pos, false, nil
  }
docs: // PosFromPositionExpr generates a position value from PositionExpr.