PostgreSQL error: function does not exist

ERROR:  function round(double precision, integer) does not exist
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

The message is precise in a way that is easy to misread: PostgreSQL is not saying "round does not exist" — it is saying no round exists that takes (double precision, integer). The function is usually there, with a different signature, and the HINT about explicit casts is the actual fix more often than not.

What this error means

PostgreSQL resolves functions by name and argument types (overloading), with limited implicit casting. The sample is the canonical case: two-argument round() exists for numeric, not for double precision — so round(x, 2) on a float column fails until you cast. The same mechanism produces operator does not exist: text = integer for comparisons between mismatched types.

Common causes

How to diagnose it

\df round        -- firme disponibili per nome
\dx              -- estensioni installate

-- La funzione esiste da qualche parte fuori search_path?
SELECT n.nspname, p.proname
FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace
WHERE p.proname = 'uuid_generate_v4';

How to fix it

🔍 Same resolution machinery, table edition: relation does not exist.