Palash Chauhan created PHOENIX-7406:
---------------------------------------
Summary: Index creation fails when creating a partial index on a
table which was created with column names in double quotes
Key: PHOENIX-7406
URL: https://issues.apache.org/jira/browse/PHOENIX-7406
Project: Phoenix
Issue Type: Bug
Reporter: Palash Chauhan
{code:java}
CREATE TABLE TESTGLOBALINDEXWITHSORTKEY1 ("attr_0" VARCHAR NOT NULL, COL BSON
CONSTRAINT pk PRIMARY KEY ("attr_0")) {code}
{code:java}
CREATE INDEX G_IDX_TESTGLOBALINDEXWITHSORTKEY1 ON TESTGLOBALINDEXWITHSORTKEY1
(BSON_VALUE(COL,'IdS','VARCHAR'),BSON_VALUE(COL,'Id2','DOUBLE')) INCLUDE (COL)
WHERE BSON_VALUE(COL,'IdS','VARCHAR') IS NOT NULL AND
BSON_VALUE(COL,'Id2','VARCHAR') IS NOT NULL
{code}
{code:java}
org.apache.phoenix.schema.ColumnNotFoundException: ERROR 504 (42703): Undefined
column. columnName=TESTGLOBALINDEXWITHSORTKEY1.ATTR_0
at
org.apache.phoenix.schema.PTableImpl.getColumnForColumnName(PTableImpl.java:1416)
at
org.apache.phoenix.compile.FromCompiler$SingleTableColumnResolver.resolveColumn(FromCompiler.java:541)
at org.apache.phoenix.compile.UpsertCompiler.compile(UpsertCompiler.java:511)
at
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:1110)
at
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:1096)
at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:612)
at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:593)
at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
at
org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:592)
at
org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:580)
at
org.apache.phoenix.jdbc.PhoenixPreparedStatement.execute(PhoenixPreparedStatement.java:181)
at
org.apache.phoenix.compile.CreateIndexCompiler.verifyIndexWhere(CreateIndexCompiler.java:196)
at
org.apache.phoenix.compile.CreateIndexCompiler.compile(CreateIndexCompiler.java:236)
at
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableCreateIndexStatement.compilePlan(PhoenixStatement.java:1504)
at
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableCreateIndexStatement.compilePlan(PhoenixStatement.java:1486)
at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:612)
at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:593)
at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
at
org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:592)
at
org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:580)
at
org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:2406)
{code}
We should always use double quotes when forming the upsert query as part of
WHERE clause verification during partial index creation.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)