summaryrefslogtreecommitdiff
path: root/sql/item_func.h
diff options
context:
space:
mode:
authorunknown <jani@ua141d10.elisa.omakaista.fi>2007-04-12 12:50:02 +0300
committerunknown <jani@ua141d10.elisa.omakaista.fi>2007-04-12 12:50:02 +0300
commitf5b2b3d12f4ea8083cb2d8327c3112f5c8588ac1 (patch)
tree30b412b9ebad3ddaa08bcf7eb478c89eeebc2ed2 /sql/item_func.h
parent02886c22467fc6549a5f91b1df79d4a53dfb4e57 (diff)
parent2501c71acb45216b3131ae732cb67de140d9a069 (diff)
downloadmariadb-git-f5b2b3d12f4ea8083cb2d8327c3112f5c8588ac1.tar.gz
Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.0
into ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.0-marvel client/mysqldump.c: Auto merged mysql-test/t/sp.test: Auto merged mysys/my_malloc.c: Auto merged mysys/my_static.c: Auto merged mysys/safemalloc.c: Auto merged ndb/src/mgmclient/CommandInterpreter.cpp: Auto merged sql/ha_archive.cc: Auto merged sql/ha_innodb.cc: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/handler.cc: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_func.h: Auto merged sql/log.cc: Auto merged sql/log_event.cc: Auto merged sql/mysql_priv.h: Auto merged sql-common/client.c: Auto merged sql/sp.cc: Auto merged sql/sp_head.cc: Auto merged sql/sql_delete.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_update.cc: Auto merged sql/table.cc: Auto merged sql-common/my_time.c: Auto merged mysql-test/r/sp.result: Merged from main 5.0 sql/sql_load.cc: Merged from main 5.0
Diffstat (limited to 'sql/item_func.h')
-rw-r--r--sql/item_func.h39
1 files changed, 21 insertions, 18 deletions
diff --git a/sql/item_func.h b/sql/item_func.h
index 24f30994b22..635a409e0a2 100644
--- a/sql/item_func.h
+++ b/sql/item_func.h
@@ -1308,12 +1308,12 @@ public:
FT_INFO *ft_handler;
TABLE *table;
Item_func_match *master; // for master-slave optimization
- Item *concat; // Item_func_concat_ws
- String value; // value of concat
+ Item *concat_ws; // Item_func_concat_ws
+ String value; // value of concat_ws
String search_value; // key_item()'s value converted to cmp_collation
Item_func_match(List<Item> &a, uint b): Item_real_func(a), key(0), flags(b),
- join_key(0), ft_handler(0), table(0), master(0), concat(0) { }
+ join_key(0), ft_handler(0), table(0), master(0), concat_ws(0) { }
void cleanup()
{
DBUG_ENTER("Item_func_match");
@@ -1321,7 +1321,7 @@ public:
if (!master && ft_handler)
ft_handler->please->close_search(ft_handler);
ft_handler= 0;
- concat= 0;
+ concat_ws= 0;
DBUG_VOID_RETURN;
}
enum Functype functype() const { return FT_FUNC; }
@@ -1405,12 +1405,15 @@ private:
sp_name *m_name;
mutable sp_head *m_sp;
TABLE *dummy_table;
- Field *result_field;
char result_buf[64];
+ /*
+ The result field of the concrete stored function.
+ */
+ Field *sp_result_field;
- bool execute(Field **flp);
- bool execute_impl(THD *thd, Field *return_value_fld);
- Field *sp_result_field(void) const;
+ bool execute();
+ bool execute_impl(THD *thd);
+ bool init_result_field(THD *thd);
public:
@@ -1438,23 +1441,23 @@ public:
longlong val_int()
{
- if (execute(&result_field))
+ if (execute())
return (longlong) 0;
- return result_field->val_int();
+ return sp_result_field->val_int();
}
double val_real()
{
- if (execute(&result_field))
+ if (execute())
return 0.0;
- return result_field->val_real();
+ return sp_result_field->val_real();
}
my_decimal *val_decimal(my_decimal *dec_buf)
{
- if (execute(&result_field))
+ if (execute())
return NULL;
- return result_field->val_decimal(dec_buf);
+ return sp_result_field->val_decimal(dec_buf);
}
String *val_str(String *str)
@@ -1463,7 +1466,7 @@ public:
char buff[20];
buf.set(buff, 20, str->charset());
buf.length(0);
- if (execute(&result_field))
+ if (execute())
return NULL;
/*
result_field will set buf pointing to internal buffer
@@ -1471,7 +1474,7 @@ public:
when SP is executed. In order to prevent occasional
corruption of returned value, we make here a copy.
*/
- result_field->val_str(&buf);
+ sp_result_field->val_str(&buf);
str->copy(buf);
return str;
}
@@ -1479,11 +1482,11 @@ public:
virtual bool change_context_processor(byte *cntx)
{ context= (Name_resolution_context *)cntx; return FALSE; }
- void fix_length_and_dec();
- bool find_and_check_access(THD * thd);
+ bool sp_check_access(THD * thd);
virtual enum Functype functype() const { return FUNC_SP; }
bool fix_fields(THD *thd, Item **ref);
+ void fix_length_and_dec(void);
bool is_expensive() { return 1; }
};