PERFORM

PERFORM executes a SELECT query without returning its result rows to the client.

Description

PERFORM <select> executes the query completely, including its normal permission checks and side effects, but suppresses result rows in the client response. Only SELECT queries are supported. A plain SELECT, a CTE query, or a query combined with UNION/UNION ALL can follow PERFORM.

ROW_COUNT() returns 0 for a PERFORM statement. When save_query_result is enabled, the result can still be read from the internal result store with RESULT_SCAN; PERFORM does not unconditionally discard that internal result.

PERFORM ... INTO OUTFILE is not supported.

Syntax

PERFORM select_statement

Arguments

PERFORM takes one SELECT query, optionally containing a WITH clause or set operators such as UNION and UNION ALL.

Examples

DROP DATABASE IF EXISTS perform_demo;
CREATE DATABASE perform_demo;
USE perform_demo;

CREATE TABLE perform_t (v INT);
INSERT INTO perform_t VALUES (3), (1), (2);
PERFORM SELECT v FROM perform_t ORDER BY v;
PERFORM SELECT v FROM perform_t WHERE v = 1 UNION ALL SELECT v FROM perform_t WHERE v = 3;
PERFORM WITH ordered AS (SELECT v FROM perform_t ORDER BY v) SELECT v FROM ordered;
SELECT ROW_COUNT() AS rows_returned;

DROP DATABASE perform_demo;

The following form is rejected:

-- Expected-Success: false
PERFORM SELECT 1 INTO OUTFILE '/tmp/perform.txt';