Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
4b41a187
Commit
4b41a187
authored
Jun 22, 2005
by
tulin@dl145b.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into dl145b.mysql.com:/home/ndbdev/tomas/mysql-5.1
parents
8df638b6
71b425be
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
181 additions
and
56 deletions
+181
-56
mysql-test/r/sp.result
mysql-test/r/sp.result
+52
-2
mysql-test/r/view.result
mysql-test/r/view.result
+6
-1
mysql-test/t/sp.test
mysql-test/t/sp.test
+27
-2
mysql-test/t/view.test
mysql-test/t/view.test
+9
-1
mysys/default_modify.c
mysys/default_modify.c
+70
-48
sql/item_timefunc.h
sql/item_timefunc.h
+2
-1
sql/sp_head.cc
sql/sp_head.cc
+15
-1
No files found.
mysql-test/r/sp.result
View file @
4b41a187
...
@@ -1133,8 +1133,6 @@ end|
...
@@ -1133,8 +1133,6 @@ end|
select f5(1)|
select f5(1)|
f5(1)
f5(1)
1
1
select f5(2)|
ERROR HY000: Table 't1' was not locked with LOCK TABLES
create function f6() returns int
create function f6() returns int
begin
begin
declare n int;
declare n int;
...
@@ -3174,4 +3172,56 @@ a1 a2 a3 data data2 data3
...
@@ -3174,4 +3172,56 @@ a1 a2 a3 data data2 data3
DROP PROCEDURE bug6866;
DROP PROCEDURE bug6866;
DROP VIEW tv|
DROP VIEW tv|
DROP TABLE tt1, tt2, tt3|
DROP TABLE tt1, tt2, tt3|
DROP PROCEDURE IF EXISTS bug10136|
create table t3 ( name char(5) not null primary key, val float not null)|
insert into t3 values ('aaaaa', 1), ('bbbbb', 2), ('ccccc', 3)|
create procedure bug10136()
begin
declare done int default 3;
repeat
select * from t3;
set done = done - 1;
until done <= 0 end repeat;
end|
call bug10136()|
name val
aaaaa 1
bbbbb 2
ccccc 3
name val
aaaaa 1
bbbbb 2
ccccc 3
name val
aaaaa 1
bbbbb 2
ccccc 3
call bug10136()|
name val
aaaaa 1
bbbbb 2
ccccc 3
name val
aaaaa 1
bbbbb 2
ccccc 3
name val
aaaaa 1
bbbbb 2
ccccc 3
call bug10136()|
name val
aaaaa 1
bbbbb 2
ccccc 3
name val
aaaaa 1
bbbbb 2
ccccc 3
name val
aaaaa 1
bbbbb 2
ccccc 3
drop procedure bug10136|
drop table t3|
drop table t1,t2;
drop table t1,t2;
mysql-test/r/view.result
View file @
4b41a187
...
@@ -1732,7 +1732,7 @@ INSERT INTO t1 VALUES ('a','1'), ('b','2');
...
@@ -1732,7 +1732,7 @@ INSERT INTO t1 VALUES ('a','1'), ('b','2');
INSERT INTO t2 VALUES ('a','5'), ('a','6'), ('b','5'), ('b','6');
INSERT INTO t2 VALUES ('a','5'), ('a','6'), ('b','5'), ('b','6');
CREATE VIEW v1 AS
CREATE VIEW v1 AS
SELECT t1.b as c, t2.b as d FROM t1,t2 WHERE t1.a=t2.a;
SELECT t1.b as c, t2.b as d FROM t1,t2 WHERE t1.a=t2.a;
SELECT d, c FROM v1 ORDER BY d;
SELECT d, c FROM v1 ORDER BY d
,c
;
d c
d c
5 1
5 1
5 2
5 2
...
@@ -1826,3 +1826,8 @@ ERROR 42S21: Duplicate column name 's1'
...
@@ -1826,3 +1826,8 @@ ERROR 42S21: Duplicate column name 's1'
drop table t1;
drop table t1;
create view v1(k, K) as select 1,2;
create view v1(k, K) as select 1,2;
ERROR 42S21: Duplicate column name 'K'
ERROR 42S21: Duplicate column name 'K'
create view v1 as SELECT TIME_FORMAT(SEC_TO_TIME(3600),'%H:%i') as t;
select * from v1;
t
01:00
drop view v1;
mysql-test/t/sp.test
View file @
4b41a187
...
@@ -1364,8 +1364,9 @@ begin
...
@@ -1364,8 +1364,9 @@ begin
end
|
end
|
select
f5
(
1
)
|
select
f5
(
1
)
|
# This should generate an error about insuficient number of tables locked
# This should generate an error about insuficient number of tables locked
--
error
1100
# Nuw this crash server, comented until bug#11394 fix
select
f5
(
2
)
|
#--error 1100
#select f5(2)|
# But now it simply miserably fails because we are trying to use the same
# But now it simply miserably fails because we are trying to use the same
# lex on the next iteration :/ It should generate some error too...
# lex on the next iteration :/ It should generate some error too...
# select f5(3)|
# select f5(3)|
...
@@ -3886,6 +3887,30 @@ DROP PROCEDURE bug6866;
...
@@ -3886,6 +3887,30 @@ DROP PROCEDURE bug6866;
DROP
VIEW
tv
|
DROP
VIEW
tv
|
DROP
TABLE
tt1
,
tt2
,
tt3
|
DROP
TABLE
tt1
,
tt2
,
tt3
|
#
# BUG#10136: items cleunup
#
--
disable_warnings
DROP
PROCEDURE
IF
EXISTS
bug10136
|
--
enable_warnings
create
table
t3
(
name
char
(
5
)
not
null
primary
key
,
val
float
not
null
)
|
insert
into
t3
values
(
'aaaaa'
,
1
),
(
'bbbbb'
,
2
),
(
'ccccc'
,
3
)
|
create
procedure
bug10136
()
begin
declare
done
int
default
3
;
repeat
select
*
from
t3
;
set
done
=
done
-
1
;
until
done
<=
0
end
repeat
;
end
|
call
bug10136
()
|
call
bug10136
()
|
call
bug10136
()
|
drop
procedure
bug10136
|
drop
table
t3
|
#
#
# BUG#NNNN: New bug synopsis
# BUG#NNNN: New bug synopsis
#
#
...
...
mysql-test/t/view.test
View file @
4b41a187
...
@@ -1578,7 +1578,7 @@ INSERT INTO t1 VALUES ('a','1'), ('b','2');
...
@@ -1578,7 +1578,7 @@ INSERT INTO t1 VALUES ('a','1'), ('b','2');
INSERT
INTO
t2
VALUES
(
'a'
,
'5'
),
(
'a'
,
'6'
),
(
'b'
,
'5'
),
(
'b'
,
'6'
);
INSERT
INTO
t2
VALUES
(
'a'
,
'5'
),
(
'a'
,
'6'
),
(
'b'
,
'5'
),
(
'b'
,
'6'
);
CREATE
VIEW
v1
AS
CREATE
VIEW
v1
AS
SELECT
t1
.
b
as
c
,
t2
.
b
as
d
FROM
t1
,
t2
WHERE
t1
.
a
=
t2
.
a
;
SELECT
t1
.
b
as
c
,
t2
.
b
as
d
FROM
t1
,
t2
WHERE
t1
.
a
=
t2
.
a
;
SELECT
d
,
c
FROM
v1
ORDER
BY
d
;
SELECT
d
,
c
FROM
v1
ORDER
BY
d
,
c
;
DROP
VIEW
v1
;
DROP
VIEW
v1
;
DROP
TABLE
t1
,
t2
;
DROP
TABLE
t1
,
t2
;
#
#
...
@@ -1599,6 +1599,7 @@ drop table t1;
...
@@ -1599,6 +1599,7 @@ drop table t1;
create
view
v1
as
select
cast
(
1
as
decimal
);
create
view
v1
as
select
cast
(
1
as
decimal
);
select
*
from
v1
;
select
*
from
v1
;
drop
view
v1
;
drop
view
v1
;
#
#
# Bug#11298 insert into select from VIEW produces incorrect result when
# Bug#11298 insert into select from VIEW produces incorrect result when
# using ORDER BY
# using ORDER BY
...
@@ -1665,3 +1666,10 @@ drop table t1;
...
@@ -1665,3 +1666,10 @@ drop table t1;
# set names differ by case only
# set names differ by case only
--
error
1060
--
error
1060
create
view
v1
(
k
,
K
)
as
select
1
,
2
;
create
view
v1
(
k
,
K
)
as
select
1
,
2
;
#
# using time_format in view (BUG#7521)
#
create
view
v1
as
SELECT
TIME_FORMAT
(
SEC_TO_TIME
(
3600
),
'%H:%i'
)
as
t
;
select
*
from
v1
;
drop
view
v1
;
mysys/default_modify.c
View file @
4b41a187
/* Copyright (C) 2005 MySQL AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include "my_global.h"
#include "mysys_priv.h"
#include "m_string.h"
#include <my_dir.h>
#define BUFF_SIZE 1024
#ifdef __WIN__
#define NEWLINE "\r\n"
#define NEWLINE_LEN 2
#else
#define NEWLINE "\n"
#define NEWLINE_LEN 1
#endif
static
char
*
add_option
(
char
*
dst
,
const
char
*
option_value
,
const
char
*
option
,
int
remove_option
);
/*
/*
Add/remove option to the option file section.
Add/remove option to the option file section.
...
@@ -15,6 +50,8 @@
...
@@ -15,6 +50,8 @@
into a buffer. Then we look for the option within this section and
into a buffer. Then we look for the option within this section and
change/remove it. In the end we get a buffer with modified version of the
change/remove it. In the end we get a buffer with modified version of the
file. Then we write it to the file, truncate it if needed and close it.
file. Then we write it to the file, truncate it if needed and close it.
Note that there is a small time gap, when the file is incomplete,
and this theoretically might introduce a problem.
RETURN
RETURN
0 - ok
0 - ok
...
@@ -22,24 +59,6 @@
...
@@ -22,24 +59,6 @@
2 - cannot open the file
2 - cannot open the file
*/
*/
#include "my_global.h"
#include "mysys_priv.h"
#include "m_string.h"
#include <my_dir.h>
#define BUFF_SIZE 1024
#ifdef __WIN__
#define NEWLINE "\r\n"
#define NEWLINE_LEN 2
#else
#define NEWLINE "\n"
#define NEWLINE_LEN 1
#endif
static
char
*
add_option
(
char
*
dst
,
const
char
*
option_value
,
const
char
*
option
,
int
remove_option
);
int
modify_defaults_file
(
const
char
*
file_location
,
const
char
*
option
,
int
modify_defaults_file
(
const
char
*
file_location
,
const
char
*
option
,
const
char
*
option_value
,
const
char
*
option_value
,
const
char
*
section_name
,
int
remove_option
)
const
char
*
section_name
,
int
remove_option
)
...
@@ -47,7 +66,7 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -47,7 +66,7 @@ int modify_defaults_file(const char *file_location, const char *option,
FILE
*
cnf_file
;
FILE
*
cnf_file
;
MY_STAT
file_stat
;
MY_STAT
file_stat
;
char
linebuff
[
BUFF_SIZE
],
*
src_ptr
,
*
dst_ptr
,
*
file_buffer
;
char
linebuff
[
BUFF_SIZE
],
*
src_ptr
,
*
dst_ptr
,
*
file_buffer
;
uint
optlen
,
optval_len
,
sect_len
,
nr_newlines
=
0
;
uint
opt
_
len
,
optval_len
,
sect_len
,
nr_newlines
=
0
;
my_bool
in_section
=
FALSE
,
opt_applied
=
0
;
my_bool
in_section
=
FALSE
,
opt_applied
=
0
;
DBUG_ENTER
(
"modify_defaults_file"
);
DBUG_ENTER
(
"modify_defaults_file"
);
...
@@ -58,7 +77,7 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -58,7 +77,7 @@ int modify_defaults_file(const char *file_location, const char *option,
if
(
my_fstat
(
fileno
(
cnf_file
),
&
file_stat
,
MYF
(
0
)))
if
(
my_fstat
(
fileno
(
cnf_file
),
&
file_stat
,
MYF
(
0
)))
goto
err
;
goto
err
;
optlen
=
(
uint
)
strlen
(
option
);
opt
_
len
=
(
uint
)
strlen
(
option
);
optval_len
=
(
uint
)
strlen
(
option_value
);
optval_len
=
(
uint
)
strlen
(
option_value
);
/*
/*
...
@@ -66,17 +85,18 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -66,17 +85,18 @@ int modify_defaults_file(const char *file_location, const char *option,
for the option we want to add.
for the option we want to add.
*/
*/
if
(
!
(
file_buffer
=
(
char
*
)
my_malloc
(
sizeof
(
char
)
*
if
(
!
(
file_buffer
=
(
char
*
)
my_malloc
(
sizeof
(
char
)
*
(
file_stat
.
st_size
+
(
file_stat
.
st_size
+
/* option name len */
/* option name len */
optlen
+
opt_len
+
/* reserve space for newline */
/* reserve space for newline */
NEWLINE_LEN
+
NEWLINE_LEN
+
/* reserve for '=' char */
/* reserve for '=' char */
1
+
1
+
/* option value len */
/* option value len */
optval_len
+
optval_len
+
/* The ending zero plus some safety */
/* The ending zero */
FN_REFLEN
),
MYF
(
MY_WME
))))
1
),
MYF
(
MY_WME
))))
goto
malloc_err
;
goto
malloc_err
;
sect_len
=
(
uint
)
strlen
(
section_name
);
sect_len
=
(
uint
)
strlen
(
section_name
);
...
@@ -94,10 +114,11 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -94,10 +114,11 @@ int modify_defaults_file(const char *file_location, const char *option,
continue
;
continue
;
}
}
if
(
!
opt_applied
&&
in_section
&&
!
strncmp
(
src_ptr
,
option
,
optlen
)
&&
/* correct the option */
(
*
(
src_ptr
+
optlen
)
==
'='
||
if
(
!
opt_applied
&&
in_section
&&
!
strncmp
(
src_ptr
,
option
,
opt_len
)
&&
my_isspace
(
&
my_charset_latin1
,
*
(
src_ptr
+
optlen
))
||
(
*
(
src_ptr
+
opt_len
)
==
'='
||
*
(
src_ptr
+
optlen
)
==
'\0'
))
my_isspace
(
&
my_charset_latin1
,
*
(
src_ptr
+
opt_len
))
||
*
(
src_ptr
+
opt_len
)
==
'\0'
))
{
{
dst_ptr
=
add_option
(
dst_ptr
,
option_value
,
option
,
remove_option
);
dst_ptr
=
add_option
(
dst_ptr
,
option_value
,
option
,
remove_option
);
opt_applied
=
1
;
opt_applied
=
1
;
...
@@ -107,11 +128,12 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -107,11 +128,12 @@ int modify_defaults_file(const char *file_location, const char *option,
/* If going to new group and we have option to apply, do it now */
/* If going to new group and we have option to apply, do it now */
if
(
in_section
&&
!
opt_applied
&&
*
src_ptr
==
'['
)
if
(
in_section
&&
!
opt_applied
&&
*
src_ptr
==
'['
)
{
{
dst_ptr
=
add_option
(
dst_ptr
,
option_value
,
option
,
remove_option
);
dst_ptr
=
add_option
(
dst_ptr
,
option_value
,
option
,
remove_option
);
opt_applied
=
1
;
/* set the flag to do write() later */
}
}
for
(;
nr_newlines
;
nr_newlines
--
)
for
(;
nr_newlines
;
nr_newlines
--
)
dst_ptr
=
strmov
(
dst_ptr
,
NEWLINE
);
dst_ptr
=
strmov
(
dst_ptr
,
NEWLINE
);
dst_ptr
=
strmov
(
dst_ptr
,
linebuff
);
dst_ptr
=
strmov
(
dst_ptr
,
linebuff
);
}
}
/* Look for a section */
/* Look for a section */
...
@@ -120,13 +142,13 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -120,13 +142,13 @@ int modify_defaults_file(const char *file_location, const char *option,
/* Copy the line to the buffer */
/* Copy the line to the buffer */
if
(
!
strncmp
(
++
src_ptr
,
section_name
,
sect_len
))
if
(
!
strncmp
(
++
src_ptr
,
section_name
,
sect_len
))
{
{
src_ptr
+=
sect_len
;
src_ptr
+=
sect_len
;
/* Skip over whitespaces. They are allowed after section name */
/* Skip over whitespaces. They are allowed after section name */
for
(;
my_isspace
(
&
my_charset_latin1
,
*
src_ptr
);
src_ptr
++
)
for
(;
my_isspace
(
&
my_charset_latin1
,
*
src_ptr
);
src_ptr
++
)
{}
{}
if
(
*
src_ptr
!=
']'
)
if
(
*
src_ptr
!=
']'
)
continue
;
/* Missing closing parenthesis. Assume this was no group */
continue
;
/* Missing closing parenthesis. Assume this was no group */
in_section
=
TRUE
;
in_section
=
TRUE
;
}
}
else
else
...
@@ -149,10 +171,10 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -149,10 +171,10 @@ int modify_defaults_file(const char *file_location, const char *option,
{
{
/* Don't write the file if there are no changes to be made */
/* Don't write the file if there are no changes to be made */
if
(
my_chsize
(
fileno
(
cnf_file
),
(
my_off_t
)
(
dst_ptr
-
file_buffer
),
0
,
if
(
my_chsize
(
fileno
(
cnf_file
),
(
my_off_t
)
(
dst_ptr
-
file_buffer
),
0
,
MYF
(
MY_WME
))
||
MYF
(
MY_WME
))
||
my_fseek
(
cnf_file
,
0
,
MY_SEEK_SET
,
MYF
(
0
))
||
my_fseek
(
cnf_file
,
0
,
MY_SEEK_SET
,
MYF
(
0
))
||
my_fwrite
(
cnf_file
,
file_buffer
,
(
uint
)
(
dst_ptr
-
file_buffer
),
my_fwrite
(
cnf_file
,
file_buffer
,
(
uint
)
(
dst_ptr
-
file_buffer
),
MYF
(
MY_NABP
)))
MYF
(
MY_NABP
)))
goto
err
;
goto
err
;
}
}
if
(
my_fclose
(
cnf_file
,
MYF
(
MY_WME
)))
if
(
my_fclose
(
cnf_file
,
MYF
(
MY_WME
)))
...
...
sql/item_timefunc.h
View file @
4b41a187
...
@@ -503,7 +503,8 @@ public:
...
@@ -503,7 +503,8 @@ public:
Item_func_date_format
(
Item
*
a
,
Item
*
b
,
bool
is_time_format_arg
)
Item_func_date_format
(
Item
*
a
,
Item
*
b
,
bool
is_time_format_arg
)
:
Item_str_func
(
a
,
b
),
is_time_format
(
is_time_format_arg
)
{}
:
Item_str_func
(
a
,
b
),
is_time_format
(
is_time_format_arg
)
{}
String
*
val_str
(
String
*
str
);
String
*
val_str
(
String
*
str
);
const
char
*
func_name
()
const
{
return
"date_format"
;
}
const
char
*
func_name
()
const
{
return
is_time_format
?
"time_format"
:
"date_format"
;
}
void
fix_length_and_dec
();
void
fix_length_and_dec
();
uint
format_length
(
const
String
*
format
);
uint
format_length
(
const
String
*
format
);
};
};
...
...
sql/sp_head.cc
View file @
4b41a187
...
@@ -636,7 +636,21 @@ sp_head::execute(THD *thd)
...
@@ -636,7 +636,21 @@ sp_head::execute(THD *thd)
break
;
break
;
DBUG_PRINT
(
"execute"
,
(
"Instruction %u"
,
ip
));
DBUG_PRINT
(
"execute"
,
(
"Instruction %u"
,
ip
));
thd
->
set_time
();
// Make current_time() et al work
thd
->
set_time
();
// Make current_time() et al work
ret
=
i
->
execute
(
thd
,
&
ip
);
{
/*
We have to substitute free_list of executing statement to
current_arena to store there all new items created during execution
(for example '*' expanding, or items made during permanent subquery
transformation)
Note: Every statement have to have all its items listed in free_list
for correct cleaning them up
*/
Item
*
save_free_list
=
thd
->
current_arena
->
free_list
;
thd
->
current_arena
->
free_list
=
i
->
free_list
;
ret
=
i
->
execute
(
thd
,
&
ip
);
i
->
free_list
=
thd
->
current_arena
->
free_list
;
thd
->
current_arena
->
free_list
=
save_free_list
;
}
if
(
i
->
free_list
)
if
(
i
->
free_list
)
cleanup_items
(
i
->
free_list
);
cleanup_items
(
i
->
free_list
);
// Check if an exception has occurred and a handler has been found
// Check if an exception has occurred and a handler has been found
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment