diff options
Diffstat (limited to 'src/backend/commands/user.c')
-rw-r--r-- | src/backend/commands/user.c | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index 821dce3ce7b..4027c89b143 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -69,7 +69,7 @@ have_createrole_privilege(void) * CREATE ROLE */ Oid -CreateRole(CreateRoleStmt *stmt) +CreateRole(ParseState *pstate, CreateRoleStmt *stmt) { Relation pg_authid_rel; TupleDesc pg_authid_dsc; @@ -136,7 +136,8 @@ CreateRole(CreateRoleStmt *stmt) if (dpassword) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); dpassword = defel; if (strcmp(defel->defname, "encryptedPassword") == 0) encrypt_password = true; @@ -153,7 +154,8 @@ CreateRole(CreateRoleStmt *stmt) if (dissuper) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); dissuper = defel; } else if (strcmp(defel->defname, "inherit") == 0) @@ -161,7 +163,8 @@ CreateRole(CreateRoleStmt *stmt) if (dinherit) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); dinherit = defel; } else if (strcmp(defel->defname, "createrole") == 0) @@ -169,7 +172,8 @@ CreateRole(CreateRoleStmt *stmt) if (dcreaterole) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); dcreaterole = defel; } else if (strcmp(defel->defname, "createdb") == 0) @@ -177,7 +181,8 @@ CreateRole(CreateRoleStmt *stmt) if (dcreatedb) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); dcreatedb = defel; } else if (strcmp(defel->defname, "canlogin") == 0) @@ -185,7 +190,8 @@ CreateRole(CreateRoleStmt *stmt) if (dcanlogin) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); dcanlogin = defel; } else if (strcmp(defel->defname, "isreplication") == 0) @@ -193,7 +199,8 @@ CreateRole(CreateRoleStmt *stmt) if (disreplication) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); disreplication = defel; } else if (strcmp(defel->defname, "connectionlimit") == 0) @@ -201,7 +208,8 @@ CreateRole(CreateRoleStmt *stmt) if (dconnlimit) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); dconnlimit = defel; } else if (strcmp(defel->defname, "addroleto") == 0) @@ -209,7 +217,8 @@ CreateRole(CreateRoleStmt *stmt) if (daddroleto) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); daddroleto = defel; } else if (strcmp(defel->defname, "rolemembers") == 0) @@ -217,7 +226,8 @@ CreateRole(CreateRoleStmt *stmt) if (drolemembers) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); drolemembers = defel; } else if (strcmp(defel->defname, "adminmembers") == 0) @@ -225,7 +235,8 @@ CreateRole(CreateRoleStmt *stmt) if (dadminmembers) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); dadminmembers = defel; } else if (strcmp(defel->defname, "validUntil") == 0) @@ -233,7 +244,8 @@ CreateRole(CreateRoleStmt *stmt) if (dvalidUntil) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); dvalidUntil = defel; } else if (strcmp(defel->defname, "bypassrls") == 0) @@ -241,7 +253,8 @@ CreateRole(CreateRoleStmt *stmt) if (dbypassRLS) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("conflicting or redundant options"))); + errmsg("conflicting or redundant options"), + parser_errposition(pstate, defel->location))); dbypassRLS = defel; } else |