• Chaithra Gopalareddy's avatar
    Bug#13344643:Format function in view looses locale information · 73e69d0f
    Chaithra Gopalareddy authored
    Problem description:
    When a view is created using function FORMAT and if FORMAT function uses locale
    option,definition of view saved into server doesn't contain that locale information,
    Ex:
    create  table test2 (bb decimal (10,2));
    insert into test2 values (10.32),(10009.2),(12345678.21);
    create view test3 as select format(bb,1,'sk_SK') as cc from test2;
    select * from test3;
    +--------------+
    | cc           |
    +--------------+
    | 10.3         |
    | 10,009.2     |
    | 12,345,678.2 |
    +--------------+
    3 rows in set (0.02 sec)
    
    show create view test3
                    View: test3
             Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost`
    SQL SECURITY DEFINER VIEW `test3` AS select format(`test2`.`bb`,1) AS `cc`
    from `test2`
    character_set_client: latin1
    collation_connection: latin1_swedish_ci
    1 row in set (0.02 sec)
    
    Problem Analysis:
    The function Item_func_format::print() which prints the query string to create
    the view does not print the third argument (i.e the locale information). Hence
     view is created without locale information. 
    
    Problem Solution:
    If argument count is more than 2 we now print the third argument onto the query string.
    
    Files changed:
    sql/item_strfunc.cc
    Function call changes: Item_func_format::print()
    mysql-test/t/select.test
    Added test case to test the bug
    mysql-test/r/select.result
    Result of the test case appended here
    
    73e69d0f
select.result 144 KB