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)

Reply via email to