Details
-
Bug
-
Status: Open
-
Critical
-
Resolution: Unresolved
-
0.8.0
Description
I believe our TRUNC function is modeled on Postgres TRUNC function.
Semandics of Postgres TRUNC function:
postgres=# select trunc(1234.1234); trunc ------- 1234 (1 row) postgres=# select trunc(1234.1234, 0); trunc ------- 1234 (1 row) postgres=# select trunc(1234.1234, 2); trunc --------- 1234.12 (1 row) postgres=# select trunc(1234.1234, -1); trunc ------- 1230 (1 row) postgres=# select trunc(1234.1234, -3); trunc ------- 1000 (1 row)
This is incorrect, I can't truncate to zero decimal places:
0: jdbc:drill:schema=dfs> select trunc(1234.1234) from sys.options limit 1; +------------+ | EXPR$0 | +------------+ | 1234.0 | +------------+ 1 row selected (0.133 seconds) 0: jdbc:drill:schema=dfs> select trunc(1234.1234,0) from sys.options limit 1; +------------+ | EXPR$0 | +------------+ | 1234.0 | +------------+ 1 row selected (0.065 seconds)
Second negative parameter, does not do what it is supposed to do as well:
0: jdbc:drill:schema=dfs> select trunc(1234.1234, -1) from sys.options limit 1; +------------+ | EXPR$0 | +------------+ | 1230.0 | +------------+ 1 row selected (0.068 seconds) 0: jdbc:drill:schema=dfs> select trunc(1234.1234, -3) from sys.options limit 1; +------------+ | EXPR$0 | +------------+ | 1000.0 | +------------+ 1 row selected (0.072 seconds)