From 78c916e0dd68e9d02ad77f2b2178a422701ee376 Mon Sep 17 00:00:00 2001 From: lsv Date: Wed, 30 Sep 2020 17:20:04 +0500 Subject: [PATCH] fix view ROLE grant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Убраны повторяющиеся разделители ";" при выводе прав для роли --- schema/pgRole.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/schema/pgRole.cpp b/schema/pgRole.cpp index 4da8504..7f3e29a 100644 --- a/schema/pgRole.cpp +++ b/schema/pgRole.cpp @@ -354,19 +354,21 @@ wxT(") aa where aa.grantee='")+GetName()+("' group by type,objname,grantee order wxString addgrant=wxEmptyString; while (!roles->Eof()) { + bool ad = true; if (wxT("tables")==roles->GetVal(wxT("type")) ) { addgrant += wxT("\nGRANT ") + roles->GetVal(wxT("priv")) + wxT(" ON TABLE ") + qtIdent(roles->GetVal(wxT("objname")).BeforeFirst('.'))+wxT(".")+qtIdent(roles->GetVal(wxT("objname")).AfterFirst('.')) + wxT(" TO ") + qtIdent(GetName()); - } - if (wxT("routine")==roles->GetVal(wxT("type")) ) { - addgrant += wxT("\nGRANT EXECUTE ON FUNCTION ") + qtIdent(roles->GetVal(wxT("objname")).BeforeFirst('.'))+wxT(".")+qtIdent(roles->GetVal(wxT("objname")).AfterFirst('.')) - + wxT(" TO ") + qtIdent(GetName()); - } - if (wxT("schema")==roles->GetVal(wxT("type")) ) { - addgrant += wxT("\nGRANT USAGE ON SCHEMA ") + qtIdent(roles->GetVal(wxT("objname"))) - + wxT(" TO ") + qtIdent(GetName()); - } - addgrant += wxT(";"); + } else if (wxT("routine")==roles->GetVal(wxT("type")) ) { + addgrant += wxT("\nGRANT EXECUTE ON FUNCTION ") + qtIdent(roles->GetVal(wxT("objname")).BeforeFirst('.'))+wxT(".")+qtIdent(roles->GetVal(wxT("objname")).AfterFirst('.')) + + wxT(" TO ") + qtIdent(GetName()); + } else if (wxT("schema")==roles->GetVal(wxT("type")) ) { + addgrant += wxT("\nGRANT USAGE ON SCHEMA ") + qtIdent(roles->GetVal(wxT("objname"))) + + wxT(" TO ") + qtIdent(GetName()); + } + else { + ad = false; + } + if (ad) addgrant += wxT(";"); roles->MoveNext(); } sql += wxT("\n")+ addgrant + wxT("\n");