Index: pgObject.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgObject.cpp,v retrieving revision 1.74 retrieving revision 1.75 diff -Lsrc/schema/pgObject.cpp -Lsrc/schema/pgObject.cpp -u -w -r1.74 -r1.75 --- src/schema/pgObject.cpp +++ src/schema/pgObject.cpp @@ -457,6 +457,22 @@ } +wxString pgObject::GetOwnerSql(int major, int minor, wxString objname) +{ + wxString sql; + if (GetConnection()->BackendMinimumVersion(major, minor)) + { +// if (GetConnection()->GetUser() != owner) // optional? + { + if (objname.IsEmpty()) + objname = GetTypeName().Upper() + wxT(" ") + GetQuotedFullIdentifier(); + sql = wxT("ALTER ") + objname + wxT(" OWNER TO ") + qtIdent(owner) + wxT(";\n"); + } + } + return sql; +} + + void pgObject::AppendRight(wxString &rights, const wxString& acl, wxChar c, wxChar *rightName) { if (acl.Find(c) >= 0) @@ -532,7 +548,7 @@ } -wxString pgObject::GetGrant(const wxString& allPattern, const wxString& _grantFor, bool noOwner) +wxString pgObject::GetGrant(const wxString& allPattern, const wxString& _grantFor) { wxString grant, str, user, grantFor; if (_grantFor.IsNull()) Index: pgFunction.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgFunction.cpp,v retrieving revision 1.39 retrieving revision 1.40 diff -Lsrc/schema/pgFunction.cpp -Lsrc/schema/pgFunction.cpp -u -w -r1.39 -r1.40 --- src/schema/pgFunction.cpp +++ src/schema/pgFunction.cpp @@ -79,6 +79,7 @@ if (GetSecureDefiner()) sql += wxT(" SECURITY DEFINER"); sql += wxT(";\n") + + GetOwnerSql(8, 0, qtName) + GetGrant(wxT("X"), qtName); if (!GetComment().IsNull()) Index: pgView.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgView.cpp,v retrieving revision 1.33 retrieving revision 1.34 diff -Lsrc/schema/pgView.cpp -Lsrc/schema/pgView.cpp -u -w -r1.33 -r1.34 --- src/schema/pgView.cpp +++ src/schema/pgView.cpp @@ -53,6 +53,7 @@ + wxT("\n\nCREATE OR REPLACE VIEW ") + GetQuotedFullIdentifier() + wxT(" AS \n") + GetFormattedDefinition() + wxT("\n\n") + + GetOwnerSql(7, 3, wxT("TABLE ") + GetQuotedFullIdentifier()) + GetGrant(wxT("arwdRxt"), wxT("TABLE ") + GetQuotedFullIdentifier()) + GetCommentSql(); } Index: pgSequence.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgSequence.cpp,v retrieving revision 1.27 retrieving revision 1.28 diff -Lsrc/schema/pgSequence.cpp -Lsrc/schema/pgSequence.cpp -u -w -r1.27 -r1.28 --- src/schema/pgSequence.cpp +++ src/schema/pgSequence.cpp @@ -71,6 +71,7 @@ sql += wxT("\n CYCLE"); AppendIfFilled(sql, wxT("\n TABLESPACE "), qtIdent(tablespace)); sql += wxT(";\n") + + GetOwnerSql(7, 3, wxT("TABLE ") + GetQuotedFullIdentifier()) + GetGrant(wxT("arwdRxt"), wxT("TABLE ") + GetQuotedFullIdentifier()) + GetCommentSql(); } Index: pgAggregate.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgAggregate.cpp,v retrieving revision 1.24 retrieving revision 1.25 diff -Lsrc/schema/pgAggregate.cpp -Lsrc/schema/pgAggregate.cpp -u -w -r1.24 -r1.25 --- src/schema/pgAggregate.cpp +++ src/schema/pgAggregate.cpp @@ -47,7 +47,8 @@ AppendIfFilled(sql, wxT(",\n FFUNC="), qtIdent(GetFinalFunction())); if (GetInitialCondition().length() > 0) sql += wxT(",\n INITCOND=") + qtString(GetInitialCondition()); - sql += wxT("\n);\n"); + sql += wxT("\n);\n") + + GetOwnerSql(8, 0); if (!GetComment().IsNull()) { Index: pgTable.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgTable.cpp,v retrieving revision 1.56 retrieving revision 1.57 diff -Lsrc/schema/pgTable.cpp -Lsrc/schema/pgTable.cpp -u -w -r1.56 -r1.57 --- src/schema/pgTable.cpp +++ src/schema/pgTable.cpp @@ -204,9 +204,9 @@ AppendIfFilled(sql, wxT(" TABLESPACE "), qtIdent(tablespace)); - sql += wxT(";\n"); - - sql += GetGrant(wxT("arwdRxt")) + sql += wxT(";\n") + + GetOwnerSql(7, 3) + + GetGrant(wxT("arwdRxt")) + GetCommentSql(); // Column comments Index: pgLanguage.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgLanguage.cpp,v retrieving revision 1.25 retrieving revision 1.26 diff -Lsrc/schema/pgLanguage.cpp -Lsrc/schema/pgLanguage.cpp -u -w -r1.25 -r1.26 --- src/schema/pgLanguage.cpp +++ src/schema/pgLanguage.cpp @@ -47,7 +47,7 @@ sql += wxT("TRUSTED "); sql += wxT("PROCEDURAL LANGUAGE '") + GetName() + wxT("'\n HANDLER ") + GetHandlerProc() + wxT(";\n") - + GetGrant(wxT("X"), wxT("LANGUAGE ") + GetQuotedFullIdentifier(), true); + + GetGrant(wxT("X"), wxT("LANGUAGE ") + GetQuotedFullIdentifier()); } return sql; Index: pgSchema.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgSchema.cpp,v retrieving revision 1.36 retrieving revision 1.37 diff -Lsrc/schema/pgSchema.cpp -Lsrc/schema/pgSchema.cpp -u -w -r1.36 -r1.37 --- src/schema/pgSchema.cpp +++ src/schema/pgSchema.cpp @@ -73,7 +73,7 @@ AppendIfFilled(sql, wxT(" TABLESPACE "), qtIdent(tablespace)); sql += wxT(";\n") - + GetGrant(wxT("UC"), wxT("SCHEMA ") + GetQuotedFullIdentifier(), true) + + GetGrant(wxT("UC"), wxT("SCHEMA ") + GetQuotedFullIdentifier()) + GetCommentSql(); } return sql; Index: pgType.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgType.cpp,v retrieving revision 1.23 retrieving revision 1.24 diff -Lsrc/schema/pgType.cpp -Lsrc/schema/pgType.cpp -u -w -r1.23 -r1.24 --- src/schema/pgType.cpp +++ src/schema/pgType.cpp @@ -62,6 +62,7 @@ + wxT(", STORAGE=") + GetStorage()); } sql += wxT(");\n") + + GetOwnerSql(8, 0) + GetCommentSql(); } Index: pgConversion.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgConversion.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -Lsrc/schema/pgConversion.cpp -Lsrc/schema/pgConversion.cpp -u -w -r1.19 -r1.20 --- src/schema/pgConversion.cpp +++ src/schema/pgConversion.cpp @@ -47,7 +47,8 @@ + wxT("\n FOR '") + GetForEncoding() + wxT("'") + wxT("\n TO '") + GetToEncoding() + wxT("'") + wxT("\n FROM ") + GetDatabase()->GetQuotedSchemaPrefix(GetProcNamespace()) - + qtIdent(GetProc()) + wxT(";\n"); + + qtIdent(GetProc()) + wxT(";\n") + + GetOwnerSql(8, 0); } return sql; Index: pgDomain.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgDomain.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -Lsrc/schema/pgDomain.cpp -Lsrc/schema/pgDomain.cpp -u -w -r1.22 -r1.23 --- src/schema/pgDomain.cpp +++ src/schema/pgDomain.cpp @@ -50,6 +50,7 @@ AppendIfFilled(sql, wxT("\n CHECK "), GetCheck()); sql += wxT(";\n") + + GetOwnerSql(7, 4) + GetCommentSql(); }