Built-in Function Call

Synopsis

Function call expression applies the specified function to to given arguments between parentheses and return the result of the computation.

Syntax

  1. function_call ::= function_name '(' [ arguments ... ] ')'

Builtin Functions

FunctionReturn TypeArgument TypeDescription
BlobAs<Type><Type>(BLOB)Converts a value from BLOB
<Type>AsBlobBLOB(<Type>)Converts a value to BLOB
DateOfTIMESTAMP(TIMEUUID)Conversion
MaxTimeUuidTIMEUUID(TIMESTAMP)Returns the associated max time uuid
MinTimeUuidTIMEUUID(TIMESTAMP)Returns the associated min time uuid
CurrentDateDATE()Return the system current date
CurrentTimeTIME()Return the system current time of day
CurrentTimestampTIMESTAMP()Return the system current timestamp
NowTIMEUUID()Returns the UUID of the current timestamp
TTLBIGINT(<AnyType>)Get time-to-live of a column
ToDateDATE(TIMESTAMP)Conversion
ToDateDATE(TIMEUUID)Conversion
ToTimeTIME(TIMESTAMP)Conversion
ToTimeTIME(TIMEUUIDConversion
ToTimestamp(TIMESTAMP)(DATE)Conversion
ToTimestamp(TIMESTAMP)(TIMEUUID)Conversion
ToUnixTimestampBIGINT(DATE)Conversion
ToUnixTimestampBIGINT(TIMESTAMP)Conversion
ToUnixTimestampBIGINT(TIMEUUID)Conversion
UnixTimestampOfBIGINT(TIMEUUID)Conversion
UUIDUUID()Returns a version 4 UUID
WriteTimeBIGINT(<AnyType>)Returns the timestamp when the column was written
partition_hashBIGINT()Computes the partition hash value (uint16) for the partition key columns of a row

Aggregate Functions

FunctionDescription
COUNTReturns number of selected rows
SUMReturns sums of column values
AVGReturns the average of column values
MINReturns the minimum value of column values
MAXReturns the maximum value of column values

Semantics

  • The argument data types must be convertible to the expected type for that argument that was specified by the function definition.
  • Function execution will return a value of the specified type by the function definition.
  • YugabyteDB allows function calls to be used any where that expression is allowed.

Cast function

  1. cast_call ::= CAST '(' column AS type ')'

CAST function converts the value returned from a table column to the specified data type.

Source Column TypeTarget Data Type
BIGINTSMALLINT, INT, TEXT
BOOLEANTEXT
DATETEXT, TIMESTAMP
DOUBLEBIGINT, INT, SMALLINT, TEXT
FLOATBIGINT, INT, SMALLINT, TEXT
INTBIGINT, SMALLINT, TEXT
SMALLINTBIGINT, INT, TEXT
TIMETEXT
TIMESTAMPDATE, TEXT
TIMEUUIDDATE, TIMESTAMP

partition_hash function

partition_hash is a function that takes as arguments the partition key columns of the primary key of a row andreturns a uint16 hash value representing the hash value for the row used for partitioning the table.The hash values used for partitioning fall in the 0-65535 (uint16) range.Tables are partitioned into tablets, with each tablet being responsible for a range of partition values.The partition_hash of the row is used to decide which tablet the row will reside in.

partition_hash can be handy for querying a subset of the data to get approximate row counts or to breakdownfull-table operations into smaller sub-tasks that can be run in parallel.

Querying a subset of the data

One use of partition_hash is to query a subset of the data and get approximate count of rows in the table.For example, suppose we have a table t with partitioning columns (h1,h2):

  1. create table t (h1 int, h2 int, r1 int, r2 int, v int,
  2. primary key ((h1, h2), r1, r2));

We can use this function to query a subset of the data (in this case, 1128 of the data):

  1. select count(*) from t where partition_hash(h1, h2) >= 0 and
  2. partition_hash(h1, h2) < 512;

The value 512 comes from dividing the full hash partition range by the number of subsets that we want to query (65536/128=512).

Parallel full table scans

To do a distributed scan, we can issue, in this case, 128 queries each using a different hash range:

  1. .. where partition_hash(h1, h2) >= 0 and partition_hash(h1, h2) < 512;
  1. .. where partition_hash(h1, h2) >= 512 and partition_hash(h1, h2) <1024 ;

and so on, till the last segment/range of 512 in the partition space:

  1. .. where partition_hash(h1, h2) >= 65024;

WriteTime function

The WriteTime function returns the timestamp in microseconds when a column was written.For example, suppose we have a table page_views with a column named views:

  1. SELECT writetime(views) FROM page_views;
  2. writetime(views)
  3. ------------------
  4. 1572882871160113
  5. (1 rows)

TTL function

The TTL function returns the number of seconds until a column or row expires.Assuming we have a table page_views and a column named views:

  1. SELECT TTL(views) FROM page_views;
  2. ttl(views)
  3. ------------
  4. 86367
  5. (1 rows)

Examples

  1. cqlsh:example> CREATE TABLE test_cast (k INT PRIMARY KEY, ts TIMESTAMP);
  1. cqlsh:example> INSERT INTO test_cast (k, ts) VALUES (1, '2018-10-09 12:00:00');
  1. cqlsh:example> SELECT CAST(ts AS DATE) FROM test_cast;

  1. cast(ts as date)

  1. 2018-10-09

See also