数组构造函数
数组构造函 数用于构建新的数组数据类型。seekdb 当前所支持的数组构造函数包括 array()、rb_build(),支持的运算符包括 []。
array
array() 函数用于构建一个数组数据。语法如下:
array(elem1, elem2, elem3, ..., elemN)
[elem1, elem2, elem3, ..., elemN]
elem1~elmenN:输入参数要求是相同的数据类型 ,目前支持的数组数据类型请参见数组数据类型概述。
示例如下:
SELECT array(1, 2, 3);
+----------------+
| array(1, 2, 3) |
+----------------+
| [1,2,3] |
+----------------+
1 row in set (0.001 sec)
rb_build
rb_build() 函数用于将基础类型为整数的数组数据转换为高效压缩位图数据(RoaringBitmap)。语法如下:
rb_build(arr)
输入参数说明如下:
arr传入的类型必须是一个数组类型。
返回值是包含 了数组所有元素的 RoaringBitmap。
约束如下:
- 数组不可包含空元素。
- 若数组为嵌套数组,递归取出每个子数组的基础元素,并插入到 Roaringbitmap 中。
- Roaringbitmap 支持插入无符号 64 位整数(uint64)和有符号 32 位整数(int32)数据。与 rb_from_string 的行为一致,输入的有符号 32 位整数负数,将被先转换为无符号 32 位整数,再插入到 RoaringBitmap 中。因此允许输入的整数范围是从有符号 32 位整数的最小值到无符号 64 位整数的最大值,即
[INT32_MIN, UINT64_MAX]。
示例如下:
SELECT rb_to_string(rb_build([1.2]));
ERROR 5083 (22000): Invalid data type for the operation
SELECT rb_to_string(rb_build([0,1,2]));
+---------------------------------+
| rb_to_string(rb_build([0,1,2])) |
+---------------------------------+
| 0,1,2 |
+---------------------------------+
1 row in set (0.001 sec)
SELECT rb_to_string(rb_build([[0,1],[2],[2,3]]));
+-------------------------------------------+
| rb_to_string(rb_build([[0,1],[2],[2,3]])) |
+-------------------------------------------+
| 0,1,2,3 |
+-------------------------------------------+
1 row in set (0.001 sec)
[]
运算符 [] 也可以实现数组数据的构造,示例如下:
SELECT [1, 2, 3];
+-----------+
| [1, 2, 3] |
+-----------+
| [1,2,3] |
+-----------+
1 row in set (0.001 sec)