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

ASF GitHub Bot commented on PHOENIX-514:
----------------------------------------

Github user JamesRTaylor commented on a diff in the pull request:

    https://github.com/apache/phoenix/pull/34#discussion_r22993260
  
    --- Diff: 
phoenix-core/src/main/java/org/apache/phoenix/index/IndexMaintainer.java ---
    @@ -388,23 +426,21 @@ private IndexMaintainer(PTable dataTable, PTable 
index) {
                     } 
                 }
                 BitSet descIndexColumnBitSet = 
rowKeyMetaData.getDescIndexColumnBitSet();
    -            int j = 0;
    -            Iterator<ColumnReference> iterator = indexedColumns.iterator();
    +            Iterator<Expression> expressionIterator = 
indexedExpressions.iterator();
                 for (int i = 0; i < nIndexedColumns; i++) {
                     PDataType dataColumnType;
                     boolean isNullable = true;
                     boolean isDataColumnInverted = false;
                     SortOrder dataSortOrder = SortOrder.getDefault();
    -                if (dataPkPosition[i] == -1) {
    -                    dataColumnType = indexedColumnTypes.get(j);
    -                    ImmutableBytesPtr value = 
valueGetter.getLatestValue(iterator.next());
    -                    if (value == null) {
    -                        ptr.set(ByteUtil.EMPTY_BYTE_ARRAY);
    -                    } else {
    -                        ptr.set(value.copyBytesIfNecessary());
    -                    }
    -                    j++;
    -               } else {
    +                if (dataPkPosition[i] == EXPRESSION_NOT_PRESENT) {
    +                   Expression expression = expressionIterator.next();
    +                   dataColumnType = expression.getDataType();
    +                   // expressions are stored using default sort order
    --- End diff --
    
    We should be able to invert a function expression (any expression in the ON 
list for an index definition)


> Support functional indexes
> --------------------------
>
>                 Key: PHOENIX-514
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-514
>             Project: Phoenix
>          Issue Type: Task
>            Reporter: James Taylor
>            Assignee: Thomas D'Silva
>              Labels: enhancement
>
> Instead of only defining the set of columns from the data table that make up 
> an index, you should be able to use expressions.  For example:
>       CREATE INDEX upper_last_name_idx ON person (UPPER(last_name))
> Then in queries that use UPPER(last_name), we can replace them with column 
> references to the index table.



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

Reply via email to