diff options
author | unknown <monty@mysql.com> | 2005-06-05 17:01:20 +0300 |
---|---|---|
committer | unknown <monty@mysql.com> | 2005-06-05 17:01:20 +0300 |
commit | b08b3a1555c296e4e396fd968a268b7b3dd58397 (patch) | |
tree | 9e3ba3064a7442c6cf9812a9f784e111bd244e0e /sql/sp_rcontext.cc | |
parent | 906b210a4a51a91416d553cb744bc9c22d0bd942 (diff) | |
download | mariadb-git-b08b3a1555c296e4e396fd968a268b7b3dd58397.tar.gz |
Cleanup during review
Simple optimization for 2 argument usage to function of variable arguments
Fix stack overrun when using 1+1+1+1+1+1+1+....
Update crash-me results for 5.0
Don't call post_open if pre_open() fails (optimization)
sql-bench/limits/mysql-4.1.cfg:
Rename: sql-bench/limits/mysql.cfg -> sql-bench/limits/mysql-4.1.cfg
libmysql/libmysql.c:
More portable define
mysql-test/mysql-test-run.sh:
Write also InnoDB warnings to warnings.log
mysql-test/t/type_newdecimal.test:
Don't get errors if innodb is not defined
mysys/my_alloc.c:
Cleanup comments
mysys/thr_lock.c:
Cleanup comments
sql/item.h:
Remove not needed initializer
sql/item_func.cc:
Simple optimization for 2 argument usage to function of variable arguments
sql/mysql_priv.h:
We use more stackspace with the introduction of int_op() etc.
This change ensures we don't run out of stack when doing 1+1+1+1...
(Tested on x86, 32 bit)
sql/sp_head.cc:
Don't call post_open if pre_open() fails
sql/sp_rcontext.cc:
More comments
Change so that post_open() doesn't have to be called if pre_open() fails
sql/sql_parse.cc:
Fold long lines
sql/sql_select.cc:
Simple reorganization to reduce number of if's
Ensure that table_map is updated for where clause (fixed warning from valgrind)
Diffstat (limited to 'sql/sp_rcontext.cc')
-rw-r--r-- | sql/sp_rcontext.cc | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/sql/sp_rcontext.cc b/sql/sp_rcontext.cc index 2e79a1e2533..0e8210301c1 100644 --- a/sql/sp_rcontext.cc +++ b/sql/sp_rcontext.cc @@ -168,8 +168,22 @@ sp_rcontext::pop_cursors(uint count) * */ -// We have split this in two to make it easy for sp_instr_copen -// to reuse the sp_instr::exec_stmt() code. +/* + pre_open cursor + + SYNOPSIS + pre_open() + THD Thread handler + + NOTES + We have to open cursor in two steps to make it easy for sp_instr_copen + to reuse the sp_instr::exec_stmt() code. + If this function returns 0, post_open should not be called + + RETURN + 0 ERROR +*/ + sp_lex_keeper* sp_cursor::pre_open(THD *thd) { @@ -179,32 +193,31 @@ sp_cursor::pre_open(THD *thd) MYF(0)); return NULL; } - - bzero((char *)&m_mem_root, sizeof(m_mem_root)); init_alloc_root(&m_mem_root, MEM_ROOT_BLOCK_SIZE, MEM_ROOT_PREALLOC); if ((m_prot= new Protocol_cursor(thd, &m_mem_root)) == NULL) return NULL; - m_oprot= thd->protocol; // Save the original protocol - thd->protocol= m_prot; - + /* Save for execution. Will be restored in post_open */ + m_oprot= thd->protocol; m_nseof= thd->net.no_send_eof; + + /* Change protocol for execution */ + thd->protocol= m_prot; thd->net.no_send_eof= TRUE; return m_lex_keeper; } + void sp_cursor::post_open(THD *thd, my_bool was_opened) { thd->net.no_send_eof= m_nseof; // Restore the originals thd->protocol= m_oprot; - if (was_opened) - { - m_isopen= was_opened; + if ((m_isopen= was_opened)) m_current_row= m_prot->data; - } } + int sp_cursor::close(THD *thd) { @@ -217,6 +230,7 @@ sp_cursor::close(THD *thd) return 0; } + void sp_cursor::destroy() { @@ -225,7 +239,6 @@ sp_cursor::destroy() delete m_prot; m_prot= NULL; free_root(&m_mem_root, MYF(0)); - bzero((char *)&m_mem_root, sizeof(m_mem_root)); } m_isopen= FALSE; } |