Fix the collection to work with mysqlclient connector (#301)

This commit is contained in:
Andrew Klychkov 2022-03-14 16:41:38 +03:00 committed by GitHub
parent a516c1a6ad
commit 95c649cce2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 11 additions and 9 deletions

View file

@ -74,10 +74,6 @@ jobs:
exclude:
- mysql: 8.0.22
connector: pymysql==0.7.10
- db_engine_version: mariadb_10.3.34
connector: mysqlclient==2.0.1
- db_engine_version: mariadb_10.5.9
connector: mysqlclient==2.0.1
- python: 3.8
ansible: stable-2.9
- python: 3.8

View file

@ -0,0 +1,2 @@
bugfixes:
- Collection core functions - fixes related to the mysqlclient Python connector (https://github.com/ansible-collections/community.mysql/issues/292).

View file

@ -449,7 +449,7 @@ def privileges_get(cursor, user, host, maria_role=False):
if not maria_role:
cursor.execute("SHOW GRANTS FOR %s@%s", (user, host))
else:
cursor.execute("SHOW GRANTS FOR %s", (user))
cursor.execute("SHOW GRANTS FOR %s", (user,))
grants = cursor.fetchall()
def pick(x):
@ -673,7 +673,7 @@ def privileges_revoke(cursor, user, host, db_table, priv, grant_option, maria_ro
params = (user, host)
else:
query.append("FROM %s")
params = (user)
params = (user,)
query = ' '.join(query)
cursor.execute(query, params)
@ -699,6 +699,10 @@ def privileges_grant(cursor, user, host, db_table, priv, tls_requires, maria_rol
if 'GRANT' in priv:
query.append("WITH GRANT OPTION")
query = ' '.join(query)
if isinstance(params, str):
params = (params,)
cursor.execute(query, params)

View file

@ -482,7 +482,7 @@ class MariaDBQueryBuilder():
Returns:
tuple: (query_string, tuple_containing_parameters).
"""
return "SELECT count(*) FROM mysql.user WHERE user = %s AND is_role = 'Y'", (self.name)
return "SELECT count(*) FROM mysql.user WHERE user = %s AND is_role = 'Y'", (self.name,)
def role_grant(self, user):
"""Return a query to grant a role to a user or role.

View file

@ -28,9 +28,9 @@ module = Module()
@pytest.mark.parametrize(
'builder,output',
[
(MariaDBQueryBuilder('role0'), ("SELECT count(*) FROM mysql.user WHERE user = %s AND is_role = 'Y'", ('role0'))),
(MariaDBQueryBuilder('role0'), ("SELECT count(*) FROM mysql.user WHERE user = %s AND is_role = 'Y'", ('role0',))),
(MySQLQueryBuilder('role0', '%'), ('SELECT count(*) FROM mysql.user WHERE user = %s AND host = %s', ('role0', '%'))),
(MariaDBQueryBuilder('role1'), ("SELECT count(*) FROM mysql.user WHERE user = %s AND is_role = 'Y'", ('role1'))),
(MariaDBQueryBuilder('role1'), ("SELECT count(*) FROM mysql.user WHERE user = %s AND is_role = 'Y'", ('role1',))),
(MySQLQueryBuilder('role1', 'fake'), ('SELECT count(*) FROM mysql.user WHERE user = %s AND host = %s', ('role1', 'fake'))),
]
)