----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/9494/#review17208 -----------------------------------------------------------
Ship it! Ship It! - Chug Rolke On Feb. 18, 2013, 5:21 p.m., Andrew Stitcher wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/9494/ > ----------------------------------------------------------- > > (Updated Feb. 18, 2013, 5:21 p.m.) > > > Review request for qpid, Gordon Sim and Kenneth Giusti. > > > Description > ------- > > This is a potential first cut at JMS style selectors for the c++ broker and > client. > > Currently what's implemented: > > Selector parser/evaluator: > Parse a subset of the selector language including: > Conditional expressions : "=" "<>" "IS NULL" "IS NOT NULL" "NOT "AND" "OR" > All values are treated as strings (no numerics or boolean literals) so there > are no numeric > operators or comparison operators (strings can only be compared for equality) > "LIKE" & "NOT LIKE", "IN" are not (yet) supported. > > To specify a selector you add a link property called qpid.selector to a queue > type address, for example: > > queue; {link:{qpid.selector:"amqp.delivery_mode='PERSISTENT' or not > TransactionType='red'"}} > > The code is currently implemented in the 0-10 code paths of the broker and > the messaging library: > The selector is sent from client to broker as an argument property in the > message subscription. > > Still to do: > * amqp 1.0 support. > * Improved "special" identifier handling - currently not all the amqp.* > identifiers are handled and > we may need some extra message hooks to get the rest uniformly across 0-10 > and 1.0 messages. > > * Work on parser/evaluator: > ** Handle type other than string > ** Booleans > ** Numerics > ** Numeric operators and comparisons > ** more complex operators: > *** string: "LIKE", "NOT LIKE", "IN" > *** numeric: "BETWEEN" > > Having said all that needs still to be done, I'm reasonably happy that what's > currently there is useful and stable so could go into the tree is currently > is. > > > This addresses bug QPID-4558. > https://issues.apache.org/jira/browse/QPID-4558 > > > Diffs > ----- > > /trunk/qpid/cpp/src/CMakeLists.txt 1446233 > /trunk/qpid/cpp/src/Makefile.am 1446233 > /trunk/qpid/cpp/src/qpid/broker/Selector.h PRE-CREATION > /trunk/qpid/cpp/src/qpid/broker/Selector.cpp PRE-CREATION > /trunk/qpid/cpp/src/qpid/broker/SelectorExpression.h PRE-CREATION > /trunk/qpid/cpp/src/qpid/broker/SelectorExpression.cpp PRE-CREATION > /trunk/qpid/cpp/src/qpid/broker/SelectorToken.h PRE-CREATION > /trunk/qpid/cpp/src/qpid/broker/SelectorToken.cpp PRE-CREATION > /trunk/qpid/cpp/src/qpid/broker/SemanticState.h 1446233 > /trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp 1446233 > /trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp 1446233 > /trunk/qpid/cpp/src/tests/CMakeLists.txt 1446233 > /trunk/qpid/cpp/src/tests/Makefile.am 1446233 > /trunk/qpid/cpp/src/tests/Selector.cpp PRE-CREATION > > Diff: https://reviews.apache.org/r/9494/diff/ > > > Testing > ------- > > Selector parser/evaluator tested reasonably thoroughly using new unit tests. > > Current make check still works. > > Informally tested selector functionality using qpid-send, qpid-receive. > > > Thanks, > > Andrew Stitcher > >