mirror of
https://github.com/ansible-collections/community.mysql.git
synced 2025-04-21 01:41:26 -07:00
Fix column uppercasing (#569)
* Add integrations tests for column case sensitive name * add a warning when column_case_sensitive in not set * add announce default will change in in 4.0.0 * fix tests for engine that don't wrap column in backticks * add filter because only MySQL 5.7 is case sensitive for users privs * add kmarse and myself to the authors * add kmarse to the contributors list --------- Co-authored-by: Laurent Indermühle <laurent.indermuehle@epfl.ch> Co-authored-by: Andrew Klychkov <aklychko@redhat.com>
This commit is contained in:
parent
8c2b6b0b3c
commit
033b4c74f9
10 changed files with 389 additions and 8 deletions
|
@ -121,6 +121,16 @@ options:
|
|||
type: bool
|
||||
default: true
|
||||
|
||||
column_case_sensitive:
|
||||
description:
|
||||
- The default is C(false).
|
||||
- When C(true), the module will not uppercase the field in the privileges.
|
||||
- When C(false), the field names will be upper-cased. This was the default before this
|
||||
feature was introduced but since MySQL/MariaDB is case sensitive you should set this
|
||||
to C(true) in most cases.
|
||||
type: bool
|
||||
version_added: '3.8.0'
|
||||
|
||||
notes:
|
||||
- Pay attention that the module runs C(SET DEFAULT ROLE ALL TO)
|
||||
all the I(members) passed by default when the state has changed.
|
||||
|
@ -139,6 +149,8 @@ seealso:
|
|||
author:
|
||||
- Andrew Klychkov (@Andersson007)
|
||||
- Felix Hamme (@betanummeric)
|
||||
- kmarse (@kmarse)
|
||||
- Laurent Indermühle (@laurent-indermuehle)
|
||||
|
||||
extends_documentation_fragment:
|
||||
- community.mysql.mysql
|
||||
|
@ -957,7 +969,8 @@ def main():
|
|||
detach_members=dict(type='bool', default=False),
|
||||
check_implicit_admin=dict(type='bool', default=False),
|
||||
set_default_role_all=dict(type='bool', default=True),
|
||||
members_must_exist=dict(type='bool', default=True)
|
||||
members_must_exist=dict(type='bool', default=True),
|
||||
column_case_sensitive=dict(type='bool', default=None), # TODO 4.0.0 add default=True
|
||||
)
|
||||
module = AnsibleModule(
|
||||
argument_spec=argument_spec,
|
||||
|
@ -992,6 +1005,7 @@ def main():
|
|||
db = ''
|
||||
set_default_role_all = module.params['set_default_role_all']
|
||||
members_must_exist = module.params['members_must_exist']
|
||||
column_case_sensitive = module.params['column_case_sensitive']
|
||||
|
||||
if priv and not isinstance(priv, (str, dict)):
|
||||
msg = ('The "priv" parameter must be str or dict '
|
||||
|
@ -1004,6 +1018,13 @@ def main():
|
|||
if mysql_driver is None:
|
||||
module.fail_json(msg=mysql_driver_fail_msg)
|
||||
|
||||
# TODO Release 4.0.0 : Remove this test and variable assignation
|
||||
if column_case_sensitive is None:
|
||||
column_case_sensitive = False
|
||||
module.warn("Option column_case_sensitive is not provided. "
|
||||
"The default is now false, so the column's name will be uppercased. "
|
||||
"The default will be changed to true in community.mysql 4.0.0.")
|
||||
|
||||
cursor = None
|
||||
try:
|
||||
if check_implicit_admin:
|
||||
|
@ -1041,7 +1062,7 @@ def main():
|
|||
module.fail_json(msg=to_native(e))
|
||||
|
||||
try:
|
||||
priv = privileges_unpack(priv, mode, ensure_usage=not subtract_privs)
|
||||
priv = privileges_unpack(priv, mode, column_case_sensitive, ensure_usage=not subtract_privs)
|
||||
except Exception as e:
|
||||
module.fail_json(msg='Invalid privileges string: %s' % to_native(e))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue