Skip to content

Commit a99444e

Browse files
Fixed field row matching for Guid and point tag literals
1 parent 033a699 commit a99444e

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/sttp/data/filterexpressionparser.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -529,11 +529,11 @@ def exitIdentifierStatement(self, ctx: ExpressionParser.IdentifierStatementConte
529529
return
530530

531531
if ctx.MEASUREMENT_KEY_LITERAL() is not None:
532-
self._map_matchedfieldrow(primary_table, primary_tableidfields.measurementkey_fieldname, ctx.MEASUREMENT_KEY_LITERAL().getText(), signalid_columnindex)
532+
self._map_matchedfieldrow(primary_table, primary_tableidfields.measurementkey_fieldname, str(FilterExpressionParser._parse_guidliteral(ctx.MEASUREMENT_KEY_LITERAL().getText())), signalid_columnindex)
533533
return
534534

535535
if ctx.POINT_TAG_LITERAL() is not None:
536-
self._map_matchedfieldrow(primary_table, primary_tableidfields.pointtag_fieldname, ctx.POINT_TAG_LITERAL().getText(), signalid_columnindex)
536+
self._map_matchedfieldrow(primary_table, primary_tableidfields.pointtag_fieldname, FilterExpressionParser._parse_point_tag_literal(ctx.POINT_TAG_LITERAL().getText()), signalid_columnindex)
537537
return
538538

539539
# expression
@@ -998,6 +998,15 @@ def _parse_datetimeliteral(literal: str) -> datetime:
998998
except Exception as ex:
999999
raise EvaluateError(f"failed to parse datetime literal #{literal}#: {ex}") from ex
10001000

1001+
@staticmethod
1002+
def _parse_point_tag_literal(point_tag_literal: str) -> str:
1003+
# Remove any double-quotes from point tag literal, ANTLR grammar already
1004+
# ensures tag starting with quote also ends with one
1005+
if point_tag_literal.startswith('"'):
1006+
point_tag_literal = point_tag_literal[1:-1]
1007+
1008+
return point_tag_literal
1009+
10011010
# columnName
10021011
# : IDENTIFIER
10031012
# ;

0 commit comments

Comments
 (0)