OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

amqp message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: Groups - AMQP Filter Expressions - comments against WD3

Hi Clemens,

My feedback against your last working draft 3.   Thanks for the work,
I think it is taking shape.
Kind regards, Keith

Comments against Working Draft 3 - 10 September 2018.

Footer refers to the wrong document version (WD1)

2.1 Overview, para 3.  "and [the] might carry encrypted data."

4.1 I don't see how the reference field values scheme works for
headers and properties sections. The problem is their list nature
coupled with the fact they carry fields that are not nullable
according to their type.   For instance I want a filter on priority=2
alone, but I cannot express this without also specifying durable value
boolean which appears before it in the list.

4.2.1 What is the behaviour of filter that is an empty list?  Say I
define a filter delivery-annotations-filter and leave the map empty.
Would it match a message without a delivery-annotations section?  My
expectation is yes, but I think this needs to be clear.

4.3 The body of a message allows one or more amqp-sequence values.  In
the case where the message being filtered carries more than one
amqp-sequence values, it is not clear to me how the
amqp-sequence-filter works.

Are the amqp-sequence-filter applied positionally against the filtered
messages? Or does every amqp-sequence-filter defined in the group have
to match every amqp-sequence on the message being considered.  Both
ideas seem weird to me.  It makes me wonder if amqp-sequence filtering
is actually useful.

6  How must an implementation handle a sql-filter that cannot be
parsed? (immediately detach the link? use particular link error?).

Does the specification need to talk about runtime filter evaluation
errors? I For instance given a filter DATE(a.date) > NOW()  how should
an implementation behave on encountering a message where the value of
a.date it not parsable as a date because it is the wrong format or not
of the expected type.    2.1 already states "Filter expressions MUST
evaluate to a Boolean âtrueâ or âfalseâ result. ", so I think this
already provides the answer.  An implementation could choose to log a
warning etc to help developer, but I think this need not concern the

There is another corner case about about filters that whilst
syntactically valid refer to fields (of header or properties) that
don't exist. I don't think the spec needs to talk about this.  An
implementation could chose to detect/log/ it if so wished.

6.2 EBNF was standardised by ISO-14977.   Is this the standard the
EBNF in the spec means to comply with?

I'd prefer the EBNF in a single block rather than interspersed amongst
the text.  If makes it easy to feed into tools as a single copy/paste
(parser generators, EBNF validators) and for me at least better allows
the spotting of errors. Second bullet, missing exclamation.  The â[!]=â operator
evaluates to âtrueâ if the left and the right operand expressions are
not of equal value. Typo.  There is no[t] default escape character.  Clarify the behaviour of NULL when fields or sections are
missing from the message.  For instance "a.color IS NULL" when either
application properties exists but does not carry a color entry in the
map, or application properties is absent from the message being
filtered.  I would expect the filter to yield TRUE for both.   I
notice the JMS 2.0 spec uses words "  If a property that does
not exist in a message is referenced, its value is NULL.". I think we
need something similar. Define arithmetic promotion and define how overflow is to be
handled. syntax rule "function_name" defines UTC, but the later
sections do not define this function. Conversely NOW is defined in the
later sections but missed in the syntax rule.  As my comment against 4.3, the body of a message allows one
or more amqp-sequence values, so the meaning of a section reference. Section 2.1 excluded the data payload section but the syntax
rule "section" allows it to be referenced.

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]