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); }