Note: using Phoenix 4.7 on CDH
I've got a table defined similar to this:
CREATE TABLE IF NOT EXISTS my_tbl (
my_id BINARY NOT NULL PRIMARY KEY,
I am trying to create a prepared statement like:
val sqlString = "SELECT name from my_tbl where my_id in ?"
val pStmt = connection.prepareStatement(sqlString)
val myBinaryKeyArray: Array[B]
pStmt.setArray(4, connection.createArrayOf("BINARY ARRAY", myBinaryKeyArray))
I have tried a number of variations of the sql data type (BINARY and BINARY ARRAY... when I use
BINARY ARRAY I get the following error:
java.lang.ClassCastException: [B cannot be cast to org.apache.phoenix.schema.types.PhoenixArray
If I use BINARY I get the error:
org.apache.phoenix.schema.TypeMismatchException: ERROR 203 (22005): Type mismatch. BINARY and BINARY ARRAY for CUSTOMER_ID = ARRAY[[...]]
Am I doing something exceedingly dumb? Is there maybe just not support for this type of IN clause in a prepared statement like this? I'll have a variable number of items to use in the IN clause, and I'd like to not have to inject N number of ? marks, and then juggle parameter indexes if I can avoid it.