Lần ựầu tiên khi một hàm do người dùng ựịnh nghĩa ựược gọi là trong một phiên (session) khi dynamic loader thực hiện nạp một loadable object vào bộ nhớ ựể máy chủ có thể thực hiện lời gọi hàm. Lệnh tạo hàm cho một hàm viết bằng C ựược ựịnh nghĩa bởi người dùng cần phải chỉ ựịnh rõ hai thông tin: tên của
loadable object file và tên của hàm C trong object ựó. Nếu tên của hàm C không ựược chỉ ựịnh, trình biên dịch sẽ giả thiết là trùng với tên của hàm SQL.
Thuật toán sau ựược sử dụng ựể ựịnh vị một shared object file dựa vào tên ựược ựưa ra trong câu lệnh CREATE FUNCTION:
Ớ Nếu tên dưới dạng ựường dẫn tuyệt ựối, nó sẽ ựược nạp
Ớ Nếu tên bắt ựầu với chuỗi $libdir, chuỗi ựược thay thế bởi tên của thư mục chứa thư viện PostgreSQL.
Ớ Nếu tên không chứa ựường dẫn thư mục, object file sẽ ựược tìm kiếm
trong thư mục ựược xác ựịnh là giá trị của biến dynamic_library_path.
Ớ Ngoài ra (file không có trong ựường dẫn hoặc tên file chứa ựường dẫn thư
viện không tuyệt ựối), dynamic loader sẽ chỉ giữ lại tên file và thường không tìm thấy file ựược chỉ ựịnh.
Sau khi ựã thực hiện chuỗi các sự trên mà vẫn không tìm thấy file, phần mở rộng của tên file ựược thêm vào (thường là .so) và chuỗi các sự kiện trên ựược lặp lại. Trong tất cả các trường hợp trên, tên file thường ựược ghi lại trong bảng danh mục của hệ thống ựể khi cần, thủ tục tương tự ựược áp dụng.
Sau lần gọi ựầu tiên, các dynamically loaded object file sẽ ựược lưu lại trong bộ nhớ và các lời gọi hàm tiếp theo trong cùng phiên ựược tiến hành dựa trên một bảng tra cứu. Nếu muốn nạp lại một ựối tượng, chẳng hạn sau khi ựã biên dịch lại nó, người ta sử dụng câu lệnh LOAD hoặc bắt ựầu một phiên làm việc mới.
Người ta khuyến cáo rằng, các thư viện dùng chung cần phải ựược ựặt trong thư viện cài ựặt PostgreSQL. Muốn biết ựường dẫn thư viện thực tế mà $libdir ựại diện cho, sử dụng câu lệnh pg_config --pkglibdir.