summaryrefslogtreecommitdiff
path: root/sql/item_vers.cc
Commit message (Collapse)AuthorAgeFilesLines
* Reduce usage of strlen()Monty2021-05-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes: - To detect automatic strlen() I removed the methods in String that uses 'const char *' without a length: - String::append(const char*) - Binary_string(const char *str) - String(const char *str, CHARSET_INFO *cs) - append_for_single_quote(const char *) All usage of append(const char*) is changed to either use String::append(char), String::append(const char*, size_t length) or String::append(LEX_CSTRING) - Added STRING_WITH_LEN() around constant string arguments to String::append() - Added overflow argument to escape_string_for_mysql() and escape_quotes_for_mysql() instead of returning (size_t) -1 on overflow. This was needed as most usage of the above functions never tested the result for -1 and would have given wrong results or crashes in case of overflows. - Added Item_func_or_sum::func_name_cstring(), which returns LEX_CSTRING. Changed all Item_func::func_name()'s to func_name_cstring()'s. The old Item_func_or_sum::func_name() is now an inline function that returns func_name_cstring().str. - Changed Item::mode_name() and Item::func_name_ext() to return LEX_CSTRING. - Changed for some functions the name argument from const char * to to const LEX_CSTRING &: - Item::Item_func_fix_attributes() - Item::check_type_...() - Type_std_attributes::agg_item_collations() - Type_std_attributes::agg_item_set_converter() - Type_std_attributes::agg_arg_charsets...() - Type_handler_hybrid_field_type::aggregate_for_result() - Type_handler_geometry::check_type_geom_or_binary() - Type_handler::Item_func_or_sum_illegal_param() - Predicant_to_list_comparator::add_value_skip_null() - Predicant_to_list_comparator::add_value() - cmp_item_row::prepare_comparators() - cmp_item_row::aggregate_row_elements_for_comparison() - Cursor_ref::print_func() - Removes String_space() as it was only used in one cases and that could be simplified to not use String_space(), thanks to the fixed my_vsnprintf(). - Added some const LEX_CSTRING's for common strings: - NULL_clex_str, DATA_clex_str, INDEX_clex_str. - Changed primary_key_name to a LEX_CSTRING - Renamed String::set_quick() to String::set_buffer_if_not_allocated() to clarify what the function really does. - Rename of protocol function: bool store(const char *from, CHARSET_INFO *cs) to bool store_string_or_null(const char *from, CHARSET_INFO *cs). This was done to both clarify the difference between this 'store' function and also to make it easier to find unoptimal usage of store() calls. - Added Protocol::store(const LEX_CSTRING*, CHARSET_INFO*) - Changed some 'const char*' arrays to instead be of type LEX_CSTRING. - class Item_func_units now used LEX_CSTRING for name. Other things: - Fixed a bug in mysql.cc:construct_prompt() where a wrong escape character in the prompt would cause some part of the prompt to be duplicated. - Fixed a lot of instances where the length of the argument to append is known or easily obtain but was not used. - Removed some not needed 'virtual' definition for functions that was inherited from the parent. I added override to these. - Fixed Ordered_key::print() to preallocate needed buffer. Old code could case memory overruns. - Simplified some loops when adding char * to a String with delimiters.
* Removed Item::is_fixed() and Item::has_subquery()Monty2021-05-191-1/+1
| | | | | | | | One should instead use Item::fixed() and Item::with_subquery() Removed Item::is_fixed() and has_subquery() and did the following replace: replace is_fixed() fixed() -- *.* replace 'has_subquery()' 'with_subquery()' -- *.*
* Change bitfields in Item to an uint16Michael Widenius2021-05-191-1/+1
| | | | | | | | The reason for the change is that neither clang or gcc can do efficient code when several bit fields are change at the same time or when copying one or more bits between identical bit fields. Updated bits explicitely with & and | is MUCH more efficient than what current compilers can do.
* Merge branch bb-10.3-release into bb-10.4-releaseNikita Malyavin2021-05-051-0/+16
|\
| * MDEV-25468 DELETE HISTORY may delete current data on system-versioned tableAleksey Midenkov2021-04-271-0/+16
| | | | | | | | | | | | | | | | | | Item_func_history (is_history()) is a bool function that checks if the row is the history row by checking row_end->is_max(). The argument to this function must be row_end system field. Added the above function to conjunction with SYSTEM_TIME_BEFORE versioning condition.
* | Merge 10.3 into 10.4Marko Mäkelä2019-04-021-3/+0
|\ \ | |/
| * MDEV-15412 For any non-existing transaction ID, AS OF provides the current ↵Aleksey Midenkov2019-03-291-3/+0
| | | | | | | | | | | | | | | | table contents without a warning Fail with error on non-existing TRX_ID. Closes #832
* | MDEV-16991 Rounding vs truncation for TIME, DATETIME, TIMESTAMPbb-10.4-mdev16991Alexander Barkov2018-11-261-1/+3
| |
* | MDEV-17317 Add THD* parameter into Item::get_date() and stricter data type ↵Alexander Barkov2018-09-281-4/+3
|/ | | | control to "fuzzydate"
* MDEV-15979 DELETE HISTORY from a table with transaction-precise versioning ↵Aleksey Midenkov2018-05-171-1/+1
| | | | | | | causes Assertion `table_list->vers_conditions.type == SYSTEM_TIME_BEFORE' failure * Fix versioning.truncate,trx_id to create transaction-based tables * Fix SYSTEM_TIME_BEFORE condition for VERS_TRX_ID
* MDEV-15893 Rename VTQ to TRTEugene Kosov2018-05-121-16/+16
|
* Changed database, tablename and alias to be LEX_CSTRINGMonty2018-01-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | This was done in, among other things: - thd->db and thd->db_length - TABLE_LIST tablename, db, alias and schema_name - Audit plugin database name - lex->db - All db and table names in Alter_table_ctx - st_select_lex db Other things: - Changed a lot of functions to take const LEX_CSTRING* as argument for db, table_name and alias. See init_one_table() as an example. - Changed some function arguments from LEX_CSTRING to const LEX_CSTRING - Changed some lists from LEX_STRING to LEX_CSTRING - threads_mysql.result changed because process list_db wasn't always correctly updated - New append_identifier() function that takes LEX_CSTRING* as arguments - Added new element tmp_buff to Alter_table_ctx to separate temp name handling from temporary space - Ensure we store the length after my_casedn_str() of table/db names - Removed not used version of rename_table_in_stat_tables() - Changed Natural_join_column::table_name and db_name() to never return NULL (used for print) - thd->get_db() now returns db as a printable string (thd->db.str or "")
* System Versioning 1.0pre2Aleksey Midenkov2017-11-231-0/+3
| | | | Merge branch '10.3' into trunk
* IB, SQL: removed VTQ, added TRT on SQL layer [closes #305]Aleksey Midenkov2017-11-151-112/+31
|
* System Versioning pre1.0Aleksey Midenkov2017-11-131-1/+2
| | | | Merge branch '10.3' into trunk
* System Versioning pre0.12Aleksey Midenkov2017-11-071-3/+3
| | | | Merge remote-tracking branch 'origin/archive/2017-10-17' into 10.3
* SQL: MAX microseconds for current system rows [fixes #245]Eugene Kosov2017-08-181-0/+1
|
* SQL: compare TRX_ID fields against timestamps [closes #231]Aleksey Midenkov2017-08-031-5/+14
|
* SQL: VTQ testing iface moved to plugin [closes #224]Aleksey Midenkov2017-07-071-47/+16
|
* Style: API renamesAleksey Midenkov2017-06-221-1/+1
| | | | | part_recs_slow() -> part_records(); HTON_SUPPORTS_SYS_VERSIONING -> HTON_NATIVE_SYS_VERSIONING.
* Misc: warnings fixAleksey Midenkov2017-05-051-1/+1
| | | | related to b0419561a3475ff3464316c7104455685819acca
* SQL: moved VTQ items to separate fileAleksey Midenkov2017-05-051-0/+280