(See http://dev.mysql.com/doc/refman/5.6/en/grant-table-structure.html Table 6.7. Set-Type Privilege Column Values Section) Change-Id: I6173ba0df84f722a872afa59d7d7dc9eefe3e368 Reviewed-on: https://gerrit.libreoffice.org/7155 Reviewed-by: Lionel Elie Mamane <lionel@mamane.lu> Tested-by: Lionel Elie Mamane <lionel@mamane.lu>
32 lines
1.5 KiB
Groff
32 lines
1.5 KiB
Groff
diff -ur mysqlcppconn.org/driver/mysql_metadata.cpp mysqlcppconn/driver/mysql_metadata.cpp
|
|
--- mysqlcppconn.org/driver/mysql_metadata.cpp 2013-12-20 22:12:07.044698692 +0100
|
|
+++ mysqlcppconn/driver/mysql_metadata.cpp 2013-12-20 22:14:56.320394472 +0100
|
|
@@ -3633,12 +3633,14 @@
|
|
- sql::SQLString strAllPrivs("ALTER, DELETE, DROP, INDEX, INSERT, LOCK TABLES, SELECT, UPDATE");
|
|
+ sql::SQLString strAllPrivs("SELECT, INSERT, UPDATE, DELETE, CREATE, DROPT, GRANT, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER");
|
|
|
|
sql::SQLString cQuote(getIdentifierQuoteString());
|
|
+ size_t posIsGrantable = sql::SQLString::npos;
|
|
|
|
while (rs->next() ) {
|
|
sql::SQLString aGrant = rs->getString(1);
|
|
aGrant = aGrant.replace(0, 6, "");
|
|
|
|
size_t pos = aGrant.find("ALL PRIVILEGES");
|
|
+ posIsGrantable = aGrant.find("WITH GRANT OPTION");
|
|
|
|
if (pos != sql::SQLString::npos) {
|
|
aGrant = aGrant.replace(pos, sizeof("ALL PRIVILEGES") - 1, strAllPrivs);
|
|
@@ -3737,7 +3739,10 @@
|
|
rs_data_row.push_back(""); // GRANTOR
|
|
rs_data_row.push_back(getUserName()); // GRANTEE
|
|
rs_data_row.push_back(privToken); // PRIVILEGE
|
|
- rs_data_row.push_back(""); // IS_GRANTABLE - ToDo maybe here WITH GRANT OPTION??
|
|
+ if (posIsGrantable != sql::SQLString::npos)
|
|
+ rs_data_row.push_back("YES");
|
|
+ else
|
|
+ rs_data_row.push_back(""); // IS_GRANTABLE
|
|
|
|
rs_data->push_back(rs_data_row);
|
|
}
|