Re: Table as argument in postgres function

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: Table as argument in postgres function
Дата
Msg-id CAFj8pRAbDsUZxk_wQd9o1HKoZN3gM_rCEEYh9ZOBkYQFBX=kow@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Table as argument in postgres function  (Corey Huinker <corey.huinker@gmail.com>)
Ответы Re: Table as argument in postgres function  (Corey Huinker <corey.huinker@gmail.com>)
Список pgsql-hackers


po 20. 5. 2019 v 7:56 odesílatel Corey Huinker <corey.huinker@gmail.com> napsal:

You can pass table name as text or table object id as regclass type.

inside procedure you should to use dynamic sql - execute statement. Generally you cannot to use a variable as table or column name ever.

Dynamic SQL is other mechanism - attention on SQL injection.

On this note, Snowflake has the ability to to parameterize object names (see: https://docs.snowflake.net/manuals/sql-reference/identifier-literal.html )

So you can do things like
    SELECT col_a, col_b FROM identifier('a_table_name')
or as a bind variable
    SELECT col_a, col_b FROM identifier($1)

Which is their way of avoiding SQL injection attacks in some circumstances. Their implementation of it is a bit uneven, but it has proven useful for my work.

I can see where this obviously would prevent the planning of a prepared statement when a table name is a parameter, but the request comes up often enough, and the benefits to avoiding SQL injection attacks are significant enough that maybe we should try to enable it for one-off. I don't necessarily think we need an identifier(string) function, a 'schema.table'::regclass would be more our style.

Is there anything preventing us from having the planner resolve object names from strings?

The basic problem is fact so when you use PREPARE, EXECUTE protocol, you has not parameters in planning time. 

Regards

Pavel

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

Предыдущее
От: Corey Huinker
Дата:
Сообщение: Re: Table as argument in postgres function
Следующее
От: Kyotaro HORIGUCHI
Дата:
Сообщение: Re: [HACKERS] WAL logging problem in 9.4.3?