Bitmap cardinality calculation functions
Bitmap cardinality calculation functions are used to calculate the cardinality of bitmap data. The following functions are supported in seekdb: rb_cardinality(), rb_and_cardinality(), rb_or_cardinality(), rb_xor_cardinality(), rb_andnot_cardinality(), rb_and_null2empty_cardinality(), rb_or_null2empty_cardinality(), rb_andnot_null2empty_cardinality(), rb_or_cardinality_agg(), and rb_and_cardinality_agg().
rb_cardinality
The rb_cardinality() function returns the cardinality of the input bitmap data. Syntax:
rb_cardinality(rb)
Example:
SELECT rb_cardinality(rb_from_string('1,2,3'));
+-----------------------------------------+
| rb_cardinality(rb_from_string('1,2,3')) |
+-----------------------------------------+
| 3 |
+-----------------------------------------+
1 row in set (0.001 sec)
rb_and_cardinality and rb_and_null2empty_cardinality
The rb_and_cardinality() function returns the cardinality of the new bitmap data obtained after performing an AND operation on two bitmap data sets. Syntax:
rb_and_cardinality(rb1, rb2)
The order of the parameters rb1 and rb2 does not affect the result.
Example:
SELECT rb_and_cardinality(rb_from_string('1,2,3'), rb_from_string('2,3,4'));
+----------------------------------------------------------------------+
| rb_and_cardinality(rb_from_string('1,2,3'), rb_from_string('2,3,4')) |
+----------------------------------------------------------------------+
| 2 |
+----------------------------------------------------------------------+
1 row in set (0.001 sec)
SELECT rb_and_cardinality(rb_from_string('1,2,3'), NULL);
+---------------------------------------------------+
| rb_and_cardinality(rb_from_string('1,2,3'), NULL) |
+---------------------------------------------------+
| NULL |
+---------------------------------------------------+
1 row in set (0.001 sec)
The rb_and_null2empty_cardinality() function has the same calculation logic as the rb_and_cardinality() function, but treats empty inputs as empty bitmap data.
SELECT rb_and_null2empty_cardinality(rb_from_string('1,2,3'), NULL);
+--------------------------------------------------------------+
| rb_and_null2empty_cardinality(rb_from_string('1,2,3'), NULL) |
+--------------------------------------------------------------+
| 0 |
+--------------------------------------------------------------+
1 row in set (0.001 sec)
rb_or_cardinality and rb_or_null2empty_cardinality
The rb_or_cardinality() function returns the cardinality of the new bitmap data obtained after performing an OR operation on two bitmap data sets. Syntax:
rb_or_cardinality(rb1, rb2)
The order of the parameters rb1 and rb2 does not affect the result.
Example:
SELECT rb_or_cardinality(rb_from_string('1,2,3'), rb_from_string('2,3,4'));
+---------------------------------------------------------------------+
| rb_or_cardinality(rb_from_string('1,2,3'), rb_from_string('2,3,4')) |
+---------------------------------------------------------------------+
| 4 |
+---------------------------------------------------------------------+
1 row in set (0.001 sec)
SELECT rb_or_null2empty_cardinality(rb_from_string('1,2,3'), NULL);
+-------------------------------------------------------------+
| rb_or_null2empty_cardinality(rb_from_string('1,2,3'), NULL) |
+-------------------------------------------------------------+
| 3 |
+-------------------------------------------------------------+
1 row in set (0.001 sec)
The rb_or_null2empty_cardinality() function has the same calculation logic as the rb_or_cardinality() function, but treats empty inputs as empty bitmap data.
rb_xor_cardinality
The rb_xor_cardinality() function returns the cardinality of the new bitmap data obtained after performing an XOR operation on two bitmap data sets. Syntax:
rb_xor_cardinality(rb1, rb2)
The order of the parameters rb1 and rb2 does not affect the result.
Example:
SELECT rb_xor_cardinality(rb_from_string('1,2,3'), rb_from_string('2,3,4'));
+----------------------------------------------------------------------+
| rb_xor_cardinality(rb_from_string('1,2,3'), rb_from_string('2,3,4')) |
+----------------------------------------------------------------------+
| 2 |
+----------------------------------------------------------------------+
1 row in set (0.001 sec)
rb_andnot_cardinality and rb_andnot_null2empty_cardinality
The rb_andnot_cardinality() function returns the cardinality of the new bitmap data obtained after performing an AND NOT operation on two bitmap data sets. Syntax:
rb_andnot_cardinality(rb1, rb2)
This function calculates the difference between the parameter rb1 and rb2, and returns the cardinality of the bitmap data values rb1 - rb2.
Example:
SELECT rb_andnot_cardinality(rb_from_string('1,2,3'), rb_from_string('2,3,4'));
+-------------------------------------------------------------------------+
| rb_andnot_cardinality(rb_from_string('1,2,3'), rb_from_string('2,3,4')) |
+-------------------------------------------------------------------------+
| 1 |
+-------------------------------------------------------------------------+
1 row in set (0.001 sec)
SELECT rb_andnot_null2empty_cardinality(rb_from_string('1,2,3'), NULL);
+-----------------------------------------------------------------+
| rb_andnot_null2empty_cardinality(rb_from_string('1,2,3'), NULL) |
+-----------------------------------------------------------------+
| 3 |
+-----------------------------------------------------------------+
1 row in set (0.001 sec)
The rb_andnot_null2empty_cardinality() function has the same calculation logic as the rb_andnot_cardinality() function, but treats empty inputs as empty bitmap data.
rb_or_cardinality_agg
The rb_or_cardinality_agg() function is used to calculate the cardinality of the union of a bitmap column. Syntax:
rb_or_cardinality_agg(rb)
This function takes a bitmap column as input.
It returns the cardinality of the union of these bitmap columns.
Example:
CREATE TABLE t1(rb roaringbitmap);
INSERT INTO t1 VALUES (rb_from_string('1,2,3')),(rb_from_string('2,3,4'));
SELECT rb_or_cardinality_agg(rb) FROM t1;
+---------------------------+
| rb_or_cardinality_agg(rb) |
+---------------------------+
| 4 |
+---------------------------+
1 row in set (0.001 sec)
rb_and_cardinality_agg
The rb_and_cardinality_agg() function is used to calculate the cardinality of the intersection of a bitmap column. Syntax:
rb_and_cardinality_agg(rb)
This function takes a bitmap column as input.
It returns the cardinality of the intersection of these bitmap columns.
Example:
CREATE TABLE t2(rb roaringbitmap);
INSERT INTO t2 VALUES (rb_from_string('1,2,3')),(rb_from_string('2,3,4'));
SELECT rb_and_cardinality_agg(rb) FROM t2;
+----------------------------+
| rb_and_cardinality_agg(rb) |
+----------------------------+
| 2 |
+----------------------------+
1 row in set (0.001 sec)