public Expression VisitMySqlMatch(MySqlMatchExpression mySqlMatchExpression) { Check.NotNull(mySqlMatchExpression, nameof(mySqlMatchExpression)); Sql.Append("MATCH "); Sql.Append("("); Visit(mySqlMatchExpression.Match); Sql.Append(")"); Sql.Append(" AGAINST "); Sql.Append($"("); Visit(mySqlMatchExpression.Against); switch (mySqlMatchExpression.SearchMode) { case MySqlMatchSearchMode.NaturalLanguage: break; case MySqlMatchSearchMode.NaturalLanguageWithQueryExpansion: Sql.Append(" WITH QUERY EXPANSION"); break; case MySqlMatchSearchMode.Boolean: Sql.Append(" IN BOOLEAN MODE"); break; } Sql.Append(")"); return(mySqlMatchExpression); }
private SqlExpression ApplyTypeMappingOnMatch(MySqlMatchExpression matchExpression) { var inferredTypeMapping = ExpressionExtensions.InferTypeMapping(matchExpression.Match) ?? _typeMappingSource.FindMapping(matchExpression.Match.Type); return(new MySqlMatchExpression( ApplyTypeMapping(matchExpression.Match, inferredTypeMapping), ApplyTypeMapping(matchExpression.Against, inferredTypeMapping), matchExpression.SearchMode, _boolTypeMapping)); }
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) });