Commit Graph

59634 Commits

Author SHA1 Message Date
Michal Kuratczyk febb58003d
Merge pull request #14232 from rabbitmq/consistent-logging
Peer Discovery AWS Integration Test / Integration Test (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 26) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 27) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 28) (push) Waiting to run Details
Test (make) / Test (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Type check (1.18, 28) (push) Waiting to run Details
Trigger a 4.2.x alpha release build / trigger_alpha_build (push) Has been cancelled Details
Test Authentication/Authorization backends via mutiple messaging protocols / selenium (chrome, 1.17.3, 27.3) (push) Has been cancelled Details
Test Management UI with Selenium / selenium (chrome, 1.17.3, 27.3) (push) Has been cancelled Details
Test Authentication/Authorization backends via mutiple messaging protocols / summary-selenium (push) Has been cancelled Details
Consistent logging
2025-07-18 10:58:40 +02:00
Michal Kuratczyk 3ee82dab54
Updates for SQL filter changes 2025-07-18 09:46:00 +02:00
Michal Kuratczyk f6e718c599
Re-introduce rabbit_log for backwards compatibility
Some community plugins use rabbit_log. To simplify
the transition, we can keep this module as a simple
wrapper on logger macros.
2025-07-18 08:43:05 +02:00
Michal Kuratczyk 69b97b8a17
Trigger CI 2025-07-18 08:43:05 +02:00
Michal Kuratczyk 1e17455463
[skip ci] Code formatting 2025-07-18 08:43:05 +02:00
Michal Kuratczyk e459859a40
Remove test for rabbit_log:log/4 2025-07-18 08:43:05 +02:00
Michal Kuratczyk bcc062203d
rabbit_log -> logger in MQTT test 2025-07-18 08:43:05 +02:00
Michal Kuratczyk 9b3f66c2ec
Remove rabbit_log from Makefile 2025-07-18 08:43:04 +02:00
Michal Kuratczyk 9ab45124e6
rabbit_log -> logger in CLI tests 2025-07-18 08:43:04 +02:00
Michal Kuratczyk 4a4b8bea60
Don't meck rabbit_log 2025-07-18 08:43:04 +02:00
Michal Kuratczyk 5cfb39d30b
rabbit_log -> logger in dynamic calls 2025-07-18 08:43:04 +02:00
Michal Kuratczyk 11e51f58ac
Make dialyzer happy 2025-07-18 08:43:04 +02:00
Michal Kuratczyk d9103c9d6e
Add exchange name back to the log 2025-07-18 08:43:04 +02:00
Michal Kuratczyk 8ffc9912cd
Add missing includes 2025-07-18 08:43:04 +02:00
Michal Kuratczyk cc5c3c60df
Add missing include 2025-07-18 08:43:04 +02:00
Michal Kuratczyk 34d20d92ed
Remove incorrect include 2025-07-18 08:43:03 +02:00
Michal Kuratczyk 0cfab72fea
Fix AMQP-0.8 :) 2025-07-18 08:43:03 +02:00
Michal Kuratczyk 24c3677e92
[skip ci] fix AMQP-1.0 DBG macro 2025-07-18 08:43:03 +02:00
Michal Kuratczyk 84d52b51dc
[skip ci] Remove rabbit_log_shovel, use LOG_ macros directly 2025-07-18 08:43:03 +02:00
Michal Kuratczyk 301f6e9906
[skip ci] Remove redundant pid metadata in LOG_ macros 2025-07-18 08:43:03 +02:00
Michal Kuratczyk 8fb3ca1abf
[skip ci] Set logging domain to `?RMQLOG_DOMAIN_GLOBAL` on startup
`?RMQLOG_DOMAIN_GLOBAL` used to be added by a now deleted logging
module rabbit_log.
2025-07-18 08:43:03 +02:00
Michal Kuratczyk ad15dd39df
[skip ci] Simplify logging around peer discovery 2025-07-18 08:43:03 +02:00
Michal Kuratczyk ee100af9eb
[skip ci] Remove rabbit_log_ldad and use LOG_ macros 2025-07-18 08:43:02 +02:00
Michal Kuratczyk 8a05433897
[skip ci] Remove rabbit_log_connection and use LOG_ macros 2025-07-18 08:43:02 +02:00
Michal Kuratczyk ebe3f61ef0
[skip ci] Remove rabbit_log_federation and use LOG_ macros 2025-07-18 08:43:02 +02:00
Michal Kuratczyk 3ee8df9310
[skip ci] Remove `pid` from logger process metadata
It's added automatically by logger
2025-07-18 08:43:02 +02:00
Michal Kuratczyk 5600138ce9
[skip ci] Remove rabbit_log_prelaunch 2025-07-18 08:43:02 +02:00
Michal Kuratczyk b7b30ce4d1
[skip ci] Remove rabbit_log_mirroring 2025-07-18 08:43:02 +02:00
Michal Kuratczyk 1743881fe1
[skip ci] Remove rabbit_log_channel and use LOG_ macros directly 2025-07-18 08:43:02 +02:00
Michal Kuratczyk 14fc15a0c2
[skip ci] Remove rabbit_log_queue, replace with LOG_ macros 2025-07-18 08:43:02 +02:00
Michal Kuratczyk b6b766cac7
[skip ci] Replace logger: calls is LOG_ macros 2025-07-18 08:43:02 +02:00
Michal Kuratczyk 175ba70e8c
[skip ci] Remove rabbit_log and switch to LOG_ macros 2025-07-18 08:42:59 +02:00
David Ansari 310e8123ec
Merge pull request #14184 from rabbitmq/amqp-sql
Support AMQP SQL Filter Expressions
2025-07-18 08:17:21 +02:00
David Ansari a43e2c5201
Merge pull request #14245 from rabbitmq/amqp_filter_set_bug
Trigger a 4.2.x alpha release build / trigger_alpha_build (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 26) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 27) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 28) (push) Waiting to run Details
Test (make) / Test (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Type check (1.18, 28) (push) Waiting to run Details
Deny `amqp_filter_set_bug` by default
2025-07-17 15:19:27 +02:00
David Ansari a850505b18 Fix failing test case `streams`
Fix
```
make -C deps/rabbit ct-amqp_dotnet t=cluster_size_1:streams
```
2025-07-17 11:29:53 +02:00
David Ansari 4c73edd923 Deny `amqp_filter_set_bug` by default
The deprecated feature flag `amqp_filter_set_bug` was introduced in
RabbitMQ 4.1 with phase `permitted_by_default`.
See https://github.com/rabbitmq/rabbitmq-server/pull/12415

This commit which will land in RabbitMQ 4.2 changes the phase to `denied_by_default`.
2025-07-17 10:35:00 +02:00
David Ansari bc346c8193 Minor refactoring 2025-07-16 15:29:24 +02:00
David Ansari 31d443a30c Change regex pattern from greedy to non-greedy
The spec mandates:
> The wildcard matching MUST consume as few characters as possible.
2025-07-16 15:29:23 +02:00
David Ansari 965691680d Make NAN and INF reserved 2025-07-16 15:29:23 +02:00
David Ansari 5bd2eba04f Support decimal and approximate number constants
https://docs.oasis-open.org/amqp/filtex/v1.0/csd01/filtex-v1.0-csd01.html#_Toc67929299
and
https://docs.oasis-open.org/amqp/filtex/v1.0/csd01/filtex-v1.0-csd01.html#_Toc67929300

In contrast, in JMS approximate literals use the Java floating-point literal syntax.
2025-07-16 15:29:23 +02:00
David Ansari 642eca60c0 Add support for UTC function
https://docs.oasis-open.org/amqp/filtex/v1.0/csd01/filtex-v1.0-csd01.html#_Toc67929310
2025-07-16 15:29:23 +02:00
David Ansari 833b367e3b Support delimited identifier
https://docs.oasis-open.org/amqp/filtex/v1.0/csd01/filtex-v1.0-csd01.html#_Toc67929314
2025-07-16 15:29:23 +02:00
David Ansari 492575bc29 Support strings surrounded by double quotes
JMS:
> A string literal is enclosed in single quotes, with an included single quote represented
> by doubled single quote; for example, 'literal' and 'literal''s'.

AMQP SQL
https://docs.oasis-open.org/amqp/filtex/v1.0/csd01/filtex-v1.0-csd01.html#_Toc67929302
> A string constant is a string of arbitrary text consisting of any valid printable Unicode
> characters surrounded by single or double quotation marks. A quotation mark inside the
> string is represented by two consecutive quotation marks.
> string_constant ::= { ‘ | “ } <any> [<any>] { ‘ | “ }
2025-07-16 15:29:23 +02:00
David Ansari ffc879d958 Support binary constants
https://docs.oasis-open.org/amqp/filtex/v1.0/csd01/filtex-v1.0-csd01.html#_Toc67929303
2025-07-16 15:29:23 +02:00
David Ansari ccdb82b687 Allow only upper case operator names
Allow only upper case predefined selector literals and operator names.

The JMS spec states:
> Predefined selector literals and operator names are written here in upper case; however, they are case insensitive.

However, the AMQP SQL spec does not include such a statement.
The EBNF notation with single quotes ('AND') typically implies exact literal matching.
This commit follows the AMQP SQL's EBNF notation and therefore disallows
lower case predefined selector literals or operator names.
2025-07-16 15:29:23 +02:00
David Ansari c5eeced28d Support set expressions
https://docs.oasis-open.org/amqp/filtex/v1.0/csd01/filtex-v1.0-csd01.html#_Toc67929291
2025-07-16 15:29:23 +02:00
David Ansari 7da3c64287 Allow lexicographical comparison of strings
AMQP SQL spec:
"The left operand is of greater value than the right operand if:
... both operands are of type string or of type symbol (any combination is permitted) and the
lexicographical rank of the left operand is greater than the lexicographical rank of the right operand."

In contrast, in JMS:
"String [...] comparison is restricted to = and <>."
2025-07-16 15:29:23 +02:00
David Ansari 5949e6fe90 Support modulo operator '%'
The spec is underspecified in what should happen if the left hand side
is a float. This commit decides that the result is undefined (unknown).

The spec is also underspecified in what should happen if either the left
hand side or the right hand side is negative. This commit decides to use
the behaviour of Erlang `rem`.
2025-07-16 15:29:23 +02:00
David Ansari 885b8d38e8 Support ‘!=’ operator 2025-07-16 15:29:23 +02:00
David Ansari f5ae413659 Remove [NOT] BETWEEN operator
[NOT] BETWEEN operator is not supported in AMQP SQL
2025-07-16 15:29:23 +02:00