[
https://issues.apache.org/jira/browse/PHOENIX-7044?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17777889#comment-17777889
]
ASF GitHub Bot commented on PHOENIX-7044:
-----------------------------------------
tkhurana commented on code in PR #1708:
URL: https://github.com/apache/phoenix/pull/1708#discussion_r1367324481
##########
phoenix-core/src/it/java/org/apache/phoenix/end2end/json/JsonFunctionsIT.java:
##########
@@ -633,4 +637,64 @@ public void testJsonQuery() throws Exception {
compareJson(rs.getString(5), JsonDatatypes,
"$.datatypes.mixedArray");
}
}
+
+ @Test
+ public void testJsonExpressionIndex() {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
+ try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+ conn.setAutoCommit(true);
+ String
+ ddl =
+ "create table if not exists " + tableName +
+ " (pk integer primary key, col integer,
jsoncol.jsoncol json)";
+ conn.createStatement().execute(ddl);
+ conn.createStatement().execute(
+ "UPSERT INTO " + tableName + " (pk, col, jsoncol) VALUES
(1,2, '" + JsonDoc1 + "')");
+ conn.createStatement().execute(
+ "CREATE INDEX " + indexName + " ON " + tableName
Review Comment:
Another thing to test is drop the json column from the base table. That
should drop the index if any scalar field of json column is part of index pk.
See `DropColumnIT#testDroppingIndexedColDropsIndex`
> Support Index on a generated column that extracts a scalar value from the
> JSON column
> -------------------------------------------------------------------------------------
>
> Key: PHOENIX-7044
> URL: https://issues.apache.org/jira/browse/PHOENIX-7044
> Project: Phoenix
> Issue Type: Sub-task
> Components: phoenix
> Reporter: Ranganath Govardhanagiri
> Assignee: Ranganath Govardhanagiri
> Priority: Major
>
> As per the Design doc attached we can implement the below proposal:
> Using index expressions: Phoenix lets index’s PK to be defined as certain
> expressions. Aggregate (sum()), stateless(a constant value) or
> non-deterministic(rand()) is not allowed. But expressions like (mycol/2) is
> allowed. The Json function could be used as expression with some code
> changes.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)