Функция исключения не существует при выполнении хранимой функции PostgreSQL через JDBC

У меня проблемы с вызовом функции PostgreSQL из JDBC при следующих обстоятельствах. Сохраненная функция endpoint_organizations определяется следующим образом:

postgres=# \df public.endpoint_organizations   
                                             List of functions
 Schema |          Name          |             Result data type             | Argument data types |  Type  
--------+------------------------+------------------------------------------+---------------------+--------
 public | endpoint_organizations | TABLE(organizationid integer, name text) | staffid1 integer    | normal
(1 row)

Я вызываю его из Java следующим образом:

int staffId = 1
PreparedStatement endpointOrganizations = connection.prepareStatement("SELECT * FROM endpoint_organizations (?)");
endpointOrganizations.setInt(1, staffId);
ResultSet resultSet = endpointOrganizations.executeQuery();

И я получаю это исключение:

org.postgresql.util.PSQLException: 
ERROR: function endpoint_organizations(integer) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 15

Что может быть причиной? Если я не ошибаюсь, это работало раньше. Я проверил дважды и трижды, но не вижу, что может вызвать проблему.


person Drux    schedule 02.10.2016    source источник
comment
У вас есть разрешение на выполнение этой функции с пользователем jdbc? Если не предоставить, выполните функцию endpoint_organizations;   -  person d1ll1nger    schedule 02.10.2016
comment
@ d1ll1nger Да, есть. Если я psql -U <user> в базу данных и select * from endpoint_organizations(1) туда, все работает нормально.   -  person Drux    schedule 02.10.2016


Ответы (1)


Это была (конечно) глупая ошибка с моей стороны. Я сделал последние обновления также для хранимой функции после подключения к PostgreSQL с psql -U <user> вместо psql -U <user> <database>, т.е. обновления затронули базу данных postgres вместо <database>, тогда как JDBC подключился к <database>.

После выполнения обновлений в нужной базе данных все возвращается на круги своя.

person Drux    schedule 02.10.2016