[
https://issues.apache.org/jira/browse/PHOENIX-1661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14639759#comment-14639759
]
ASF GitHub Bot commented on PHOENIX-1661:
-----------------------------------------
Github user twdsilva commented on a diff in the pull request:
https://github.com/apache/phoenix/pull/93#discussion_r35388362
--- Diff:
phoenix-core/src/it/java/org/apache/phoenix/end2end/JsonArrayLengthFunctionIT.java
---
@@ -0,0 +1,114 @@
+/**
+ *
+ */
+package org.apache.phoenix.end2end;
+
+import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Properties;
+import org.apache.phoenix.expression.function.JsonArrayLengthFunction;
+import org.apache.phoenix.util.PropertiesUtil;
+import org.junit.Test;
+
+/**
+ * End to end test for {@link JsonArrayLengthFunction}.
+ *
+ */
+public class JsonArrayLengthFunctionIT extends BaseHBaseManagedTimeIT {
+
+ @Test
+ public void testJsonArrayLengthWithWhereClause() throws Exception {
+ Connection conn = getConnection();
+ String json = "[1,2,3]";
+ String pk = "valueOne";
+ try {
+ populateJsonTable(conn, json, pk);
+
+ String selectQuery = "SELECT col1 FROM testJson WHERE
json_array_length(col1) = 3";
+ PreparedStatement stmt =
conn.prepareStatement(selectQuery);
+ ResultSet rs = stmt.executeQuery();
+ assertTrue(rs.next());
+ assertEquals("Json data read from DB is not as
expected.", json,
+ rs.getString(1));
+ assertFalse(rs.next());
+
+ } finally {
+ conn.close();
+ }
+ }
+
+ @Test
+ public void testJsonArrayLengthWhenFirstArgumentIsJsonString()
+ throws Exception {
+ Connection conn = getConnection();
+ String json = "[1,2,true,[\"string\",3]]";
+ String pk = "valueOne";
+ try {
+ populateJsonTable(conn, json, pk);
+
+ String selectQuery = "SELECT json_array_length(col1)
FROM testJson WHERE pk = 'valueOne'";
+ PreparedStatement stmt =
conn.prepareStatement(selectQuery);
+ ResultSet rs = stmt.executeQuery();
+ assertTrue(rs.next());
+ assertEquals("Json data read from DB is not as
expected.",
+ 4, rs.getInt(1));
+
+ assertFalse(rs.next());
+
+ } finally {
+ conn.close();
+ }
+ }
+
+ @Test
+ public void testJsonArrayElementsWithWhereClause() throws Exception {
--- End diff --
Can you add a test that verifies json_array_elements returns an array
correctly ?
> Implement built-in functions for JSON
> -------------------------------------
>
> Key: PHOENIX-1661
> URL: https://issues.apache.org/jira/browse/PHOENIX-1661
> Project: Phoenix
> Issue Type: Bug
> Reporter: James Taylor
> Labels: JSON, Java, SQL, gsoc2015, mentor
> Attachments: PhoenixJSONSpecification-First-Draft.pdf
>
>
> Take a look at the JSON built-in functions that are implemented in Postgres
> (http://www.postgresql.org/docs/9.3/static/functions-json.html) and implement
> the same for Phoenix in Java following this guide:
> http://phoenix-hbase.blogspot.com/2013/04/how-to-add-your-own-built-in-function.html
> Examples of functions include ARRAY_TO_JSON, ROW_TO_JSON, TO_JSON, etc. The
> implementation of these built-in functions will be impacted by how JSON is
> stored in Phoenix. See PHOENIX-628. An initial implementation could work off
> of a simple text-based JSON representation and then when a native JSON type
> is implemented, they could be reworked to be more efficient.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)