private SqlExpression ApplyTypeMappingOnRegexp(MySqlRegexpExpression regexpExpression) { var inferredTypeMapping = ExpressionExtensions.InferTypeMapping(regexpExpression.Match) ?? _typeMappingSource.FindMapping(regexpExpression.Match.Type); return(new MySqlRegexpExpression( ApplyTypeMapping(regexpExpression.Match, inferredTypeMapping), ApplyTypeMapping(regexpExpression.Pattern, inferredTypeMapping), _boolTypeMapping)); }
public virtual Expression VisitMySqlRegexp(MySqlRegexpExpression mySqlRegexpExpression) { Check.NotNull(mySqlRegexpExpression, nameof(mySqlRegexpExpression)); Visit(mySqlRegexpExpression.Match); Sql.Append(" REGEXP "); Visit(mySqlRegexpExpression.Pattern); return(mySqlRegexpExpression); }
private SqlExpression ApplyNewTypeMapping(SqlExpression sqlExpression, RelationalTypeMapping typeMapping) { return(sqlExpression switch { MySqlComplexFunctionArgumentExpression e => ApplyTypeMappingOnComplexFunctionArgument(e), MySqlCollateExpression e => ApplyTypeMappingOnCollate(e), MySqlRegexpExpression e => ApplyTypeMappingOnRegexp(e), MySqlBinaryExpression e => ApplyTypeMappingOnMySqlBinary(e, typeMapping), MySqlMatchExpression e => ApplyTypeMappingOnMatch(e), MySqlJsonArrayIndexExpression e => e.ApplyTypeMapping(typeMapping), _ => base.ApplyTypeMapping(sqlExpression, typeMapping) });