Re: getMetaData().getUserName() implementation

Поиск
Список
Период
Сортировка
От Péter Kovács
Тема Re: getMetaData().getUserName() implementation
Дата
Msg-id CAO01x1G+B1y1KYBvRru+iuDPs268hzW4EXmMPKc-TrfY6_MWcg@mail.gmail.com
обсуждение исходный текст
Ответ на getMetaData().getUserName() implementation  (Thomas Hill <Thomas.K.Hill@t-online.de>)
Список pgsql-jdbc

As JDBC doesn't appear to distinguish between real and impersonated user, the safest is probably to bypass the JDBC API and use the native SQL API: http://www.postgresql.org/docs/8.3/static/functions-info.html

Peter

On Oct 8, 2012 12:27 AM, "Péter Kovács" <peter.dunay.kovacs@gmail.com> wrote:

The safest is probably to bypass the JDBC API and use the native SQL API: http://www.postgresql.org/docs/8.3/static/functions-info.html

Peter

On Oct 7, 2012 11:41 PM, "Thomas Hill" <Thomas.K.Hill@t-online.de> wrote:
Hello,

I have been using Apache Derby as data base backend for an application over the past years and am looking into adding PostgreSQL as an additional backend the application could be run against.
Obviously all stored procedure code I have written is in Java. All procedures/functions are defined with "Security definer" so they are executed with the privileges of the user that defined them.
So in a first step I installed the latest version of plJava on PostgreSQL 8.4 running on a Debian 6 Squeeze server and uploaded the jar files into the server.

In one of my procedures I am however noticing that the Apache Derby implementation and the PostgreSQL implementation are leading to different results.
When logging in as "Thomas" and then using jdbc function getMetaData().getUserName() *within* a stored procedure and returning the result to the calling program
- Apache Derby returns the session user, i.e. Thomas (and not the name of the data base or procedure owner [which is what CURRENT_USER when being called within the proc would return / but which is not what I need)
- PostgreSQL returns "postgres" whereas I would have expected it to also return "Thomas".

I am wondering if someone can explain why this is the case? and
how I can get around this "compatibility" issue?
If the driver implementations are different, any suggestion how to modify the java code so it would actually for both data base systems return the session_user?

Thanks a lot in advance.

Kind regards
Thomas




--
Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Thomas Hill
Дата:
Сообщение: getMetaData().getUserName() implementation
Следующее
От: "emergency.shower@gmail.com"
Дата:
Сообщение: Re: Severe performance degradation when using the 9.2-1000 JDBC 4 driver