summaryrefslogtreecommitdiff
path: root/external/mysqlcppconn/patches/retrieve_grants.patch.1
blob: eb63cff9cbe59123143cf55aa58f04674642c033 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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);
 					}