[
https://issues.apache.org/jira/browse/CALCITE-3345?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16930847#comment-16930847
]
Julian Hyde commented on CALCITE-3345:
--------------------------------------
We could follow the same approach as for other function sets: add an enum
constant 'TIMESCALE_DB' to enum SqlLibrary, and add a library function. For
comparison, see
[00ad79b6|https://github.com/apache/calcite/commit/00ad79b6bc95b68e02129b31be8a3a656517f8a8]
which fixes CALCITE-3263 and adds {{MD5}} and {{SHA1}} to MYSQL and POSTGRESQL
libraries.
I had a quick look at timescaleDB and there is some un-SQL-like stuff in there
that we would not wish to emulate, such as [this
behavior|https://docs.timescale.com/latest/api#time_bucket_gapfill] for
{{time_bucket_gapfill}}:
{quote}Starting with version 1.3.0 start and finish are optional arguments and
will be inferred from the WHERE clause if not supplied as arguments.{quote}
I have no objection to bringing in scalar functions into a timescaleDB
compatibility library, but if we start screwing around with SQL/relational
semantics it's going to be a long discussion. :)
> Implement time_bucket function
> ------------------------------
>
> Key: CALCITE-3345
> URL: https://issues.apache.org/jira/browse/CALCITE-3345
> Project: Calcite
> Issue Type: New Feature
> Reporter: Julian Feinauer
> Priority: Major
>
> See here for information on the `time_bucket` function:
> https://docs.timescale.com/latest/api#time_bucket
> This is a more powerful version of the standard PostgreSQL date_trunc
> function. It allows for arbitrary time intervals instead of the second,
> minute, hour, etc. provided by date_trunc. The return value is the bucket's
> start time.
> This would especially help with time averaging but keeps everything SQL
> compliant. E.g. queries like
> Example query from (https://www.timescale.com/):
> {code:sql}
> SELECT time_bucket('10 seconds', time) AS ten_second,
> machine_id, avg(temperature) AS "avgT",
> min(temperature) AS "minT", max(temperature) AS "maxT",
> last(temperature, time) AS "lastT"
> FROM measurements
> WHERE machine_id = 'C931baF7'
> AND time > now() - interval '150s'
> GROUP BY ten_second
> ORDER BY ten_second DESC;
> {code}
--
This message was sent by Atlassian Jira
(v8.3.2#803003)