mirror of
https://github.com/MariaDB/server.git
synced 2025-11-13 21:42:58 +03:00
is broken (prepared statements)": fixed date handling in many places
of prepared statements code.
libmysql/libmysql.c:
Fix for Bug#4026:
- now buffer_length is defined for any buffer type. Network buffer
preallocation cleaned up.
- added constants for maximum buffer sizes necessary for MYSQL_TYPE_DATE,
MYSQL_TYPE_TIME, MYSQL_TYPE_DATETIME types.
- TIME/DATETIME packing/unpacking functions fixed
- now result set metadata is always updated from fields sent to COM_EXECUTE.
This is necessary to make 'SELECT ?' queries work without conversions.
sql/item.cc:
- added implementatoin of Item_param::get_date
sql/item.h:
- added enum_field_types Item_param::param_type. First step for proper
handling of placeholders.
- added get_date() implementation to prevent date -> string -> date
conversions when MYSQL_TYPE_DATE/DATETIME parameter is used in temporal
context.
sql/protocol.cc:
Fix for Bug#4026:
- PACKET_BUFFET_EXTRA_ALLOC -> PACKET_BUFFER_EXTRA_ALLOC.
The define itself was moved to .cc as it's used only in protocol.cc
- fixed Protocol_prep::store_time() call.
sql/protocol.h:
- PACKET_BUFFER_EXTRA_ALLOC moved to protocol.cc
sql/sql_prepare.cc:
Fix for Bug#4026:
- MYSQL_TYPE_TIME/DATETIME handling fixed.
- added initialization for Item_param::param_type in
setup_one_conversion_function
tests/client_test.c:
Test case for Bug#4026
30 KiB
30 KiB