confluentinc/ksql
在 GitHub 查看Variable substitution doesn't work with field names in projection or where clause
Open
#8,250 创建于 2021年10月12日
bugfix-it-weekgood first issuestreaming-enginevariable-substitution
描述
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