TABLE

It is a table-valued function that converts a PSQL array to a set of rows.

Syntax

TABLE( [DISTINCT] array)

Arguments

  • array: A PSQL array of scalar values.

Return Type

A set of table-type rows.

Remarks

  • It returns a single column of output named table_col, with one row for each array entry.

  • The TABLE() function can be used only in the FROM clause of a query.

  • The array argument to the TABLE() function must contain only scalar values of valid column data types.

  • Array of RECORDS and multi-dimensional arrays are not supported as arguments to the TABLE() function.

  • PSQL arrays are not supported as a table data type or array literals in SingleStore Helios queries.

  • When used as a reference to the second (or subsequent) table in the FROM clause (with an argument that is correlated), if the array value passed to TABLE() has N entries, the output will have N * number_of_values_from_the_table_on_the_left rows. The values from the table to the left will be repeated for each array entry.

  • The TABLE function supports DISTINCT. DISTINCT will de-duplicate the array argument and will generate a table with unique values only.

Examples

Example 1

SELECT * FROM TABLE([1,2,3]);
+------------+
| table_col  |
+------------+
|   1        |
|   2        |
|   3        |
+------------+
SELECT * FROM TABLE(["hello", "world"]);
+-----------+
| table_col |
+-----------+
| hello     |
| world     |
+-----------+
2 rows in set (0.04 sec)
SELECT * FROM TABLE(JSON_TO_ARRAY('[1,2,3]'));
+------------+
| table_col  |
+------------+
|   1        |
|   2        |
|   3        |
+------------+

Example 2

In the FROM clause, if the table on the left has 2 rows and the array passed to TABLE() has 2 entries, the output will have 4 rows (2*2). For example,

CREATE TABLE num (x int);
INSERT INTO num VALUES (1),(2);
SELECT * FROM num, TABLE([1,2]);
+------+-----------+
| x    | table_col |
+------+-----------+
|    1 | 1         |
|    1 | 2         |
|    2 | 1         |
|    2 | 2         |
+------+-----------+

Example 3

The following example demonstrates the usage of TABLE() function through UDFs.

CREATE TABLE square
(num INT PRIMARY KEY);
INSERT INTO square VALUES (1),(2),(3),(4),(5);
DELIMITER //
CREATE OR REPLACE FUNCTION to_array (x INT)
RETURNS ARRAY(INT) AS
DECLARE
arr ARRAY(INT) = CREATE_ARRAY(x+1);
BEGIN
FOR i IN 0..x LOOP
arr[i] = i * i;
END LOOP;
RETURN arr;
END //
DELIMITER ;
SELECT num, table_col AS "SQUARE"
FROM square INNER JOIN TABLE(to_array(6))
ON table_col = num*num ORDER BY num;
+-----+--------+
| num | SQUARE |
+-----+--------+
|   1 |      1 |
|   2 |      4 |
|   3 |      9 |
|   4 |     16 |
|   5 |     25 |
+-----+--------+

Example 4

The TABLE function can be used to expand a field in a table.

CREATE TABLE empRole(Name varchar(20), Role JSON);
INSERT INTO empRole VALUES
('Adam', '["Team Lead","Security Engineer"]'),
('Mary','["Product Manager"]');
SELECT * FROM empRole;
+-------+-----------------------------------+
| Name  | Role                              |
+-------+-----------------------------------+
| Adam  | ["Team Lead","Security Engineer"] |
| Mary  | ["Product Manager"]               |
+------+------------------------------------+
SELECT Name, table_col AS "Title" FROM empRole
JOIN TABLE(JSON_TO_ARRAY(Role));
+------+---------------------+
| Name | Title               |
+------+---------------------+
| Adam | "Team Lead"         |
| Adam | "Security Engineer" |
| Mary | "Product Manager"   |
+------+---------------------+

Example 5

SELECT * 
FROM TABLE(DISTINCT [1,1,2,3]);
+------------+
| table_col  |
+------------+
|   1        |
|   2        |
|   3        |
+------------+

Last modified: November 7, 2024

Was this article helpful?

Verification instructions

Note: You must install cosign to verify the authenticity of the SingleStore file.

Use the following steps to verify the authenticity of singlestoredb-server, singlestoredb-toolbox, singlestoredb-studio, and singlestore-client SingleStore files that have been downloaded.

You may perform the following steps on any computer that can run cosign, such as the main deployment host of the cluster.

  1. (Optional) Run the following command to view the associated signature files.

    curl undefined
  2. Download the signature file from the SingleStore release server.

    • Option 1: Click the Download Signature button next to the SingleStore file.

    • Option 2: Copy and paste the following URL into the address bar of your browser and save the signature file.

    • Option 3: Run the following command to download the signature file.

      curl -O undefined
  3. After the signature file has been downloaded, run the following command to verify the authenticity of the SingleStore file.

    echo -n undefined |
    cosign verify-blob --certificate-oidc-issuer https://oidc.eks.us-east-1.amazonaws.com/id/CCDCDBA1379A5596AB5B2E46DCA385BC \
    --certificate-identity https://kubernetes.io/namespaces/freya-production/serviceaccounts/job-worker \
    --bundle undefined \
    --new-bundle-format -
    Verified OK