Bugfix of 54239: mysql_variables not supporting variables name with dot (#66806)
* Bugfix of 54239: mysql_variables not supporting variables name with dot * add changelog * add CI tests
This commit is contained in:
parent
f5e194cbcd
commit
3baea92ec9
4 changed files with 20 additions and 2 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- mysql_variable - fix the module doesn't support variables name with dot (https://github.com/ansible/ansible/issues/54239).
|
|
@ -129,7 +129,7 @@ def pg_quote_identifier(identifier, id_type):
|
||||||
|
|
||||||
def mysql_quote_identifier(identifier, id_type):
|
def mysql_quote_identifier(identifier, id_type):
|
||||||
identifier_fragments = _identifier_parse(identifier, quote_char='`')
|
identifier_fragments = _identifier_parse(identifier, quote_char='`')
|
||||||
if len(identifier_fragments) > _MYSQL_IDENTIFIER_TO_DOT_LEVEL[id_type]:
|
if (len(identifier_fragments) - 1) > _MYSQL_IDENTIFIER_TO_DOT_LEVEL[id_type]:
|
||||||
raise SQLParseError('MySQL does not support %s with more than %i dots' % (id_type, _MYSQL_IDENTIFIER_TO_DOT_LEVEL[id_type]))
|
raise SQLParseError('MySQL does not support %s with more than %i dots' % (id_type, _MYSQL_IDENTIFIER_TO_DOT_LEVEL[id_type]))
|
||||||
|
|
||||||
special_cased_fragments = []
|
special_cased_fragments = []
|
||||||
|
|
|
@ -204,7 +204,7 @@ def main():
|
||||||
|
|
||||||
if mysqlvar is None:
|
if mysqlvar is None:
|
||||||
module.fail_json(msg="Cannot run without variable to operate with")
|
module.fail_json(msg="Cannot run without variable to operate with")
|
||||||
if match('^[0-9a-z_]+$', mysqlvar) is None:
|
if match('^[0-9a-z_.]+$', mysqlvar) is None:
|
||||||
module.fail_json(msg="invalid variable name \"%s\"" % mysqlvar)
|
module.fail_json(msg="invalid variable name \"%s\"" % mysqlvar)
|
||||||
if mysql_driver is None:
|
if mysql_driver is None:
|
||||||
module.fail_json(msg=mysql_driver_fail_msg)
|
module.fail_json(msg=mysql_driver_fail_msg)
|
||||||
|
|
|
@ -394,3 +394,19 @@
|
||||||
register: result
|
register: result
|
||||||
|
|
||||||
- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{def_val}}'
|
- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{def_val}}'
|
||||||
|
|
||||||
|
# Bugfix of https://github.com/ansible/ansible/issues/54239
|
||||||
|
- name: set variable containing dot
|
||||||
|
mysql_variables:
|
||||||
|
login_unix_socket: '{{ mysql_socket }}'
|
||||||
|
login_user: root
|
||||||
|
login_password: '{{ root_pass }}'
|
||||||
|
variable: validate_password.policy
|
||||||
|
value: LOW
|
||||||
|
mode: persist_only
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result is changed
|
||||||
|
- result.queries == ["SET PERSIST_ONLY `validate_password`.`policy` = LOW"]
|
||||||
|
|
Loading…
Reference in a new issue