summaryrefslogtreecommitdiff
path: root/sql/sql_yacc.yy
diff options
context:
space:
mode:
authorunknown <acurtis@ltantony.rdg.cyberkinetica.homeunix.net>2005-03-08 22:32:09 +0000
committerunknown <acurtis@ltantony.rdg.cyberkinetica.homeunix.net>2005-03-08 22:32:09 +0000
commitce16c895c243107b66507242539544d5bbec8841 (patch)
treea0cecfd9009503e0a1a4a4e424a679143292ab71 /sql/sql_yacc.yy
parentfe3a425a94dd321844fab1867811016b9e5343c7 (diff)
parent1220069c537a733b233c446e27aec9f9247aef31 (diff)
downloadmariadb-git-ce16c895c243107b66507242539544d5bbec8841.tar.gz
Merge in fix Bug#3788
mysql-test/r/information_schema.result: Auto merged mysql-test/t/sp.test: Auto merged sql/item.cc: Auto merged sql/item_func.cc: Auto merged sql/item_func.h: Auto merged sql/mysql_priv.h: Auto merged sql/sp.cc: Auto merged sql/sp_head.cc: Auto merged sql/sp_head.h: Auto merged sql/sql_parse.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_yacc.yy: Auto merged mysql-test/r/sp.result: Merge BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r--sql/sql_yacc.yy32
1 files changed, 25 insertions, 7 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index fae01502a8d..212f004e3bf 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -1372,19 +1372,37 @@ create_function_tail:
RETURNS_SYM
{
LEX *lex= Lex;
- sp_head *sp= lex->sphead;
-
- sp->m_returns_begin= lex->tok_start;
- sp->m_returns_cs= lex->charset= NULL;
+ lex->charset= NULL;
+ lex->length= lex->dec= NULL;
+ lex->interval_list.empty();
+ lex->type= 0;
}
type
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
+ LEX_STRING cmt = { 0, 0 };
+ create_field *new_field;
+ uint unused1= 0;
+ int unused2= 0;
+
+ if (!(new_field= new_create_field(YYTHD, "", (enum enum_field_types)$8,
+ lex->length, lex->dec, lex->type,
+ (Item *)0, (Item *) 0, &cmt, 0, &lex->interval_list,
+ (lex->charset ? lex->charset : default_charset_info),
+ lex->uint_geom_type)))
+ YYABORT;
+
+ if (prepare_create_field(new_field, unused1, unused2, unused2, 0))
+ YYABORT;
+
+ sp->m_returns= new_field->sql_type;
+ sp->m_returns_cs= new_field->charset;
+ sp->m_returns_len= new_field->length;
+ sp->m_returns_pack= new_field->pack_flag;
+ sp->m_returns_typelib=
+ sp->create_typelib(&new_field->interval_list);
- sp->m_returns_end= lex->tok_start;
- sp->m_returns= (enum enum_field_types)$8;
- sp->m_returns_cs= lex->charset;
bzero((char *)&lex->sp_chistics, sizeof(st_sp_chistics));
}
sp_c_chistics