cockroachdb / cockroachdb/cockroach

plpgsql: support accessing variables via `label.var_name` pattern

Open
#122,322 0 comments 0 reactions 0 assignees View on GitHub
A-sql-plpgsql A-sql-routine C-enhancement docs-done docs-known-limitation O-qa T-sql-queries
Dominant language
Go
Stars
32.5k
Forks
4.1k
PR merge metrics
PR metrics pending

Description

This works in Postgres:
```sql
DROP PROCEDURE IF EXISTS p;
CREATE PROCEDURE p() LANGUAGE PLpgSQL AS $$
BEGIN
<>
DECLARE
v text := 'test';
BEGIN
RAISE NOTICE '%', label.v;
END;
END;
$$;
```
Note that support for this access pattern makes sense the most when variable shadowing is allowed (#117508).

Relatedly, it's possible to access the input arguments via `routine-name.arg-name` pattern:
```sql
DROP PROCEDURE IF EXISTS p;
CREATE PROCEDURE p(param1 INT, param2 TEXT) LANGUAGE PLpgSQL AS $$
BEGIN
RAISE NOTICE '% %', p.param1, p.param2;
END;
$$;
CALL p(3, 'foo');
```

Jira issue: CRDB-37800

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.