[
https://issues.apache.org/jira/browse/PHOENIX-7044?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17777883#comment-17777883
]
ASF GitHub Bot commented on PHOENIX-7044:
-----------------------------------------
tkhurana commented on code in PR #1708:
URL: https://github.com/apache/phoenix/pull/1708#discussion_r1367302902
##########
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
+ + " (JSON_VALUE(JSONCOL,'$.type'),
JSON_VALUE(JSONCOL,'$.info.address.town')) include (col)");
Review Comment:
As I think more about it, it will be fine.
> 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)