sqlc icon indicating copy to clipboard operation
sqlc copied to clipboard

PostgreSQL: CALL fails analysis for procedures with OUT parameters (function does not exist)

Open Arthur-Sk opened this issue 2 weeks ago • 0 comments

Version

1.30.0

What happened?

SQLc fails to resolve the signature for PostgreSQL procedures that contain OUT parameters. Even when providing placeholders (like NULL::type or sqlc.arg), the analyzer cannot match the call to the schema definition.

Raw PostgreSQL CALL works fine.

Relevant log output

docker run --rm -v $(pwd):/src -w /src sqlc/sqlc:1.30.0 generate

# package sqlc
query.sql:2:6: function create_todo(unknown, unknown) does not exist
query.sql:5:6: function create_todo(unknown, unknown) does not exist
query.sql:8:6: function create_todo(unknown, unknown) does not exist

Database schema

CREATE TABLE todos (id serial PRIMARY KEY, task text);

CREATE PROCEDURE create_todo(IN p_task text, OUT p_id int)
LANGUAGE plpgsql AS $$
BEGIN
    INSERT INTO todos (task) VALUES (p_task) RETURNING id INTO p_id;
END;
$$;

SQL queries

-- name: CreateTodo1 :one
CALL create_todo(sqlc.arg(task)::text, null);

-- name: CreateTodo2 :one
CALL create_todo(sqlc.arg(task)::text, NULL::int);

-- name: CreateTodo3 :one
CALL create_todo(sqlc.arg(task)::text, sqlc.arg(id)::int);

Configuration

version: "2"
sql:
  - engine: "postgresql"
    queries: "query.sql"
    schema: "schema.sql"
    gen:
      go:
        package: "sqlc"
        out: "./sqlc"
        sql_package: "pgx/v5"
        emit_json_tags: true
        emit_db_tags: true
        emit_prepared_queries: false
        emit_interface: true
        emit_exact_table_names: false
        emit_empty_slices: true
        emit_exported_queries: true
        emit_result_struct_pointers: false
        emit_params_struct_pointers: false
        emit_methods_with_db_argument: false
        emit_pointers_for_null_types: true
        emit_enum_valid_method: true
        emit_all_enum_values: true
        json_tags_case_style: "snake"

Playground URL

No response

What operating system are you using?

Linux

What database engines are you using?

PostgreSQL

What type of code are you generating?

Go

Arthur-Sk avatar Dec 03 '25 15:12 Arthur-Sk