You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2018/11/27 18:56:00 UTC

[jira] [Commented] (ASTERIXDB-2476) Support array slicing in SQL++

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

ASF subversion and git services commented on ASTERIXDB-2476:
------------------------------------------------------------

Commit 7090e74bb6f1d03c983226d016e79afac0a1fa9d in asterixdb's branch refs/heads/master from [~HussainHT]
[ https://git-wip-us.apache.org/repos/asf?p=asterixdb.git;h=7090e74 ]

[ASTERIXDB-2476][FUN] Support array slicing in SQL++

- user model changes: yes
- storage format changes: no
- interface changes: no

Details:
- Added array_slice function. 2 functions were added, one that
accepts 2 arguments and the other accepts 3 arguments. The
arguments are (list, start, end) respectively.
- Added array_slice function test cases.
- Array slice syntax and documentation will be added in subsequent
changes.

Change-Id: Ic609676cc068e92c6342fb0fa4c9074ec4bd98bf
Reviewed-on: https://asterix-gerrit.ics.uci.edu/3031
Sonar-Qube: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Dmitry Lychagin <dm...@couchbase.com>


> Support array slicing in SQL++
> ------------------------------
>
>                 Key: ASTERIXDB-2476
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-2476
>             Project: Apache AsterixDB
>          Issue Type: Improvement
>          Components: COMP - Compiler, FUN - Functions
>    Affects Versions: 0.9.5
>            Reporter: Till
>            Assignee: Hussain Towaileb
>            Priority: Major
>
> Some programming languages support array slicing - the ability to extract sub arrays from array, which would be useful in SQL++. E.g. to retrieve the 2 elements in the middle of {{["a","b","c","d"]}} one could write {{["a","b","c","d"][1:3]}} and get {{["b","c"]}}.
> To implement this, we should first add 2 functions {{array_slice}} with 2 and 3 parameters
>  # {{array}},
>  # {{start}}, and
>  # {{(optionally) end}}.
> The functions return {{NULL}} if
>  * {{array}} is not an array,
>  * {{start}} is not a number _or_ greater than the length of the array, or
>  * {{end}} is not a number _or_ greater than the length of the array _or_ less than {{start}}.
> Otherwise {{array_slice(array, start, end)}} returns a subset of the source array, containing the elements from position {{start}} to {{end-1}}. 
>  The element at {{start}} is included, while the element at {{end}} is not. 
>  The array index starts with 0. 
> In the 2 arguments variant, all elements from start to the end of the source array are included. 
>  Negative positions are counted backwards from the end of the array.
> With that function we can extend the parser to support the slicing syntax {{array_expression [start_expression : [ end_expression ] ]}} and parse this syntax into to a call of the function {{array_slice}} where a missing {{end_expression}} in the syntax is rewritten to the 2 argument variant.
> Standard semantics for {{NULL}} and {{MISSING}} parameters apply.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)