add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
CREATE TABLE users (id int, school_id int, name varchar(32));

INSERT INTO users VALUES
(42, 1, 'foo')
, (43, 2, 'bar');
CREATE TABLE
INSERT 0 2
CREATE OR REPLACE FUNCTION get_object_fields1(_school_id int
, OUT user1_id int
, OUT user1_name varchar(32)
, OUT user2_id int
, OUT user2_name varchar(32)) AS
$func$
BEGIN
SELECT INTO user1_id, user1_name
u.id, u.name
FROM users u
WHERE u.school_id = _school_id;

user2_id := user1_id + 1; -- some calculation

SELECT INTO user2_name
u.name
FROM users u
WHERE u.id = user2_id;
END
$func$ LANGUAGE plpgsql;

SELECT * FROM get_object_fields1(1);

CREATE FUNCTION
user1_id user1_name user2_id user2_name
42 foo 43 bar
SELECT 1
CREATE OR REPLACE FUNCTION get_object_fields2(_school_id int)
RETURNS TABLE (user1_id int
, user1_name varchar(32)
, user2_id int
, user2_name varchar(32)) AS
$func$
BEGIN
RETURN QUERY
SELECT u1.id, u1.name, u2.id, u2.name
FROM users u1
JOIN users u2 ON u2.id = u1.id + 1
WHERE u1.school_id = _school_id
LIMIT 1; -- may be optional
END
$func$ LANGUAGE plpgsql;

SELECT * FROM get_object_fields2(1);

CREATE FUNCTION
user1_id user1_name user2_id user2_name
42 foo 43 bar
SELECT 1