[ 
https://issues.apache.org/jira/browse/PHOENIX-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14361283#comment-14361283
 ] 

James Taylor commented on PHOENIX-1704:
---------------------------------------

Thanks for the patch [~ayingshu]. It's looking good. Here's some feedback:
- remove YearParseNode and the nodeClass attribute in your YearFunction as it's 
not required.
- remove PDate.class from allowedTypes as dates are coercible to Timestamp so 
are automatically allowed.
- don't call evaluateExpression in your evaluate as it's not necessary and 
would cause the byte[] to be copied which isn't necessary. Also, only return 
false if the child cannot be evaluated. Something like this instead:
{code}
+        if (!expression.evaluate(tuple, ptr)) {
+            return false; // means could not evaluate due to lack of 
information
+        }
+        if (ptr.getLength() == 0) {
+            return true; // means null
+        }
+        long dateTime= PLong.INSTANCE.getCodec().decodeLong(ptr, 
expression.getSortOrder());
{code}
- use Joda DateTime instead of Calendar as performance will be better. 
Something like:
{code}
    DateTime dt = new DateTime(dateTime);
    int year = dt.getYear();
{code}
- minor, but if you declare your test function to return an int instead of 
Integer, all of those casts can be removed:
{code}
+    private static int callYearFunction(Connection conn, String invocation) 
throws SQLException {
+        Statement stmt = conn.createStatement();
+        ResultSet rs = stmt.executeQuery(String.format("SELECT %s FROM 
SYSTEM.CATALOG LIMIT 1", invocation));
+        assertTrue(rs.next());
+        int returnValue = rs.getInt();
+        assertFalse(rs.next());
+        rs.close();
+        return returnValue;
+    }
{code}
- Write at least one unit test that uses YEAR in a WHERE clause as that tests 
pushing the function to the server and running it as a filter.


> Add year() built-in function
> ----------------------------
>
>                 Key: PHOENIX-1704
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1704
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Alicia Ying Shu
>            Assignee: Alicia Ying Shu
>         Attachments: Phoenix-1704-v1.patch, Phoenix-1704-v2.patch
>
>
> Support Year() with date and timestamp.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to