summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--connectivity/source/drivers/mysql/YUser.cxx2
-rw-r--r--external/mysqlcppconn/UnpackedTarball_mysqlcppconn.mk1
-rw-r--r--external/mysqlcppconn/patches/retrieve_grants.patch.131
3 files changed, 33 insertions, 1 deletions
diff --git a/connectivity/source/drivers/mysql/YUser.cxx b/connectivity/source/drivers/mysql/YUser.cxx
index d44c34541a8e..aff9841f8dee 100644
--- a/connectivity/source/drivers/mysql/YUser.cxx
+++ b/connectivity/source/drivers/mysql/YUser.cxx
@@ -126,7 +126,7 @@ void OMySQLUser::findPrivilegesAndGrantPrivileges(const OUString& objName, sal_I
static const OUString sREAD( "READ" );
static const OUString sCREATE( "CREATE" );
static const OUString sALTER( "ALTER" );
- static const OUString sREFERENCE( "REFERENCE" );
+ static const OUString sREFERENCE( "REFERENCES" );
static const OUString sDROP( "DROP" );
static const OUString sYes( "YES" );
diff --git a/external/mysqlcppconn/UnpackedTarball_mysqlcppconn.mk b/external/mysqlcppconn/UnpackedTarball_mysqlcppconn.mk
index ae0f267af52c..dd2b98e654fa 100644
--- a/external/mysqlcppconn/UnpackedTarball_mysqlcppconn.mk
+++ b/external/mysqlcppconn/UnpackedTarball_mysqlcppconn.mk
@@ -18,6 +18,7 @@ $(eval $(call gb_UnpackedTarball_add_file,mysqlcppconn,driver/nativeapi/binding_
$(eval $(call gb_UnpackedTarball_add_patches,mysqlcppconn,\
external/mysqlcppconn/patches/mysql-connector-c++-1.1.0.patch \
external/mysqlcppconn/patches/default_to_protocol_tcp.patch \
+ external/mysqlcppconn/patches/retrieve_grants.patch.1 \
))
# vim: set noet sw=4 ts=4:
diff --git a/external/mysqlcppconn/patches/retrieve_grants.patch.1 b/external/mysqlcppconn/patches/retrieve_grants.patch.1
new file mode 100644
index 000000000000..eb63cff9cbe5
--- /dev/null
+++ b/external/mysqlcppconn/patches/retrieve_grants.patch.1
@@ -0,0 +1,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);
+ }