Merge pmartin@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/usr/local/bk/mysql-5.0
This commit is contained in:
commit
60e7ad754f
@ -72,6 +72,7 @@ papa@gbichot.local
|
|||||||
paul@central.snake.net
|
paul@central.snake.net
|
||||||
paul@teton.kitebird.com
|
paul@teton.kitebird.com
|
||||||
pem@mysql.com
|
pem@mysql.com
|
||||||
|
pem@per-erik-martins-dator.local
|
||||||
peter@linux.local
|
peter@linux.local
|
||||||
peter@mysql.com
|
peter@mysql.com
|
||||||
pgulutzan@linux.local
|
pgulutzan@linux.local
|
||||||
|
@ -117,8 +117,7 @@ drop procedure inc2;
|
|||||||
drop procedure inc;
|
drop procedure inc;
|
||||||
create procedure cbv1()
|
create procedure cbv1()
|
||||||
begin
|
begin
|
||||||
declare y int;
|
declare y int default 3;
|
||||||
set y = 3;
|
|
||||||
call cbv2(y+1, y);
|
call cbv2(y+1, y);
|
||||||
insert into test.t1 values ("cbv1", y);
|
insert into test.t1 values ("cbv1", y);
|
||||||
end;
|
end;
|
||||||
@ -354,8 +353,7 @@ append("foo", "bar")
|
|||||||
foobar
|
foobar
|
||||||
create function fac(n int unsigned) returns bigint unsigned
|
create function fac(n int unsigned) returns bigint unsigned
|
||||||
begin
|
begin
|
||||||
declare f bigint unsigned;
|
declare f bigint unsigned default 1;
|
||||||
set f = 1;
|
|
||||||
while n > 1 do
|
while n > 1 do
|
||||||
set f = f * n;
|
set f = f * n;
|
||||||
set n = n - 1;
|
set n = n - 1;
|
||||||
@ -396,8 +394,7 @@ drop table if exists fac;
|
|||||||
create table fac (n int unsigned not null primary key, f bigint unsigned);
|
create table fac (n int unsigned not null primary key, f bigint unsigned);
|
||||||
create procedure ifac(n int unsigned)
|
create procedure ifac(n int unsigned)
|
||||||
begin
|
begin
|
||||||
declare i int unsigned;
|
declare i int unsigned default 1;
|
||||||
set i = 1;
|
|
||||||
if n > 20 then
|
if n > 20 then
|
||||||
set n = 20; # bigint overflow otherwise
|
set n = 20; # bigint overflow otherwise
|
||||||
end if;
|
end if;
|
||||||
@ -452,8 +449,7 @@ insert into primes values
|
|||||||
create procedure opp(n bigint unsigned, out pp bool)
|
create procedure opp(n bigint unsigned, out pp bool)
|
||||||
begin
|
begin
|
||||||
declare r double;
|
declare r double;
|
||||||
declare b, s bigint unsigned;
|
declare b, s bigint unsigned default 0;
|
||||||
set b = 0, s = 0;
|
|
||||||
set r = sqrt(n);
|
set r = sqrt(n);
|
||||||
again:
|
again:
|
||||||
loop
|
loop
|
||||||
@ -483,8 +479,7 @@ declare i int unsigned;
|
|||||||
set i=45, p=201;
|
set i=45, p=201;
|
||||||
while i < m do
|
while i < m do
|
||||||
begin
|
begin
|
||||||
declare pp bool;
|
declare pp bool default 0;
|
||||||
set pp = 0;
|
|
||||||
call opp(p, pp);
|
call opp(p, pp);
|
||||||
if pp then
|
if pp then
|
||||||
insert into test.primes values (i, p);
|
insert into test.primes values (i, p);
|
||||||
|
@ -153,9 +153,8 @@ drop procedure inc|
|
|||||||
# ("cbv1", 4711)
|
# ("cbv1", 4711)
|
||||||
create procedure cbv1()
|
create procedure cbv1()
|
||||||
begin
|
begin
|
||||||
declare y int;
|
declare y int default 3;
|
||||||
|
|
||||||
set y = 3;
|
|
||||||
call cbv2(y+1, y);
|
call cbv2(y+1, y);
|
||||||
insert into test.t1 values ("cbv1", y);
|
insert into test.t1 values ("cbv1", y);
|
||||||
end|
|
end|
|
||||||
@ -428,9 +427,8 @@ select append("foo", "bar")|
|
|||||||
# A function with flow control
|
# A function with flow control
|
||||||
create function fac(n int unsigned) returns bigint unsigned
|
create function fac(n int unsigned) returns bigint unsigned
|
||||||
begin
|
begin
|
||||||
declare f bigint unsigned;
|
declare f bigint unsigned default 1;
|
||||||
|
|
||||||
set f = 1;
|
|
||||||
while n > 1 do
|
while n > 1 do
|
||||||
set f = f * n;
|
set f = f * n;
|
||||||
set n = n - 1;
|
set n = n - 1;
|
||||||
@ -479,8 +477,8 @@ create table fac (n int unsigned not null primary key, f bigint unsigned)|
|
|||||||
|
|
||||||
create procedure ifac(n int unsigned)
|
create procedure ifac(n int unsigned)
|
||||||
begin
|
begin
|
||||||
declare i int unsigned;
|
declare i int unsigned default 1;
|
||||||
set i = 1;
|
|
||||||
if n > 20 then
|
if n > 20 then
|
||||||
set n = 20; # bigint overflow otherwise
|
set n = 20; # bigint overflow otherwise
|
||||||
end if;
|
end if;
|
||||||
@ -524,9 +522,8 @@ insert into primes values
|
|||||||
create procedure opp(n bigint unsigned, out pp bool)
|
create procedure opp(n bigint unsigned, out pp bool)
|
||||||
begin
|
begin
|
||||||
declare r double;
|
declare r double;
|
||||||
declare b, s bigint unsigned;
|
declare b, s bigint unsigned default 0;
|
||||||
|
|
||||||
set b = 0, s = 0;
|
|
||||||
set r = sqrt(n);
|
set r = sqrt(n);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
@ -561,9 +558,8 @@ begin
|
|||||||
|
|
||||||
while i < m do
|
while i < m do
|
||||||
begin
|
begin
|
||||||
declare pp bool;
|
declare pp bool default 0;
|
||||||
|
|
||||||
set pp = 0;
|
|
||||||
call opp(p, pp);
|
call opp(p, pp);
|
||||||
if pp then
|
if pp then
|
||||||
insert into test.primes values (i, p);
|
insert into test.primes values (i, p);
|
||||||
|
@ -622,7 +622,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
|
|||||||
table_wild opt_pad no_in_expr expr_expr simple_expr no_and_expr
|
table_wild opt_pad no_in_expr expr_expr simple_expr no_and_expr
|
||||||
using_list expr_or_default set_expr_or_default interval_expr
|
using_list expr_or_default set_expr_or_default interval_expr
|
||||||
param_marker singlerow_subselect singlerow_subselect_init
|
param_marker singlerow_subselect singlerow_subselect_init
|
||||||
exists_subselect exists_subselect_init
|
exists_subselect exists_subselect_init sp_opt_default
|
||||||
|
|
||||||
%type <item_list>
|
%type <item_list>
|
||||||
expr_list udf_expr_list when_list ident_list ident_list_arg
|
expr_list udf_expr_list when_list ident_list ident_list_arg
|
||||||
@ -1082,15 +1082,26 @@ sp_decls:
|
|||||||
;
|
;
|
||||||
|
|
||||||
sp_decl:
|
sp_decl:
|
||||||
DECLARE_SYM sp_decl_idents type
|
DECLARE_SYM sp_decl_idents type sp_opt_default
|
||||||
{
|
{
|
||||||
LEX *lex= Lex;
|
LEX *lex= Lex;
|
||||||
uint max= lex->spcont->current_framesize();
|
uint max= lex->spcont->current_framesize();
|
||||||
|
enum enum_field_types type= (enum enum_field_types)$3;
|
||||||
|
Item *it= $4;
|
||||||
|
|
||||||
for (uint i = max-$2 ; i < max ; i++)
|
for (uint i = max-$2 ; i < max ; i++)
|
||||||
{
|
{
|
||||||
lex->spcont->set_type(i, (enum enum_field_types)$3);
|
lex->spcont->set_type(i, type);
|
||||||
|
if (! it)
|
||||||
lex->spcont->set_isset(i, FALSE);
|
lex->spcont->set_isset(i, FALSE);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sp_instr_set *in= new sp_instr_set(lex->sphead->instructions(),
|
||||||
|
i, it, type);
|
||||||
|
|
||||||
|
lex->sphead->add_instr(in);
|
||||||
|
lex->spcont->set_isset(i, TRUE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$$= $2;
|
$$= $2;
|
||||||
}
|
}
|
||||||
@ -1109,6 +1120,11 @@ sp_decl_idents:
|
|||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
sp_opt_default:
|
||||||
|
/* Empty */ { $$ = NULL; }
|
||||||
|
| DEFAULT expr { $$ = $2; }
|
||||||
|
;
|
||||||
|
|
||||||
sp_proc_stmt:
|
sp_proc_stmt:
|
||||||
{
|
{
|
||||||
Lex->sphead->reset_lex(YYTHD);
|
Lex->sphead->reset_lex(YYTHD);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user