Rename JMS to (AMQP) SQL
This commit is contained in:
parent
c34d6206f1
commit
dbc6321808
|
|
@ -258,7 +258,7 @@ define ct_master.erl
|
|||
endef
|
||||
|
||||
PARALLEL_CT_SET_1_A = unit_rabbit_ssl unit_cluster_formation_locking_mocks unit_cluster_formation_sort_nodes unit_collections unit_config_value_encryption unit_connection_tracking
|
||||
PARALLEL_CT_SET_1_B = amqp_address amqp_auth amqp_credit_api_v2 amqp_filter_prop amqp_filter_sql amqp_jms_unit amqp_dotnet amqp_jms signal_handling single_active_consumer unit_access_control_authn_authz_context_propagation unit_access_control_credential_validation unit_amqp091_content_framing unit_amqp091_server_properties unit_app_management
|
||||
PARALLEL_CT_SET_1_B = amqp_address amqp_auth amqp_credit_api_v2 amqp_filter_prop amqp_filter_sql amqp_filter_sql_unit amqp_dotnet amqp_jms signal_handling single_active_consumer unit_access_control_authn_authz_context_propagation unit_access_control_credential_validation unit_amqp091_content_framing unit_amqp091_server_properties unit_app_management
|
||||
PARALLEL_CT_SET_1_C = amqp_proxy_protocol amqpl_consumer_ack amqpl_direct_reply_to backing_queue bindings rabbit_db_maintenance rabbit_db_msup rabbit_db_policy rabbit_db_queue rabbit_db_topic_exchange rabbit_direct_reply_to_prop cluster_limit cluster_minority term_to_binary_compat_prop topic_permission transactions unicode unit_access_control
|
||||
PARALLEL_CT_SET_1_D = amqqueue_backward_compatibility channel_interceptor channel_operation_timeout classic_queue classic_queue_prop config_schema peer_discovery_dns peer_discovery_tmp_hidden_node per_node_limit per_user_connection_channel_limit
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
-type expression() :: undefined |
|
||||
{property, rabbit_amqp_filter_prop:parsed_expressions()} |
|
||||
{jms, rabbit_amqp_filter_jms:parsed_expression()}.
|
||||
{sql, rabbit_amqp_filter_sql:parsed_expression()}.
|
||||
|
||||
-export_type([expression/0]).
|
||||
|
||||
|
|
@ -20,5 +20,5 @@ eval(undefined, _Mc) ->
|
|||
true;
|
||||
eval({property, Expr}, Mc) ->
|
||||
rabbit_amqp_filter_prop:eval(Expr, Mc);
|
||||
eval({jms, Expr}, Mc) ->
|
||||
rabbit_amqp_filter_jms:eval(Expr, Mc).
|
||||
eval({sql, Expr}, Mc) ->
|
||||
rabbit_amqp_filter_sql:eval(Expr, Mc).
|
||||
|
|
|
|||
|
|
@ -4,13 +4,13 @@
|
|||
%%
|
||||
%% Copyright (c) 2007-2025 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. All rights reserved.
|
||||
|
||||
-module(rabbit_amqp_filter_jms).
|
||||
-module(rabbit_amqp_filter_sql).
|
||||
-feature(maybe_expr, enable).
|
||||
|
||||
-include_lib("amqp10_common/include/amqp10_filter.hrl").
|
||||
|
||||
-type parsed_expression() :: {ApplicationProperties :: boolean(),
|
||||
rabbit_jms_ast:ast()}.
|
||||
rabbit_amqp_sql_ast:ast()}.
|
||||
|
||||
-export_type([parsed_expression/0]).
|
||||
|
||||
|
|
@ -21,27 +21,26 @@
|
|||
-define(MAX_EXPRESSION_LENGTH, 4096).
|
||||
-define(MAX_TOKENS, 200).
|
||||
|
||||
%% defined in both AMQP and JMS
|
||||
-define(DEFAULT_MSG_PRIORITY, 4).
|
||||
|
||||
-define(IS_CONTROL_CHAR(C), C < 32 orelse C =:= 127).
|
||||
|
||||
-spec parse(tuple()) ->
|
||||
{ok, parsed_expression()} | error.
|
||||
parse({described, Descriptor, {utf8, JmsSelector}}) ->
|
||||
parse({described, Descriptor, {utf8, SQL}}) ->
|
||||
maybe
|
||||
ok ?= check_descriptor(Descriptor),
|
||||
{ok, String} ?= jms_selector_to_list(JmsSelector),
|
||||
{ok, String} ?= sql_to_list(SQL),
|
||||
ok ?= check_length(String),
|
||||
{ok, Tokens} ?= tokenize(String, JmsSelector),
|
||||
ok ?= check_token_count(Tokens, JmsSelector),
|
||||
{ok, Ast0} ?= parse(Tokens, JmsSelector),
|
||||
{ok, Ast} ?= transform_ast(Ast0, JmsSelector),
|
||||
{ok, Tokens} ?= tokenize(String, SQL),
|
||||
ok ?= check_token_count(Tokens, SQL),
|
||||
{ok, Ast0} ?= parse(Tokens, SQL),
|
||||
{ok, Ast} ?= transform_ast(Ast0, SQL),
|
||||
AppProps = has_binary_identifier(Ast),
|
||||
{ok, {AppProps, Ast}}
|
||||
end.
|
||||
|
||||
%% Evaluates a parsed JMS message selector expression.
|
||||
%% Evaluates a parsed SQL expression.
|
||||
-spec eval(parsed_expression(), mc:state()) -> boolean().
|
||||
eval({ApplicationProperties, Ast}, Msg) ->
|
||||
State = case ApplicationProperties of
|
||||
|
|
@ -298,54 +297,54 @@ check_descriptor({ulong, ?DESCRIPTOR_CODE_SQL_FILTER}) ->
|
|||
check_descriptor(_) ->
|
||||
error.
|
||||
|
||||
jms_selector_to_list(JmsSelector) ->
|
||||
case unicode:characters_to_list(JmsSelector) of
|
||||
sql_to_list(SQL) ->
|
||||
case unicode:characters_to_list(SQL) of
|
||||
String when is_list(String) ->
|
||||
{ok, String};
|
||||
Error ->
|
||||
rabbit_log:warning("JMS message selector ~p is not UTF-8 encoded: ~p",
|
||||
[JmsSelector, Error]),
|
||||
rabbit_log:warning("SQL expression ~p is not UTF-8 encoded: ~p",
|
||||
[SQL, Error]),
|
||||
error
|
||||
end.
|
||||
|
||||
check_length(String)
|
||||
when length(String) > ?MAX_EXPRESSION_LENGTH ->
|
||||
rabbit_log:warning("JMS message selector length ~b exceeds maximum length ~b",
|
||||
rabbit_log:warning("SQL expression length ~b exceeds maximum length ~b",
|
||||
[length(String), ?MAX_EXPRESSION_LENGTH]),
|
||||
error;
|
||||
check_length(_) ->
|
||||
ok.
|
||||
|
||||
tokenize(String, JmsSelector) ->
|
||||
case rabbit_jms_selector_lexer:string(String) of
|
||||
tokenize(String, SQL) ->
|
||||
case rabbit_amqp_sql_lexer:string(String) of
|
||||
{ok, Tokens, _EndLocation} ->
|
||||
{ok, Tokens};
|
||||
{error, {_Line, _Mod, ErrDescriptor}, _Location} ->
|
||||
rabbit_log:warning("failed to scan JMS message selector '~ts': ~tp",
|
||||
[JmsSelector, ErrDescriptor]),
|
||||
rabbit_log:warning("failed to scan SQL expression '~ts': ~tp",
|
||||
[SQL, ErrDescriptor]),
|
||||
error
|
||||
end.
|
||||
|
||||
check_token_count(Tokens, JmsSelector)
|
||||
check_token_count(Tokens, SQL)
|
||||
when length(Tokens) > ?MAX_TOKENS ->
|
||||
rabbit_log:warning("JMS message selector '~ts' with ~b tokens exceeds token limit ~b",
|
||||
[JmsSelector, length(Tokens), ?MAX_TOKENS]),
|
||||
rabbit_log:warning("SQL expression '~ts' with ~b tokens exceeds token limit ~b",
|
||||
[SQL, length(Tokens), ?MAX_TOKENS]),
|
||||
error;
|
||||
check_token_count(_, _) ->
|
||||
ok.
|
||||
|
||||
parse(Tokens, JmsSelector) ->
|
||||
case rabbit_jms_selector_parser:parse(Tokens) of
|
||||
parse(Tokens, SQL) ->
|
||||
case rabbit_amqp_sql_parser:parse(Tokens) of
|
||||
{error, Reason} ->
|
||||
rabbit_log:warning("failed to parse JMS message selector '~ts': ~p",
|
||||
[JmsSelector, Reason]),
|
||||
rabbit_log:warning("failed to parse SQL expression '~ts': ~p",
|
||||
[SQL, Reason]),
|
||||
error;
|
||||
Ok ->
|
||||
Ok
|
||||
end.
|
||||
|
||||
transform_ast(Ast0, JmsSelector) ->
|
||||
try rabbit_jms_ast:map(
|
||||
transform_ast(Ast0, SQL) ->
|
||||
try rabbit_amqp_sql_ast:map(
|
||||
fun({identifier, Ident})
|
||||
when is_binary(Ident) ->
|
||||
{identifier, rabbit_amqp_util:section_field_name_to_atom(Ident)};
|
||||
|
|
@ -358,18 +357,18 @@ transform_ast(Ast0, JmsSelector) ->
|
|||
{ok, Ast}
|
||||
catch {unsupported_field, Name} ->
|
||||
rabbit_log:warning(
|
||||
"identifier ~ts in JMS message selector ~tp is unsupported",
|
||||
[Name, JmsSelector]),
|
||||
"identifier ~ts in SQL expression ~tp is unsupported",
|
||||
[Name, SQL]),
|
||||
error;
|
||||
{invalid_pattern, Reason} ->
|
||||
rabbit_log:warning(
|
||||
"failed to parse LIKE pattern for JMS message selector ~tp: ~tp",
|
||||
[JmsSelector, Reason]),
|
||||
"failed to parse LIKE pattern for SQL expression ~tp: ~tp",
|
||||
[SQL, Reason]),
|
||||
error
|
||||
end.
|
||||
|
||||
has_binary_identifier(Ast) ->
|
||||
rabbit_jms_ast:search(fun({identifier, Val}) ->
|
||||
rabbit_amqp_sql_ast:search(fun({identifier, Val}) ->
|
||||
is_binary(Val);
|
||||
(_Node) ->
|
||||
false
|
||||
|
|
@ -390,7 +389,7 @@ transform_pattern(Pattern, Escape) ->
|
|||
{single_percent, Chars, PercentPos} ->
|
||||
single_percent(Chars, PercentPos);
|
||||
regex ->
|
||||
Re = jms_pattern_to_regex(Pattern, Escape, []),
|
||||
Re = pattern_to_regex(Pattern, Escape, []),
|
||||
case re:compile("^" ++ Re ++ "$", [unicode]) of
|
||||
{ok, CompiledRe} ->
|
||||
CompiledRe;
|
||||
|
|
@ -441,23 +440,23 @@ single_percent(Chars, Pos) ->
|
|||
{{prefix, byte_size(PrefixBin), PrefixBin},
|
||||
{suffix, byte_size(SuffixBin), SuffixBin}}.
|
||||
|
||||
jms_pattern_to_regex([], _Escape, Acc) ->
|
||||
pattern_to_regex([], _Escape, Acc) ->
|
||||
lists:reverse(Acc);
|
||||
jms_pattern_to_regex([EscapeChar | Rest], EscapeChar, Acc) ->
|
||||
pattern_to_regex([EscapeChar | Rest], EscapeChar, Acc) ->
|
||||
case Rest of
|
||||
[] ->
|
||||
throw({invalid_pattern, invalid_escape_at_end});
|
||||
[NextChar | Rest1] ->
|
||||
jms_pattern_to_regex(Rest1, EscapeChar, escape_regex_char(NextChar) ++ Acc)
|
||||
pattern_to_regex(Rest1, EscapeChar, escape_regex_char(NextChar) ++ Acc)
|
||||
end;
|
||||
jms_pattern_to_regex([$% | Rest], Escape, Acc) ->
|
||||
pattern_to_regex([$% | Rest], Escape, Acc) ->
|
||||
%% % matches any sequence of characters (0 or more)
|
||||
jms_pattern_to_regex(Rest, Escape, [$*, $. | Acc]);
|
||||
jms_pattern_to_regex([$_ | Rest], Escape, Acc) ->
|
||||
pattern_to_regex(Rest, Escape, [$*, $. | Acc]);
|
||||
pattern_to_regex([$_ | Rest], Escape, Acc) ->
|
||||
%% _ matches exactly one character
|
||||
jms_pattern_to_regex(Rest, Escape, [$. | Acc]);
|
||||
jms_pattern_to_regex([Char | Rest], Escape, Acc) ->
|
||||
jms_pattern_to_regex(Rest, Escape, escape_regex_char(Char) ++ Acc).
|
||||
pattern_to_regex(Rest, Escape, [$. | Acc]);
|
||||
pattern_to_regex([Char | Rest], Escape, Acc) ->
|
||||
pattern_to_regex(Rest, Escape, escape_regex_char(Char) ++ Acc).
|
||||
|
||||
%% Escape user provided characters that have special meaning in Erlang regex.
|
||||
escape_regex_char(Char0) ->
|
||||
|
|
@ -3254,14 +3254,14 @@ parse_filters(Filter = {{symbol, ?FILTER_NAME_SQL}, Value},
|
|||
Acc = {EffectiveFilters, ConsumerFilter, ConsumerArgs}) ->
|
||||
case ConsumerFilter of
|
||||
undefined ->
|
||||
case rabbit_amqp_filter_jms:parse(Value) of
|
||||
case rabbit_amqp_filter_sql:parse(Value) of
|
||||
{ok, ParsedSql} ->
|
||||
{[Filter | EffectiveFilters], {jms, ParsedSql}, ConsumerArgs};
|
||||
{[Filter | EffectiveFilters], {sql, ParsedSql}, ConsumerArgs};
|
||||
error ->
|
||||
Acc
|
||||
end;
|
||||
_ ->
|
||||
%% SQL filter expression is mutually exclusive with AMQP property filter expression.
|
||||
%% SQL and property filter expressions are mutually exclusive.
|
||||
Acc
|
||||
end;
|
||||
parse_filters(Filter = {{symbol, _Key}, Value},
|
||||
|
|
@ -3284,9 +3284,8 @@ parse_filters(Filter = {{symbol, _Key}, Value},
|
|||
{property, [ParsedExpression | ParsedExpressions]},
|
||||
ConsumerArgs}
|
||||
end;
|
||||
{jms, _} ->
|
||||
%% SQL filter expression is mutually exclusive with
|
||||
%% AMQP property filter expressions.
|
||||
{sql, _} ->
|
||||
%% SQL and property filter expressions are mutually exclusive.
|
||||
Acc
|
||||
end;
|
||||
error ->
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
%% Copyright (c) 2007-2025 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. All rights reserved.
|
||||
|
||||
%% Helper functions operating on the Abstract Syntax Tree (AST)
|
||||
%% as returned by rabbit_jms_selector_parser:parse/1
|
||||
-module(rabbit_jms_ast).
|
||||
%% as returned by rabbit_amqp_sql_parser:parse/1
|
||||
-module(rabbit_amqp_sql_ast).
|
||||
|
||||
-export([search/2,
|
||||
map/2]).
|
||||
|
|
@ -94,8 +94,8 @@ has_binary_identifier_test() ->
|
|||
ok.
|
||||
|
||||
has_binary_identifier(Selector) ->
|
||||
{ok, Tokens, _EndLocation} = rabbit_jms_selector_lexer:string(Selector),
|
||||
{ok, Ast0} = rabbit_jms_selector_parser:parse(Tokens),
|
||||
{ok, Tokens, _EndLocation} = rabbit_amqp_sql_lexer:string(Selector),
|
||||
{ok, Ast0} = rabbit_amqp_sql_parser:parse(Tokens),
|
||||
Ast = map(fun({identifier, Ident}) when is_binary(Ident) ->
|
||||
{identifier, rabbit_amqp_util:section_field_name_to_atom(Ident)};
|
||||
(Node) ->
|
||||
|
|
@ -39,13 +39,13 @@
|
|||
%% property of the creator of the scanner and is not covered by that
|
||||
%% Copyright.
|
||||
|
||||
-module(rabbit_jms_selector_lexer).
|
||||
-module(rabbit_amqp_sql_lexer).
|
||||
|
||||
-export([string/1,string/2,token/2,token/3,tokens/2,tokens/3]).
|
||||
-export([format_error/1]).
|
||||
|
||||
%% User code. This is placed here to allow extra attributes.
|
||||
-file("rabbit_jms_selector_lexer.xrl", 70).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 70).
|
||||
|
||||
%% "Approximate literals use the Java floating-point literal syntax."
|
||||
to_float([$. | _] = Chars) ->
|
||||
|
|
@ -436,7 +436,7 @@ tab_size() -> 8.
|
|||
%% return signal either an unrecognised character or end of current
|
||||
%% input.
|
||||
|
||||
-file("rabbit_jms_selector_lexer.erl", 404).
|
||||
-file("rabbit_amqp_sql_lexer.erl", 404).
|
||||
yystate() -> 66.
|
||||
|
||||
yystate(69, [101|Ics], Line, Col, Tlen, _, _) ->
|
||||
|
|
@ -1693,157 +1693,157 @@ yyaction(30, TokenLen, YYtcs, _, _) ->
|
|||
yyaction(_, _, _, _, _) -> error.
|
||||
|
||||
-compile({inline,yyaction_0/0}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 20).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 20).
|
||||
yyaction_0() ->
|
||||
skip_token .
|
||||
|
||||
-compile({inline,yyaction_1/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 23).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 23).
|
||||
yyaction_1(TokenLine) ->
|
||||
{ token, { 'AND', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_2/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 24).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 24).
|
||||
yyaction_2(TokenLine) ->
|
||||
{ token, { 'OR', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_3/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 25).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 25).
|
||||
yyaction_3(TokenLine) ->
|
||||
{ token, { 'NOT', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_4/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 28).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 28).
|
||||
yyaction_4(TokenLine) ->
|
||||
{ token, { 'BETWEEN', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_5/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 29).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 29).
|
||||
yyaction_5(TokenLine) ->
|
||||
{ token, { 'LIKE', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_6/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 30).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 30).
|
||||
yyaction_6(TokenLine) ->
|
||||
{ token, { 'IN', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_7/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 31).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 31).
|
||||
yyaction_7(TokenLine) ->
|
||||
{ token, { 'IS', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_8/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 32).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 32).
|
||||
yyaction_8(TokenLine) ->
|
||||
{ token, { 'NULL', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_9/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 33).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 33).
|
||||
yyaction_9(TokenLine) ->
|
||||
{ token, { 'ESCAPE', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_10/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 36).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 36).
|
||||
yyaction_10(TokenLine) ->
|
||||
{ token, { boolean, TokenLine, true } } .
|
||||
|
||||
-compile({inline,yyaction_11/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 37).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 37).
|
||||
yyaction_11(TokenLine) ->
|
||||
{ token, { boolean, TokenLine, false } } .
|
||||
|
||||
-compile({inline,yyaction_12/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 40).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 40).
|
||||
yyaction_12(TokenLine) ->
|
||||
{ token, { '=', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_13/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 41).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 41).
|
||||
yyaction_13(TokenLine) ->
|
||||
{ token, { '<>', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_14/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 42).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 42).
|
||||
yyaction_14(TokenLine) ->
|
||||
{ token, { '>=', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_15/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 43).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 43).
|
||||
yyaction_15(TokenLine) ->
|
||||
{ token, { '<=', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_16/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 44).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 44).
|
||||
yyaction_16(TokenLine) ->
|
||||
{ token, { '>', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_17/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 45).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 45).
|
||||
yyaction_17(TokenLine) ->
|
||||
{ token, { '<', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_18/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 48).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 48).
|
||||
yyaction_18(TokenLine) ->
|
||||
{ token, { '+', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_19/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 49).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 49).
|
||||
yyaction_19(TokenLine) ->
|
||||
{ token, { '-', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_20/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 50).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 50).
|
||||
yyaction_20(TokenLine) ->
|
||||
{ token, { '*', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_21/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 51).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 51).
|
||||
yyaction_21(TokenLine) ->
|
||||
{ token, { '/', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_22/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 54).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 54).
|
||||
yyaction_22(TokenLine) ->
|
||||
{ token, { '(', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_23/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 55).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 55).
|
||||
yyaction_23(TokenLine) ->
|
||||
{ token, { ')', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_24/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 56).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 56).
|
||||
yyaction_24(TokenLine) ->
|
||||
{ token, { ',', TokenLine } } .
|
||||
|
||||
-compile({inline,yyaction_25/2}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 59).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 59).
|
||||
yyaction_25(TokenChars, TokenLine) ->
|
||||
{ token, { integer, TokenLine, list_to_integer (TokenChars) } } .
|
||||
|
||||
-compile({inline,yyaction_26/2}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 60).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 60).
|
||||
yyaction_26(TokenChars, TokenLine) ->
|
||||
{ token, { float, TokenLine, list_to_float (to_float (TokenChars)) } } .
|
||||
|
||||
-compile({inline,yyaction_27/2}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 61).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 61).
|
||||
yyaction_27(TokenChars, TokenLine) ->
|
||||
{ token, { float, TokenLine, parse_scientific_notation (TokenChars) } } .
|
||||
|
||||
-compile({inline,yyaction_28/2}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 62).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 62).
|
||||
yyaction_28(TokenChars, TokenLine) ->
|
||||
{ token, { string, TokenLine, process_string (TokenChars) } } .
|
||||
|
||||
-compile({inline,yyaction_29/2}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 63).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 63).
|
||||
yyaction_29(TokenChars, TokenLine) ->
|
||||
{ token, { identifier, TokenLine, unicode : characters_to_binary (TokenChars) } } .
|
||||
|
||||
-compile({inline,yyaction_30/1}).
|
||||
-file("rabbit_jms_selector_lexer.xrl", 66).
|
||||
-file("rabbit_amqp_sql_lexer.xrl", 66).
|
||||
yyaction_30(TokenChars) ->
|
||||
{ error, { illegal_character, TokenChars } } .
|
||||
-file("leexinc.hrl", 377).
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
%%% This is the definitions file for JMS message selectors:
|
||||
%%% https://jakarta.ee/specifications/messaging/3.1/jakarta-messaging-spec-3.1#message-selector
|
||||
%%% This is the definitions file for SQL Filter Expressions:
|
||||
%%% https://docs.oasis-open.org/amqp/filtex/v1.0/csd01/filtex-v1.0-csd01.html#_Toc67929276
|
||||
%%%
|
||||
%%% To manually generate the scanner file rabbit_jms_selector_lexer.erl run:
|
||||
%%% leex:file("rabbit_jms_selector_lexer.xrl", [deterministic]).
|
||||
%%% To manually generate the scanner file rabbit_amqp_sql_lexer.erl run:
|
||||
%%% leex:file("rabbit_amqp_sql_lexer.xrl", [deterministic]).
|
||||
|
||||
Definitions.
|
||||
WHITESPACE = [\s\t\f\n\r]
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
-file("rabbit_jms_selector_parser.yrl", 0).
|
||||
-module(rabbit_jms_selector_parser).
|
||||
-file("rabbit_jms_selector_parser.erl", 3).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 0).
|
||||
-module(rabbit_amqp_sql_parser).
|
||||
-file("rabbit_amqp_sql_parser.erl", 3).
|
||||
-export([parse/1, parse_and_scan/1, format_error/1]).
|
||||
-file("rabbit_jms_selector_parser.yrl", 122).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 122).
|
||||
|
||||
extract_value({_Token, _Line, Value}) -> Value.
|
||||
|
||||
|
|
@ -212,7 +212,7 @@ yecctoken2string1(Other) ->
|
|||
|
||||
|
||||
|
||||
-file("rabbit_jms_selector_parser.erl", 215).
|
||||
-file("rabbit_amqp_sql_parser.erl", 215).
|
||||
|
||||
-dialyzer({nowarn_function, yeccpars2/7}).
|
||||
-compile({nowarn_unused_function, yeccpars2/7}).
|
||||
|
|
@ -1346,7 +1346,7 @@ yeccgoto_unary_expr(79=_S, Cat, Ss, Stack, T, Ts, Tzr) ->
|
|||
-compile({inline,yeccpars2_1_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_1_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_1_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 96).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 96).
|
||||
yeccpars2_1_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1356,7 +1356,7 @@ yeccpars2_1_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_3_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_3_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_3_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 101).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 101).
|
||||
yeccpars2_3_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1366,7 +1366,7 @@ yeccpars2_3_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_4_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_4_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_4_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 92).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 92).
|
||||
yeccpars2_4_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1376,7 +1376,7 @@ yeccpars2_4_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_5_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_5_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_5_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 43).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 43).
|
||||
yeccpars2_5_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1386,7 +1386,7 @@ yeccpars2_5_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_6_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_6_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_6_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 105).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 105).
|
||||
yeccpars2_6_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1396,7 +1396,7 @@ yeccpars2_6_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_7_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_7_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_7_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 59).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 59).
|
||||
yeccpars2_7_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1406,7 +1406,7 @@ yeccpars2_7_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_8_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_8_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_8_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 61).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 61).
|
||||
yeccpars2_8_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1416,7 +1416,7 @@ yeccpars2_8_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_9_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_9_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_9_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 60).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 60).
|
||||
yeccpars2_9_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1426,7 +1426,7 @@ yeccpars2_9_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_10_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_10_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_10_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 106).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 106).
|
||||
yeccpars2_10_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1436,7 +1436,7 @@ yeccpars2_10_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_11_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_11_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_11_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 40).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 40).
|
||||
yeccpars2_11_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1446,7 +1446,7 @@ yeccpars2_11_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_12_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_12_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_12_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 49).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 49).
|
||||
yeccpars2_12_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1456,7 +1456,7 @@ yeccpars2_12_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_13_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_13_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_13_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 58).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 58).
|
||||
yeccpars2_13_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1466,7 +1466,7 @@ yeccpars2_13_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_14_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_14_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_14_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 62).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 62).
|
||||
yeccpars2_14_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1476,7 +1476,7 @@ yeccpars2_14_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_19_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_19_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_19_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 116).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 116).
|
||||
yeccpars2_19_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1486,7 +1486,7 @@ yeccpars2_19_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_20_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_20_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_20_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 114).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 114).
|
||||
yeccpars2_20_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1496,7 +1496,7 @@ yeccpars2_20_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_21_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_21_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_21_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 109).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 109).
|
||||
yeccpars2_21_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1507,7 +1507,7 @@ yeccpars2_21_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_22_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_22_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_22_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 113).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 113).
|
||||
yeccpars2_22_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1517,7 +1517,7 @@ yeccpars2_22_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_23_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_23_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_23_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 115).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 115).
|
||||
yeccpars2_23_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1527,7 +1527,7 @@ yeccpars2_23_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_24_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_24_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_24_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 48).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 48).
|
||||
yeccpars2_24_(__Stack0) ->
|
||||
[___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1537,7 +1537,7 @@ yeccpars2_24_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_27_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_27_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_27_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 47).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 47).
|
||||
yeccpars2_27_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1547,7 +1547,7 @@ yeccpars2_27_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_28_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_28_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_28_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 46).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 46).
|
||||
yeccpars2_28_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1557,7 +1557,7 @@ yeccpars2_28_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_29_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_29_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_29_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 100).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 100).
|
||||
yeccpars2_29_(__Stack0) ->
|
||||
[___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1567,7 +1567,7 @@ yeccpars2_29_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_30_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_30_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_30_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 106).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 106).
|
||||
yeccpars2_30_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1577,7 +1577,7 @@ yeccpars2_30_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_31_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_31_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_31_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 99).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 99).
|
||||
yeccpars2_31_(__Stack0) ->
|
||||
[___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1587,7 +1587,7 @@ yeccpars2_31_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_33_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_33_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_33_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 104).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 104).
|
||||
yeccpars2_33_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1597,7 +1597,7 @@ yeccpars2_33_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_49_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_49_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_49_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 73).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 73).
|
||||
yeccpars2_49_(__Stack0) ->
|
||||
[___4,___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1608,7 +1608,7 @@ yeccpars2_49_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_51_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_51_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_51_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 75).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 75).
|
||||
yeccpars2_51_(__Stack0) ->
|
||||
[___6,___5,___4,___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1619,7 +1619,7 @@ yeccpars2_51_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_54_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_54_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_54_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 81).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 81).
|
||||
yeccpars2_54_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1629,7 +1629,7 @@ yeccpars2_54_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_55_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_55_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_55_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 83).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 83).
|
||||
yeccpars2_55_(__Stack0) ->
|
||||
[___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1639,7 +1639,7 @@ yeccpars2_55_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_57_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_57_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_57_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 82).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 82).
|
||||
yeccpars2_57_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1649,7 +1649,7 @@ yeccpars2_57_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_58_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_58_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_58_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 80).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 80).
|
||||
yeccpars2_58_(__Stack0) ->
|
||||
[___6,___5,___4,___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1659,7 +1659,7 @@ yeccpars2_58_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_61_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_61_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_61_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 66).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 66).
|
||||
yeccpars2_61_(__Stack0) ->
|
||||
[___6,___5,___4,___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1669,7 +1669,7 @@ yeccpars2_61_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_62_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_62_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_62_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 69).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 69).
|
||||
yeccpars2_62_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1680,7 +1680,7 @@ yeccpars2_62_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_64_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_64_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_64_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 71).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 71).
|
||||
yeccpars2_64_(__Stack0) ->
|
||||
[___5,___4,___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1691,7 +1691,7 @@ yeccpars2_64_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_67_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_67_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_67_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 79).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 79).
|
||||
yeccpars2_67_(__Stack0) ->
|
||||
[___5,___4,___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1701,7 +1701,7 @@ yeccpars2_67_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_70_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_70_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_70_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 65).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 65).
|
||||
yeccpars2_70_(__Stack0) ->
|
||||
[___5,___4,___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1711,7 +1711,7 @@ yeccpars2_70_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_71_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_71_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_71_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 56).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 56).
|
||||
yeccpars2_71_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1721,7 +1721,7 @@ yeccpars2_71_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_72_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_72_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_72_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 54).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 54).
|
||||
yeccpars2_72_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1731,7 +1731,7 @@ yeccpars2_72_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_73_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_73_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_73_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 52).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 52).
|
||||
yeccpars2_73_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1741,7 +1741,7 @@ yeccpars2_73_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_74_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_74_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_74_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 53).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 53).
|
||||
yeccpars2_74_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1751,7 +1751,7 @@ yeccpars2_74_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_75_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_75_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_75_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 57).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 57).
|
||||
yeccpars2_75_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1761,7 +1761,7 @@ yeccpars2_75_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_76_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_76_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_76_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 55).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 55).
|
||||
yeccpars2_76_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1771,7 +1771,7 @@ yeccpars2_76_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_77_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_77_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_77_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 91).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 91).
|
||||
yeccpars2_77_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1781,7 +1781,7 @@ yeccpars2_77_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_80_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_80_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_80_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 95).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 95).
|
||||
yeccpars2_80_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1791,7 +1791,7 @@ yeccpars2_80_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_81_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_81_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_81_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 94).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 94).
|
||||
yeccpars2_81_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1801,7 +1801,7 @@ yeccpars2_81_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_82_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_82_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_82_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 90).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 90).
|
||||
yeccpars2_82_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1811,7 +1811,7 @@ yeccpars2_82_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_85_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_85_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_85_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 86).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 86).
|
||||
yeccpars2_85_(__Stack0) ->
|
||||
[___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1821,7 +1821,7 @@ yeccpars2_85_(__Stack0) ->
|
|||
-compile({inline,yeccpars2_86_/1}).
|
||||
-dialyzer({nowarn_function, yeccpars2_86_/1}).
|
||||
-compile({nowarn_unused_function, yeccpars2_86_/1}).
|
||||
-file("rabbit_jms_selector_parser.yrl", 87).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 87).
|
||||
yeccpars2_86_(__Stack0) ->
|
||||
[___4,___3,___2,___1 | __Stack] = __Stack0,
|
||||
[begin
|
||||
|
|
@ -1829,4 +1829,4 @@ yeccpars2_86_(__Stack0) ->
|
|||
end | __Stack].
|
||||
|
||||
|
||||
-file("rabbit_jms_selector_parser.yrl", 141).
|
||||
-file("rabbit_amqp_sql_parser.yrl", 141).
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
%%% This is the grammar file for JMS message selectors:
|
||||
%%% https://jakarta.ee/specifications/messaging/3.1/jakarta-messaging-spec-3.1#message-selector
|
||||
%%% This is the grammar file for SQL Filter Expressions:
|
||||
%%% https://docs.oasis-open.org/amqp/filtex/v1.0/csd01/filtex-v1.0-csd01.html#_Toc67929276
|
||||
%%%
|
||||
%%% To manually generate the parser file rabbit_jms_selector_parser.erl run:
|
||||
%%% yecc:file("rabbit_jms_selector_parser.yrl", [deterministic]).
|
||||
%%% To manually generate the parser file rabbit_amqp_sql_parser.erl run:
|
||||
%%% yecc:file("rabbit_amqp_sql_parser.yrl", [deterministic]).
|
||||
|
||||
Nonterminals
|
||||
selector
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
%%
|
||||
%% Copyright (c) 2007-2025 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. All rights reserved.
|
||||
|
||||
-module(amqp_jms_unit_SUITE).
|
||||
-module(amqp_filter_sql_unit_SUITE).
|
||||
|
||||
-compile([export_all, nowarn_export_all]).
|
||||
|
||||
|
|
@ -697,9 +697,8 @@ header_section(_Config) ->
|
|||
true = match("header.priority = 7", Hdr, Ps, APs),
|
||||
false = match("header.priority < 7", Hdr, Ps, APs),
|
||||
|
||||
%% Since the default priority is 4 in both AMQP and JMS, we expect the
|
||||
%% following expression to evaluate to true if matched against a message
|
||||
%% without an explicit priority level set.
|
||||
%% Since the default priority is 4, we expect the following expression to evaluate
|
||||
%% to true if matched against a message without an explicit priority level set.
|
||||
true = match("header.priority = 4", []).
|
||||
|
||||
properties_section(_Config) ->
|
||||
|
|
@ -881,12 +880,12 @@ match(Selector, Header, Props, AppProps)
|
|||
Sections = [Header, Props, AP, Body],
|
||||
Payload = amqp_encode_bin(Sections),
|
||||
Mc = mc_amqp:init_from_stream(Payload, #{}),
|
||||
rabbit_amqp_filter_jms:eval(ParsedSelector, Mc).
|
||||
rabbit_amqp_filter_sql:eval(ParsedSelector, Mc).
|
||||
|
||||
parse(Selector) ->
|
||||
Descriptor = {ulong, ?DESCRIPTOR_CODE_SQL_FILTER},
|
||||
Filter = {described, Descriptor, {utf8, Selector}},
|
||||
rabbit_amqp_filter_jms:parse(Filter).
|
||||
rabbit_amqp_filter_sql:parse(Filter).
|
||||
|
||||
amqp_encode_bin(L) when is_list(L) ->
|
||||
iolist_to_binary([amqp10_framing:encode_bin(X) || X <- L]).
|
||||
Loading…
Reference in New Issue