1
0
mirror of https://github.com/MariaDB/server.git synced 2025-09-02 09:41:40 +03:00

Desperate attempt to push part of prepared statements cleanup which was

reviewed in Saint-Petersbourg (including post-review fixes).


include/my_sys.h:
  Added clear_alloc_root (reset alloc root without freeing its memory)
sql/item.h:
  - rename setup_param -> set_parap (function assigns parameter value to item)
sql/mysql_priv.h:
  - all return values are void, because return value is never checked in
      dispatch_command
  - removed unused declaration of setup_param_functions
sql/protocol.h:
  - unused declarations of setup_params_data* removed
sql/sql_class.cc:
  Cleanup:
    - bzero(mem_root) replaced with clear_alloc_root
    - query_id and command members moved back to THD from Statement
  Assignment of mem_root, free_list, query_id and command optimized
  away from set_statement().
sql/sql_class.h:
  - query_id and command moved back to THD from Statement
sql/sql_lex.h:
  - better type for param_list
  - param_count is the same thing as param_list.elements
sql/sql_parse.cc:
  - comments for dispatch_command
sql/sql_prepare.cc:
  Cleanup:
  - added comments to many functions and removed trailing spaces in many 
    lines, some stale comments removed.
  - it's faster to iterate using pointers, than classes
  - Renames: error_in_prepare renamed to get_longdata_error (because it is set
    when there is an error in mysql_send_longdata, rather than in
    mysql_prepare), embedded versions of placeholder assignement functions
    now have prefix emb_, setup_ functions renamed to set_, because they
    perform assignment, not installation, setup_params_data now doesn't
    call insert_params and was renamed to setup_set_param_functions,
  - find_prepared_statement should not send error if called from no-reply
    calls, like mysql_stmt_reset
  - error reporting is checked up, to always report errors and not report
    errors twice. send_prep_stmt can be done mostly in send_prepare_result, 
    rather than in test_* functions.
  - now we don't need to reinit THD->mem_root/free_list in mysql_stmt_execute,
    because it's not reset there.
tests/client_test.c:
  - removed second call to test_subqueries
This commit is contained in:
unknown
2004-03-02 22:39:50 +03:00
parent 8286684e26
commit 7b68eaafda
11 changed files with 437 additions and 395 deletions

View File

@@ -434,15 +434,6 @@ public:
*/
ulong id;
/*
Id of current query. Statement can be reused to execute several queries
query_id is global in context of the whole MySQL server.
ID is automatically generated from mutex-protected counter.
It's used in handler code for various purposes: to check which columns
from table are necessary for this select, to check if it's necessary to
update auto-updatable fields (like auto_increment and timestamp).
*/
ulong query_id;
/*
- if set_query_id=1, we set field->query_id for all fields. In that case
field list can not contain duplicates.
@@ -461,11 +452,6 @@ public:
See item_sum.cc for details.
*/
bool allow_sum_func;
/*
Type of current query: COM_PREPARE, COM_QUERY, etc. Set from
first byte of the packet in do_command()
*/
enum enum_server_command command;
LEX *lex; // parse tree descriptor
/*
@@ -676,6 +662,11 @@ public:
uint dbug_sentry; // watch out for memory corruption
#endif
struct st_my_thread_var *mysys_var;
/*
Type of current query: COM_PREPARE, COM_QUERY, etc. Set from
first byte of the packet in do_command()
*/
enum enum_server_command command;
uint32 server_id;
uint32 file_id; // for LOAD DATA INFILE
/*
@@ -751,6 +742,15 @@ public:
List <MYSQL_ERROR> warn_list;
uint warn_count[(uint) MYSQL_ERROR::WARN_LEVEL_END];
uint total_warn_count;
/*
Id of current query. Statement can be reused to execute several queries
query_id is global in context of the whole MySQL server.
ID is automatically generated from mutex-protected counter.
It's used in handler code for various purposes: to check which columns
from table are necessary for this select, to check if it's necessary to
update auto-updatable fields (like auto_increment and timestamp).
*/
ulong query_id;
ulong warn_id, version, options, thread_id, col_access;
/* Statement id is thread-wide. This counter is used to generate ids */