-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
General disagreement about content filter expressions and expression parameters #37
Comments
Spec issue is https://issues.omg.org/browse/DDS15-319 |
I'm wondering about
The spec uses the term "parameter" in a few different ways. It's clear to me that what it calls the "token" PARAMETER (all-caps) is a distinct entity from the non-terminal Parameter. The reader of the spec should not assume that the data passed to the set_expression_parameters DDS API (and its equivalents) follow any part of this grammar. In fact, the start of section B.1 makes this explicit:
|
I've thought of a workaround for this: choosing a different field.
|
From a user's perspective, the interop test produced an important outcome -- it revealed that various products are not interoperable with respect to this feature. The question now is what to do about it. Avoiding the feature that's non-interoperable reduces the utility of the interop test. |
We added a section about considerations where I put information about the CFT expression: https://omg-dds.github.io/dds-rtps/test_description.html#considerations-per-product We are not currently testing the behavior of a CTF wrt writer-side filtering. In the case of Connext, we support both operands ( Currently the only difference is the single quote around the string value. Probably we can create an issue for the spec and close this issue, what do you think? |
I agree that having it in documentation is important. And now that the documentation is referenced in this issue, hopefully others will find it when needed. I don't think the spec needs to change what it's requiring -- as I wrote above I think that's OK. However the spec may need to change to be more clear to readers. It would probably be good to hear from those who read the spec differently than I did, if they're available. |
Agreed with @mitza-oci the test did uncover an incompatibility resulting from an ambiguity in the DDS spec. |
Executable's name
Reproducing the problem
What is the problem?
Suggestions about why this problem exists
The filter expression and expression parameter offered by the various subscribers is thus:
In the case of opendds as publisher and connext as subscriber, opendds does not support a
MATCH
operator so it performs no publisher-side content filtering, i.e., all samples are sent to the subscriber which then would filter again.This is interoperable but probably not what is intended.
The reverse case succeeds.
In the case of opendds as publisher and eprosima as subscriber, the difference in quoting the parameter causes failure.
The reverse case succeeds.
opendds and coredx agree on the expression and expression parameter so both directions succeed.
I did not test other vendor combinations.
I suggest that the filter expression always be
color = %0
.Expression parameters are defined in 2.2.2.3.3 and 2.2.2.3.4 as
Annex B implies (clarification is needed) that an expression parameter corresponds to the
Parameter
non-terminal which can be either anINTEGERVALUE
,CHARVALUE
,FLOATVALUE
,STRING
,ENUMERATEDVALUE
, orPARAMETER
.Logically,
PARAMETER
is excepted as the goal of a expression parameter is to supply a value forPARAMETER
that appears in an expression as quoted above.As it relates to the issue at hand,
CHARVALUE
andSTRING
require single quotes as delimiters.This makes sense and is necessary when they appear in an expression.
However, expression parameters are conveyed through string sequences so the use of delimiters is superfluous.
Furthermore, it prevents using the single quote in an expression parameter.
I suggest that expression parameters not be quoted and DDS Specification be clarified on this point.
Thus, for this test, the expression parameter would be
BLUE
.Other comments
The text was updated successfully, but these errors were encountered: