Updates for SQL filter changes

This commit is contained in:
Michal Kuratczyk 2025-07-18 09:46:00 +02:00
parent f6e718c599
commit 3ee82dab54
No known key found for this signature in database
1 changed files with 21 additions and 23 deletions

View File

@ -294,33 +294,36 @@ sql_to_list(SQL) ->
String when is_list(String) -> String when is_list(String) ->
{ok, String}; {ok, String};
Error -> Error ->
?LOG_WARNING("JMS message selector ~p is not UTF-8 encoded: ~p", ?LOG_WARNING("SQL expression ~p is not UTF-8 encoded: ~p",
[JmsSelector, Error]), [SQL, Error]),
error error
end. end.
check_length(String) check_length(String) ->
when length(String) > ?MAX_EXPRESSION_LENGTH -> Len = length(String),
?LOG_WARNING("JMS message selector length ~b exceeds maximum length ~b", case Len =< ?MAX_EXPRESSION_LENGTH of
[length(String), ?MAX_EXPRESSION_LENGTH]), true ->
error; ok;
check_length(_) -> false ->
ok. ?LOG_WARNING("SQL expression length ~b exceeds maximum length ~b",
[Len, ?MAX_EXPRESSION_LENGTH]),
error
end.
tokenize(String, SQL) -> tokenize(String, SQL) ->
case rabbit_amqp_sql_lexer:string(String) of case rabbit_amqp_sql_lexer:string(String) of
{ok, Tokens, _EndLocation} -> {ok, Tokens, _EndLocation} ->
{ok, Tokens}; {ok, Tokens};
{error, {_Line, _Mod, ErrDescriptor}, _Location} -> {error, {_Line, _Mod, ErrDescriptor}, _Location} ->
?LOG_WARNING("failed to scan JMS message selector '~ts': ~tp", ?LOG_WARNING("failed to scan SQL expression '~ts': ~tp",
[JmsSelector, ErrDescriptor]), [SQL, ErrDescriptor]),
error error
end. end.
check_token_count(Tokens, SQL) check_token_count(Tokens, SQL)
when length(Tokens) > ?MAX_TOKENS -> when length(Tokens) > ?MAX_TOKENS ->
?LOG_WARNING("JMS message selector '~ts' with ~b tokens exceeds token limit ~b", ?LOG_WARNING("SQL expression '~ts' with ~b tokens exceeds token limit ~b",
[JmsSelector, length(Tokens), ?MAX_TOKENS]), [SQL, length(Tokens), ?MAX_TOKENS]),
error; error;
check_token_count(_, _) -> check_token_count(_, _) ->
ok. ok.
@ -328,8 +331,8 @@ check_token_count(_, _) ->
parse(Tokens, SQL) -> parse(Tokens, SQL) ->
case rabbit_amqp_sql_parser:parse(Tokens) of case rabbit_amqp_sql_parser:parse(Tokens) of
{error, Reason} -> {error, Reason} ->
?LOG_WARNING("failed to parse JMS message selector '~ts': ~p", ?LOG_WARNING("failed to parse SQL expression '~ts': ~p",
[JmsSelector, Reason]), [SQL, Reason]),
error; error;
Ok -> Ok ->
Ok Ok
@ -343,15 +346,10 @@ transform_ast(Ast0, SQL) ->
end, Ast0) of end, Ast0) of
Ast -> Ast ->
{ok, Ast} {ok, Ast}
catch {unsupported_field, Name} -> catch {invalid_pattern, Reason} ->
?LOG_WARNING( ?LOG_WARNING(
"identifier ~ts in JMS message selector ~tp is unsupported", "failed to parse LIKE pattern for SQL expression ~tp: ~tp",
[Name, JmsSelector]), [SQL, Reason]),
error;
{invalid_pattern, Reason} ->
?LOG_WARNING(
"failed to parse LIKE pattern for JMS message selector ~tp: ~tp",
[JmsSelector, Reason]),
error error
end. end.