confluentinc/ksql

Variable substitution doesn't work with field names in projection or where clause

Open

#8.250 aberto em 12 de out. de 2021

Ver no GitHub
 (12 comments) (0 reactions) (1 assignee)Java (1.048 forks)batch import
bugfix-it-weekgood first issuestreaming-enginevariable-substitution

Métricas do repositório

Stars
 (5.739 stars)
Métricas de merge de PR
 (Mesclagem média 4d 20h) (6 fundiu PRs em 30d)

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 level is not a string literal

Guia do colaborador