confluentinc/ksql
Voir sur GitHubVariable substitution doesn't work with field names in projection or where clause
Open
#8 250 ouverte le 12 oct. 2021
bugfix-it-weekgood first issuestreaming-enginevariable-substitution
Métriques du dépôt
- Stars
- (5 739 stars)
- Métriques de merge PR
- (Merge moyen 4j 20h) (6 PRs mergées en 30 j)
Description
Describe the bug
Variable substitution fails for field names in the query projection or where clause. According to example in docs here, it should work.
To Reproduce Version: 6.2.1
ksql> define colName1 = 'LEVEL';
ksql> select ${colName1} from ksql_processing_log emit changes;
Illegal argument at Line: 1, Col: 8. Got: 'LEVEL'
Statement: select ${colName1} from ksql_processing_log emit changes;
ksql> define colName1 = 'LEVEL';
ksql> select * from ksql_processing_log where ${colName1} = 'ERROR';
Illegal argument at Line: 1, Col: 41. Got: 'LEVEL'
Statement: select * from ksql_processing_log where ${colName1} = 'ERROR';
Expected behavior
Query succeeds, substituting variable (colName1) value for field name.
Actual behaviour See above for error details.
Additional context Initial feedback from @spena:
Seems the parser is detecting the ${colName1} from the where clause as a variable literal and not a variable identifier, so the parsing fails because
levelis not a string literal