[ https://issues.apache.org/jira/browse/CASSANDRA-18078?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17640679#comment-17640679 ]
Andres de la Peña commented on CASSANDRA-18078: ----------------------------------------------- Here is a patch showing how the removal of {{maxwritetime}} would look like: ||PR||CI|| |[trunk|https://github.com/apache/cassandra/pull/2032]|[j8|https://app.circleci.com/pipelines/github/adelapena/cassandra/2520/workflows/96c76fe9-95d4-4d4d-9a28-2fa8651b7abe] [j11|https://app.circleci.com/pipelines/github/adelapena/cassandra/2520/workflows/e19c0258-cd3c-4864-a103-187a2d0a81de]| I have preserved the original test cases, even when they are also a bit redundant since we have separate tests for {{writetime}} and {{collection_max}}. > 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 > Time Spent: 10m > Remaining Estimate: 0h > > CASSANDRA-17456 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_min(writetime(v)) FROM t; > SELECT collection_avg(writetime(v)) FROM t; > SELECT collection_min(ttl(v)) FROM t; > SELECT collection_min(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