Egor Ryashin created CALCITE-6170: ------------------------------------- Summary: Invalid Key: CALCITE-6170 URL: https://issues.apache.org/jira/browse/CALCITE-6170 Project: Calcite Issue Type: Bug Components: avatica-go Affects Versions: 1.23.0 Reporter: Egor Ryashin Assignee: Francis Chuang
Apache Druid with Calcite and Avatica-Protobuf integration doesn't correctly validate 'LOWER(?)' The current workaround: 'LOWER(CAST(? AS VARCHAR))' Versions: {code:java} <calcite.version>1.35.0</calcite.version> <avatica.version>1.23.0</avatica.version> {code} The following Go code will produce an exception: {code:java} package main import ( "context" "database/sql" "fmt" _ "github.com/apache/calcite-avatica-go/v5" ) func main() { jdbcUrl := "http://localhost:8082/druid/v2/sql/avatica-protobuf" db, err := sql.Open("avatica", jdbcUrl) if err != nil { panic(err) } defer func() { err = db.Close() if err != nil { fmt.Println(err) panic(err) } }() sql := "select any_value(browser) from test where (lower(browser) like lower(?)) limit 10" rows, err := db.QueryContext(context.Background(), sql, "%a%") if err != nil { panic(err) } rows.Close() }{code} {code:java} panic: An error was encountered while processing your request: QueryInterruptedException: Illegal use of dynamic parameter (line [1], column [73]) -> DruidException: Illegal use of dynamic parameter (line [1], column [73]) -> ValidationException: org.apache.calcite.runtime.CalciteContextException: At line 1, column 73: Illegal use of dynamic parameter -> CalciteContextException: At line 1, column 73: Illegal use of dynamic parameter -> SqlValidatorException: Illegal use of dynamic parameter {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)