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

Andres de la Peña commented on CASSANDRA-18078:
-----------------------------------------------

Thanks for the feedback.

In the latter example, the assumption is that the user knows the type of the 
column and will only use {{collection_max}} function when dealing with 
collections:
{code:java}
> CREATE TABLE test.max_ts ( a int PRIMARY KEY, b int, c list<int> );
> INSERT INTO max_ts ( a, b, c ) VALUES ( 1, 1, [1, 2, 3] );
> SELECT a, b, c, writetime(b), collection_max(writetime(c)) FROM max_ts WHERE 
> a = 1;

 a | b | c         | writetime(b)     | system.collection_max(writetime(c))
---+---+-----------+------------------+-------------------------------------
 1 | 1 | [1, 2, 3] | 1669820977087840 |                    1669820977087840
{code}
But I guess we can also consider that applying collection functions to a not 
collection type is equivalent to applying them to a singleton collection. So, 
for example, collection_max(2) = collection_max([2]) = 2. I have added a commit 
to the PR that does exactly that:
||PR||CI||
|[trunk|https://github.com/apache/cassandra/pull/2032]|[j8|https://app.circleci.com/pipelines/github/adelapena/cassandra/2521/workflows/e15c8205-bbf8-45a8-bc0f-eceb8eec9fca]
 
[j11|https://app.circleci.com/pipelines/github/adelapena/cassandra/2521/workflows/28c80583-3c80-4255-9a42-38344c8ca14b]|
 

> Consider removing MAXWRITETIME function
> ---------------------------------------
>
>                 Key: CASSANDRA-18078
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-18078
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: CQL/Syntax
>            Reporter: Andres de la Peña
>            Priority: Normal
>             Fix For: 4.2
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> CASSANDRA-17425 added a new {{MAXWRITETIME}} function that allows to retrieve 
> the maximum timestamp of a multi-cell column. For example:
> {code:java}
> > CREATE TABLE t (k int PRIMARY KEY, v set<int>);
> > INSERT INTO t (k, v) VALUES (1, {1, 2}) USING TIMESTAMP 100;
> > UPDATE t USING TIMESTAMP 200 SET v += {3} WHERE k=1;
> > SELECT maxwritetime(v) FROM t;
>  maxwritetime(v)
> -----------------
>              200
> {code}
> Later, CASSANDRA-8877 added the means to retrieve the write times and TTLs of 
> each of the cells in a multi-cell column:
> {code:java}
> > SELECT writetime(v) FROM t;
>  writetime(v)
> -----------------
>  [100, 100, 200]
> > SELECT writetime(v[1]) FROM t;
>  writetime(v[1])
> -----------------
>              100
> {code}
> Quite recently, CASSANDRA-18060 has added generic CQL functions to get the 
> min and max items in a collection. Those functions can be used in combination 
> with the classic {{writetime}} function to get the same results as the new 
> {{maxwritetime}} function:
> {code:java}
> > SELECT collection_max(writetime(v)) FROM t;
>  system.collection_max(writetime(v))
> -------------------------------------
>                                  200
> {code}
> Those new functions can also be used to get the min timestamp, or the min/max 
> TTL, for which there isn't a specific function:
> {code:java}
> SELECT collection_min(writetime(v)) FROM t;
> SELECT collection_max(writetime(v)) FROM t;
> SELECT collection_avg(writetime(v)) FROM t;
> SELECT collection_min(ttl(v)) FROM t;
> SELECT collection_max(ttl(v)) FROM t;
> SELECT collection_avg(ttl(v)) FROM t;
> {code}
> I think this makes the new {{maxwritetime}} mostly redundant, since the new 
> functions can achieve the same results in a more generic way. Since the new 
> {{maxwritetime}} function is only on trunk, we should consider whether we 
> want to remove it in favour of the generic functions.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to