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 OR REPLACE FUNCTION arraycol (v anyelement, n int, i int, OUT r anyarray)
LANGUAGE plpgsql IMMUTABLE PARALLEL SAFE AS
$func$
BEGIN
r := array_fill(NULLIF(v, v), ARRAY[n]);
-- if i > n then this assignment auto-fills positions in between with null
r[i] := v;
END
$func$;
CREATE FUNCTION
SELECT arraycol (1, 3, 2);
SELECT arraycol (1, 3, 4);

SELECT arraycol ('2024-1-1'::date, 3, 2);
SELECT arraycol ('2024-1-1'::date, 3, 4);
arraycol
{NULL,1,NULL}
SELECT 1
arraycol
{NULL,NULL,NULL,1}
SELECT 1
arraycol
{NULL,2024-01-01,NULL}
SELECT 1
arraycol
{NULL,NULL,NULL,2024-01-01}
SELECT 1
CREATE OR REPLACE FUNCTION arraycol2 (v anyelement, n int, i int, OUT r anyarray)
LANGUAGE plpgsql IMMUTABLE PARALLEL SAFE AS
$func$
BEGIN
r[1] := null; -- assuming 1-based indexes!
r[i] := v; -- auto-fills positions in between with null
IF n > i THEN
r[n] := null;
END IF;
END
$func$;
CREATE FUNCTION
SELECT arraycol2 (1, 3, 2);
SELECT arraycol2 (1, 3, 4);

SELECT arraycol2 ('2024-1-1'::date, 3, 2);
SELECT arraycol2 ('2024-1-1'::date, 3, 4);
arraycol2
{NULL,1,NULL}
SELECT 1
arraycol2
{NULL,NULL,NULL,1}
SELECT 1
arraycol2
{NULL,2024-01-01,NULL}
SELECT 1
arraycol2
{NULL,NULL,NULL,2024-01-01}
SELECT 1