Re: IF NOT EXISTS option for CREATE SERVER and CREATE USER MAPPING statements
Anastasia Lubennikova <a.lubennikova@postgrespro.ru>
From: Anastasia Lubennikova <a.lubennikova@postgrespro.ru>
To: Artur Zakirov <a.zakirov@postgrespro.ru>,
Andrew Dunstan <andrew.dunstan@2ndquadrant.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-03-13T10:01:08Z
Lists: pgsql-hackers
Attachments
- create_foreign_server_if_not_exists_2.0.patch (text/x-patch) patch
- create_user_mapping_if_not_exists_2.0.patch (text/x-patch) patch
13.03.2017 11:53, Artur Zakirov:
> On 15.02.2017 20:54, Anastasia Lubennikova wrote:
>>
>> Done.
>>
>
> I have gotten the error that AlterUserMappingStmt doesn't have
> if_not_exists (in Russian):
>
>> gram.y: В функции «base_yyparse»:
>> gram.y:4918:7: ошибка: «AlterUserMappingStmt {aka struct
>> AlterUserMappingStmt}» не содержит элемента с именем «if_not_exists»
>> n->if_not_exists = false;
>> ^~
>
> After applying the CREATE USER patch in gram.y I have:
>
>>
>> AlterUserMappingStmt: ALTER USER MAPPING FOR auth_ident SERVER name
>> alter_generic_options
>> {
>> AlterUserMappingStmt *n =
>> makeNode(AlterUserMappingStmt);
>> n->user = $5;
>> n->servername = $7;
>> n->options = $8;
>> n->if_not_exists = false;
>> $$ = (Node *) n;
>> }
>> | CREATE USER MAPPING IF_P NOT EXISTS FOR auth_ident
>> SERVER name create_generic_options
>> {
>> CreateUserMappingStmt *n =
>> makeNode(CreateUserMappingStmt);
>> n->user = $8;
>> n->servername = $10;
>> n->options = $11;
>> n->if_not_exists = true;
>> $$ = (Node *) n;
>> }
>> ;
>
> Here ALTER USER MAPPING and CREATE USER MAPPING commands were mixed.
>
Thanks for catching that.
It was caused by a conflict on applying of the patch.
Updated versions of both patches are attached.
--
Anastasia Lubennikova
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
Commits
-
Add IF NOT EXISTS for CREATE SERVER and CREATE USER MAPPING
- b6fb534f10e1 10.0 landed