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
1c4dffc8
Commit
1c4dffc8
authored
Jul 01, 2006
by
konstantin@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/opt/local/work/mysql-5.0-runtime
parents
775ec4fb
fbeb42a9
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
169 additions
and
44 deletions
+169
-44
mysql-test/r/func_time.result
mysql-test/r/func_time.result
+6
-6
mysql-test/r/information_schema.result
mysql-test/r/information_schema.result
+44
-8
mysql-test/r/sp-vars.result
mysql-test/r/sp-vars.result
+15
-0
mysql-test/t/func_time.test
mysql-test/t/func_time.test
+5
-5
mysql-test/t/information_schema.test
mysql-test/t/information_schema.test
+36
-0
mysql-test/t/sp-vars.test
mysql-test/t/sp-vars.test
+36
-0
sql/field_conv.cc
sql/field_conv.cc
+8
-3
sql/item.h
sql/item.h
+0
-7
sql/sp_head.cc
sql/sp_head.cc
+14
-4
sql/sql_lex.cc
sql/sql_lex.cc
+0
-4
sql/sql_lex.h
sql/sql_lex.h
+0
-3
sql/sql_parse.cc
sql/sql_parse.cc
+3
-3
sql/sql_show.cc
sql/sql_show.cc
+2
-1
No files found.
mysql-test/r/func_time.result
View file @
1c4dffc8
...
...
@@ -361,12 +361,6 @@ extract(SECOND FROM "1999-01-02 10:11:12")
select extract(MONTH FROM "2001-02-00");
extract(MONTH FROM "2001-02-00")
2
SELECT DATE_SUB(str_to_date('9999-12-31 00:01:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE);
DATE_SUB(str_to_date('9999-12-31 00:01:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE)
9999-12-31 00:00:00
SELECT DATE_ADD(str_to_date('9999-12-30 23:59:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE);
DATE_ADD(str_to_date('9999-12-30 23:59:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE)
9999-12-31 00:00:00
SELECT EXTRACT(QUARTER FROM '2004-01-15') AS quarter;
quarter
1
...
...
@@ -403,6 +397,12 @@ quarter
SELECT EXTRACT(QUARTER FROM '2004-12-15') AS quarter;
quarter
4
SELECT DATE_SUB(str_to_date('9999-12-31 00:01:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE);
DATE_SUB(str_to_date('9999-12-31 00:01:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE)
9999-12-31 00:00:00
SELECT DATE_ADD(str_to_date('9999-12-30 23:59:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE);
DATE_ADD(str_to_date('9999-12-30 23:59:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE)
9999-12-31 00:00:00
SELECT "1900-01-01 00:00:00" + INTERVAL 2147483648 SECOND;
"1900-01-01 00:00:00" + INTERVAL 2147483648 SECOND
1968-01-20 03:14:08
...
...
mysql-test/r/information_schema.result
View file @
1c4dffc8
...
...
@@ -294,26 +294,26 @@ show create function sub1;
ERROR 42000: FUNCTION sub1 does not exist
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
ROUTINE_NAME ROUTINE_DEFINITION
sel2
sub1
sel2
NULL
sub1
NULL
grant all privileges on test.* to mysqltest_1@localhost;
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
ROUTINE_NAME ROUTINE_DEFINITION
sel2
sub1
sel2
NULL
sub1
NULL
create function sub2(i int) returns int
return i+1;
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
ROUTINE_NAME ROUTINE_DEFINITION
sel2
sub1
sel2
NULL
sub1
NULL
sub2 return i+1
show create procedure sel2;
Procedure sql_mode Create Procedure
sel2
sel2
NULL
show create function sub1;
Function sql_mode Create Function
sub1
sub1
NULL
show create function sub2;
Function sql_mode Create Function
sub2 CREATE DEFINER=`mysqltest_1`@`localhost` FUNCTION `sub2`(i int) RETURNS int(11)
...
...
@@ -1134,3 +1134,39 @@ concat(@a, table_name) @a table_name
.t1 . t1
.t2 . t2
drop table t1,t2;
DROP PROCEDURE IF EXISTS p1;
DROP FUNCTION IF EXISTS f1;
CREATE PROCEDURE p1() SET @a= 1;
CREATE FUNCTION f1() RETURNS INT RETURN @a + 1;
CREATE USER mysql_bug20230@localhost;
GRANT EXECUTE ON PROCEDURE p1 TO mysql_bug20230@localhost;
GRANT EXECUTE ON FUNCTION f1 TO mysql_bug20230@localhost;
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES;
ROUTINE_NAME ROUTINE_DEFINITION
f1 RETURN @a + 1
p1 SET @a= 1
SHOW CREATE PROCEDURE p1;
Procedure sql_mode Create Procedure
p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
SET @a= 1
SHOW CREATE FUNCTION f1;
Function sql_mode Create Function
f1 CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
RETURN @a + 1
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES;
ROUTINE_NAME ROUTINE_DEFINITION
f1 NULL
p1 NULL
SHOW CREATE PROCEDURE p1;
Procedure sql_mode Create Procedure
p1 NULL
SHOW CREATE FUNCTION f1;
Function sql_mode Create Function
f1 NULL
CALL p1();
SELECT f1();
f1()
2
DROP FUNCTION f1;
DROP PROCEDURE p1;
DROP USER mysql_bug20230@localhost;
mysql-test/r/sp-vars.result
View file @
1c4dffc8
...
...
@@ -1075,3 +1075,18 @@ SELECT f1();
f1()
abc
DROP FUNCTION f1;
DROP PROCEDURE IF EXISTS p1;
CREATE PROCEDURE p1()
BEGIN
DECLARE v_char VARCHAR(255);
DECLARE v_text TEXT DEFAULT '';
SET v_char = 'abc';
SET v_text = v_char;
SET v_char = 'def';
SET v_text = concat(v_text, '|', v_char);
SELECT v_text;
END|
CALL p1();
v_text
abc|def
DROP PROCEDURE p1;
mysql-test/t/func_time.test
View file @
1c4dffc8
...
...
@@ -143,10 +143,6 @@ select extract(SECOND FROM "1999-01-02 10:11:12");
select
extract
(
MONTH
FROM
"2001-02-00"
);
#
# MySQL Bugs: #12356: DATE_SUB or DATE_ADD incorrectly returns null
#
SELECT
DATE_SUB
(
str_to_date
(
'9999-12-31 00:01:00'
,
'%Y-%m-%d %H:%i:%s'
),
INTERVAL
1
MINUTE
);
SELECT
DATE_ADD
(
str_to_date
(
'9999-12-30 23:59:00'
,
'%Y-%m-%d %H:%i:%s'
),
INTERVAL
1
MINUTE
);
# test EXTRACT QUARTER (Bug #18100)
#
...
...
@@ -162,7 +158,11 @@ SELECT EXTRACT(QUARTER FROM '2004-09-15') AS quarter;
SELECT
EXTRACT
(
QUARTER
FROM
'2004-10-15'
)
AS
quarter
;
SELECT
EXTRACT
(
QUARTER
FROM
'2004-11-15'
)
AS
quarter
;
SELECT
EXTRACT
(
QUARTER
FROM
'2004-12-15'
)
AS
quarter
;
#
# MySQL Bugs: #12356: DATE_SUB or DATE_ADD incorrectly returns null
#
SELECT
DATE_SUB
(
str_to_date
(
'9999-12-31 00:01:00'
,
'%Y-%m-%d %H:%i:%s'
),
INTERVAL
1
MINUTE
);
SELECT
DATE_ADD
(
str_to_date
(
'9999-12-30 23:59:00'
,
'%Y-%m-%d %H:%i:%s'
),
INTERVAL
1
MINUTE
);
#
# Test big intervals (Bug #3498)
...
...
mysql-test/t/information_schema.test
View file @
1c4dffc8
...
...
@@ -852,3 +852,39 @@ create table t2(f1 char(5));
select
concat
(
@
a
,
table_name
),
@
a
,
table_name
from
information_schema
.
tables
where
table_schema
=
'test'
;
drop
table
t1
,
t2
;
#
# Bug#20230: routine_definition is not null
#
--
disable_warnings
DROP
PROCEDURE
IF
EXISTS
p1
;
DROP
FUNCTION
IF
EXISTS
f1
;
--
enable_warnings
CREATE
PROCEDURE
p1
()
SET
@
a
=
1
;
CREATE
FUNCTION
f1
()
RETURNS
INT
RETURN
@
a
+
1
;
CREATE
USER
mysql_bug20230
@
localhost
;
GRANT
EXECUTE
ON
PROCEDURE
p1
TO
mysql_bug20230
@
localhost
;
GRANT
EXECUTE
ON
FUNCTION
f1
TO
mysql_bug20230
@
localhost
;
SELECT
ROUTINE_NAME
,
ROUTINE_DEFINITION
FROM
INFORMATION_SCHEMA
.
ROUTINES
;
SHOW
CREATE
PROCEDURE
p1
;
SHOW
CREATE
FUNCTION
f1
;
connect
(
conn1
,
localhost
,
mysql_bug20230
,,);
SELECT
ROUTINE_NAME
,
ROUTINE_DEFINITION
FROM
INFORMATION_SCHEMA
.
ROUTINES
;
SHOW
CREATE
PROCEDURE
p1
;
SHOW
CREATE
FUNCTION
f1
;
CALL
p1
();
SELECT
f1
();
disconnect
conn1
;
connection
default
;
DROP
FUNCTION
f1
;
DROP
PROCEDURE
p1
;
DROP
USER
mysql_bug20230
@
localhost
;
# End of 5.0 tests.
mysql-test/t/sp-vars.test
View file @
1c4dffc8
...
...
@@ -1271,3 +1271,39 @@ SELECT f1();
#
DROP
FUNCTION
f1
;
#
# Bug#17226: Variable set in cursor on first iteration is assigned
# second iterations value
#
# The problem was in incorrect handling of local variables of type
# TEXT (BLOB).
#
--
disable_warnings
DROP
PROCEDURE
IF
EXISTS
p1
;
--
enable_warnings
delimiter
|
;
CREATE
PROCEDURE
p1
()
BEGIN
DECLARE
v_char
VARCHAR
(
255
);
DECLARE
v_text
TEXT
DEFAULT
''
;
SET
v_char
=
'abc'
;
SET
v_text
=
v_char
;
SET
v_char
=
'def'
;
SET
v_text
=
concat
(
v_text
,
'|'
,
v_char
);
SELECT
v_text
;
END
|
delimiter
;
|
CALL
p1
();
DROP
PROCEDURE
p1
;
# End of 5.0 tests.
sql/field_conv.cc
View file @
1c4dffc8
...
...
@@ -675,9 +675,14 @@ void field_conv(Field *to,Field *from)
{
// Be sure the value is stored
Field_blob
*
blob
=
(
Field_blob
*
)
to
;
from
->
val_str
(
&
blob
->
value
);
if
(
!
blob
->
value
.
is_alloced
()
&&
from
->
real_type
()
!=
MYSQL_TYPE_STRING
&&
from
->
real_type
()
!=
MYSQL_TYPE_VARCHAR
)
/*
Copy value if copy_blobs is set, or source is not a string and
we have a pointer to its internal string conversion buffer.
*/
if
(
to
->
table
->
copy_blobs
||
(
!
blob
->
value
.
is_alloced
()
&&
from
->
real_type
()
!=
MYSQL_TYPE_STRING
&&
from
->
real_type
()
!=
MYSQL_TYPE_VARCHAR
))
blob
->
value
.
copy
();
blob
->
store
(
blob
->
value
.
ptr
(),
blob
->
value
.
length
(),
from
->
charset
());
return
;
...
...
sql/item.h
View file @
1c4dffc8
...
...
@@ -827,13 +827,6 @@ protected:
public:
LEX_STRING
m_name
;
/*
Buffer, pointing to the string value of the item. We need it to
protect internal buffer from changes. See comment to analogous
member in Item_param for more details.
*/
String
str_value_ptr
;
public:
#ifndef DBUG_OFF
/*
...
...
sql/sp_head.cc
View file @
1c4dffc8
...
...
@@ -1869,8 +1869,11 @@ sp_head::show_create_procedure(THD *thd)
field_list
.
push_back
(
new
Item_empty_string
(
"Procedure"
,
NAME_LEN
));
field_list
.
push_back
(
new
Item_empty_string
(
"sql_mode"
,
sql_mode_len
));
// 1024 is for not to confuse old clients
field_list
.
push_back
(
new
Item_empty_string
(
"Create Procedure"
,
max
(
buffer
.
length
(),
1024
)));
Item_empty_string
*
definition
=
new
Item_empty_string
(
"Create Procedure"
,
max
(
buffer
.
length
(),
1024
));
definition
->
maybe_null
=
TRUE
;
field_list
.
push_back
(
definition
);
if
(
protocol
->
send_fields
(
&
field_list
,
Protocol
::
SEND_NUM_ROWS
|
Protocol
::
SEND_EOF
))
DBUG_RETURN
(
1
);
...
...
@@ -1879,6 +1882,8 @@ sp_head::show_create_procedure(THD *thd)
protocol
->
store
((
char
*
)
sql_mode_str
,
sql_mode_len
,
system_charset_info
);
if
(
full_access
)
protocol
->
store
(
m_defstr
.
str
,
m_defstr
.
length
,
system_charset_info
);
else
protocol
->
store_null
();
res
=
protocol
->
write
();
send_eof
(
thd
);
...
...
@@ -1934,8 +1939,11 @@ sp_head::show_create_function(THD *thd)
&
sql_mode_len
);
field_list
.
push_back
(
new
Item_empty_string
(
"Function"
,
NAME_LEN
));
field_list
.
push_back
(
new
Item_empty_string
(
"sql_mode"
,
sql_mode_len
));
field_list
.
push_back
(
new
Item_empty_string
(
"Create Function"
,
max
(
buffer
.
length
(),
1024
)));
Item_empty_string
*
definition
=
new
Item_empty_string
(
"Create Function"
,
max
(
buffer
.
length
(),
1024
));
definition
->
maybe_null
=
TRUE
;
field_list
.
push_back
(
definition
);
if
(
protocol
->
send_fields
(
&
field_list
,
Protocol
::
SEND_NUM_ROWS
|
Protocol
::
SEND_EOF
))
DBUG_RETURN
(
1
);
...
...
@@ -1944,6 +1952,8 @@ sp_head::show_create_function(THD *thd)
protocol
->
store
((
char
*
)
sql_mode_str
,
sql_mode_len
,
system_charset_info
);
if
(
full_access
)
protocol
->
store
(
m_defstr
.
str
,
m_defstr
.
length
,
system_charset_info
);
else
protocol
->
store_null
();
res
=
protocol
->
write
();
send_eof
(
thd
);
...
...
sql/sql_lex.cc
View file @
1c4dffc8
...
...
@@ -41,8 +41,6 @@ sys_var_long_ptr trg_new_row_fake_var(0, 0);
#define yySkip() lex->ptr++
#define yyLength() ((uint) (lex->ptr - lex->tok_start)-1)
pthread_key
(
LEX
*
,
THR_LEX
);
/* Longest standard keyword name */
#define TOCK_NAME_LENGTH 24
...
...
@@ -91,8 +89,6 @@ void lex_init(void)
for
(
i
=
0
;
i
<
array_elements
(
sql_functions
)
;
i
++
)
sql_functions
[
i
].
length
=
(
uchar
)
strlen
(
sql_functions
[
i
].
name
);
VOID
(
pthread_key_create
(
&
THR_LEX
,
NULL
));
DBUG_VOID_RETURN
;
}
...
...
sql/sql_lex.h
View file @
1c4dffc8
...
...
@@ -1116,6 +1116,3 @@ extern void lex_start(THD *thd, uchar *buf,uint length);
extern
void
lex_end
(
LEX
*
lex
);
extern
int
MYSQLlex
(
void
*
arg
,
void
*
yythd
);
extern
pthread_key
(
LEX
*
,
THR_LEX
);
#define current_lex (current_thd->lex)
sql/sql_parse.cc
View file @
1c4dffc8
...
...
@@ -2365,7 +2365,7 @@ static void reset_one_shot_variables(THD *thd)
/*
Execute command saved in thd and
current_
lex->sql_command
Execute command saved in thd and lex->sql_command
SYNOPSIS
mysql_execute_command()
...
...
@@ -5547,7 +5547,7 @@ bool check_stack_overrun(THD *thd, long margin,
bool
my_yyoverflow
(
short
**
yyss
,
YYSTYPE
**
yyvs
,
ulong
*
yystacksize
)
{
LEX
*
lex
=
current_
lex
;
LEX
*
lex
=
current_thd
->
lex
;
ulong
old_info
=
0
;
if
((
uint
)
*
yystacksize
>=
MY_YACC_MAX
)
return
1
;
...
...
@@ -5984,7 +5984,7 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
void
store_position_for_column
(
const
char
*
name
)
{
current_lex
->
last_field
->
after
=
my_const_cast
(
char
*
)
(
name
);
current_
thd
->
lex
->
last_field
->
after
=
my_const_cast
(
char
*
)
(
name
);
}
bool
...
...
sql/sql_show.cc
View file @
1c4dffc8
...
...
@@ -2916,6 +2916,7 @@ bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table,
{
get_field
(
thd
->
mem_root
,
proc_table
->
field
[
10
],
&
tmp_string
);
table
->
field
[
7
]
->
store
(
tmp_string
.
ptr
(),
tmp_string
.
length
(),
cs
);
table
->
field
[
7
]
->
set_notnull
();
}
table
->
field
[
6
]
->
store
(
STRING_WITH_LEN
(
"SQL"
),
cs
);
table
->
field
[
10
]
->
store
(
STRING_WITH_LEN
(
"SQL"
),
cs
);
...
...
@@ -4069,7 +4070,7 @@ ST_FIELD_INFO proc_fields_info[]=
{
"ROUTINE_TYPE"
,
9
,
MYSQL_TYPE_STRING
,
0
,
0
,
"Type"
},
{
"DTD_IDENTIFIER"
,
NAME_LEN
,
MYSQL_TYPE_STRING
,
0
,
1
,
0
},
{
"ROUTINE_BODY"
,
8
,
MYSQL_TYPE_STRING
,
0
,
0
,
0
},
{
"ROUTINE_DEFINITION"
,
65535
,
MYSQL_TYPE_STRING
,
0
,
0
,
0
},
{
"ROUTINE_DEFINITION"
,
65535
,
MYSQL_TYPE_STRING
,
0
,
1
,
0
},
{
"EXTERNAL_NAME"
,
NAME_LEN
,
MYSQL_TYPE_STRING
,
0
,
1
,
0
},
{
"EXTERNAL_LANGUAGE"
,
NAME_LEN
,
MYSQL_TYPE_STRING
,
0
,
1
,
0
},
{
"PARAMETER_STYLE"
,
8
,
MYSQL_TYPE_STRING
,
0
,
0
,
0
},
...
...
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