• unknown's avatar
    Bug#33851 Passing UNSIGNED param to EXECUTE returns ERROR 1210 · 1164e2bc
    unknown authored
    The problem is that passing anything other than a integer to a limit
    clause in a prepared statement would fail. This limitation was introduced
    to avoid replication problems (e.g: replicating the statement with a
    string argument would cause a parse failure in the slave).
    
    The solution is to convert arguments to the limit clause to a integer
    value and use this converted value when persisting the query to the log.
    
    
    mysql-test/r/limit.result:
      Update test case result.
    mysql-test/r/ps.result:
      Add test case result for Bug#33851
    mysql-test/r/rpl_user_variables.result:
      Test case result for replication of prepared statement with
      limit clause.
    mysql-test/t/limit.test:
      Test parameters to limit clause.
    mysql-test/t/ps.test:
      Add test case for Bug#33851
    mysql-test/t/rpl_user_variables.test:
      Test replication of a parameter which value is converted.
    sql/item.cc:
      Convert value to integer if it's a parameter to a limit clause.
    sql/item.h:
      Flag signal that item is a parameter to a limit clause.
    sql/item_func.cc:
      Const member functions, object is not mutated.
    sql/sql_class.h:
      Const member functions, object is not mutated.
    sql/sql_yacc.yy:
      Flag that item is a parameter to a limit clause.
    1164e2bc
sql_yacc.yy 267 KB