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
2905909d
Commit
2905909d
authored
Feb 28, 2008
by
davi@buzz.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge buzz.(none):/home/davi/mysql-5.0-runtime
into buzz.(none):/home/davi/mysql-5.1-runtime
parents
55f0fba4
369c2493
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
120 additions
and
22 deletions
+120
-22
mysql-test/r/limit.result
mysql-test/r/limit.result
+9
-0
mysql-test/r/ps.result
mysql-test/r/ps.result
+30
-0
mysql-test/suite/rpl/r/rpl_user_variables.result
mysql-test/suite/rpl/r/rpl_user_variables.result
+16
-0
mysql-test/suite/rpl/t/rpl_user_variables.test
mysql-test/suite/rpl/t/rpl_user_variables.test
+17
-0
mysql-test/t/limit.test
mysql-test/t/limit.test
+12
-5
mysql-test/t/ps.test
mysql-test/t/ps.test
+19
-0
sql/item.cc
sql/item.cc
+9
-4
sql/item.h
sql/item.h
+2
-7
sql/item_func.cc
sql/item_func.cc
+1
-1
sql/sql_class.h
sql/sql_class.h
+1
-1
sql/sql_yacc.yy
sql/sql_yacc.yy
+4
-4
No files found.
mysql-test/r/limit.result
View file @
2905909d
...
...
@@ -94,6 +94,9 @@ drop table t1;
prepare s from "select 1 limit ?";
set @a='qwe';
execute s using @a;
1
set @a=-1;
execute s using @a;
ERROR HY000: Incorrect arguments to EXECUTE
prepare s from "select 1 limit 1, ?";
execute s using @a;
...
...
@@ -101,4 +104,10 @@ ERROR HY000: Incorrect arguments to EXECUTE
prepare s from "select 1 limit ?, ?";
execute s using @a, @a;
ERROR HY000: Incorrect arguments to EXECUTE
set @a=14632475938453979136;
execute s using @a, @a;
1
set @a=-14632475938453979136;
execute s using @a, @a;
ERROR HY000: Incorrect arguments to EXECUTE
End of 5.0 tests
mysql-test/r/ps.result
View file @
2905909d
...
...
@@ -1885,6 +1885,36 @@ prepare stmt from "create view v1 as select * from t1";
ERROR 42S02: Table 'test.t1' doesn't exist
prepare stmt from "create view v1 as select * from `t1` `b`";
ERROR 42S02: Table 'test.t1' doesn't exist
prepare stmt from "select ?";
set @arg= 123456789.987654321;
select @arg;
@arg
123456789.987654321
execute stmt using @arg;
?
123456789.987654321
set @arg= "string";
select @arg;
@arg
string
execute stmt using @arg;
?
string
set @arg= 123456;
select @arg;
@arg
123456
execute stmt using @arg;
?
123456
set @arg= cast(-12345.54321 as decimal(20, 10));
select @arg;
@arg
-12345.5432100000
execute stmt using @arg;
?
-12345.5432100000
deallocate prepare stmt;
End of 5.0 tests.
create procedure proc_1() reset query cache;
call proc_1();
...
...
mysql-test/suite/rpl/r/rpl_user_variables.result
View file @
2905909d
...
...
@@ -235,6 +235,22 @@ select * from t1;
a b
2 1
drop table t1;
create table t1(a int);
insert into t1 values (1),(2);
prepare s1 from 'insert into t1 select a from t1 limit ?';
set @x='1.1';
execute s1 using @x;
select * from t1;
a
1
2
1
select * from t1;
a
1
2
1
drop table t1;
End of 5.0 tests.
DROP FUNCTION IF EXISTS f1;
DROP FUNCTION IF EXISTS f2;
...
...
mysql-test/suite/rpl/t/rpl_user_variables.test
View file @
2905909d
...
...
@@ -306,6 +306,23 @@ select * from t1;
connection
master
;
drop
table
t1
;
#
# Bug#33851: Passing UNSIGNED param to EXECUTE returns ERROR 1210
#
connection
master
;
create
table
t1
(
a
int
);
insert
into
t1
values
(
1
),(
2
);
prepare
s1
from
'insert into t1 select a from t1 limit ?'
;
set
@
x
=
'1.1'
;
execute
s1
using
@
x
;
select
*
from
t1
;
sync_slave_with_master
;
connection
slave
;
select
*
from
t1
;
connection
master
;
drop
table
t1
;
--
echo
End
of
5.0
tests
.
# This test uses a stored function that uses user-defined variables to return data
...
...
mysql-test/t/limit.test
View file @
2905909d
...
...
@@ -76,15 +76,22 @@ drop table t1;
# Bug #28464: a string argument to 'limit ?' PS
#
prepare
s
from
"select 1 limit ?"
;
set
@
a
=
'qwe'
;
--
error
1210
prepare
s
from
"select 1 limit ?"
;
set
@
a
=
'qwe'
;
execute
s
using
@
a
;
set
@
a
=-
1
;
--
error
ER_WRONG_ARGUMENTS
execute
s
using
@
a
;
prepare
s
from
"select 1 limit 1, ?"
;
--
error
1210
--
error
ER_WRONG_ARGUMENTS
execute
s
using
@
a
;
prepare
s
from
"select 1 limit ?, ?"
;
--
error
1210
--
error
ER_WRONG_ARGUMENTS
execute
s
using
@
a
,
@
a
;
set
@
a
=
14632475938453979136
;
execute
s
using
@
a
,
@
a
;
set
@
a
=-
14632475938453979136
;
--
error
ER_WRONG_ARGUMENTS
execute
s
using
@
a
,
@
a
;
--
echo
End
of
5.0
tests
mysql-test/t/ps.test
View file @
2905909d
...
...
@@ -1961,6 +1961,25 @@ prepare stmt from "create view v1 as select * from t1";
--
error
ER_NO_SUCH_TABLE
prepare
stmt
from
"create view v1 as select * from `t1` `b`"
;
#
# Bug#33851: Passing UNSIGNED param to EXECUTE returns ERROR 1210
#
prepare
stmt
from
"select ?"
;
set
@
arg
=
123456789.987654321
;
select
@
arg
;
execute
stmt
using
@
arg
;
set
@
arg
=
"string"
;
select
@
arg
;
execute
stmt
using
@
arg
;
set
@
arg
=
123456
;
select
@
arg
;
execute
stmt
using
@
arg
;
set
@
arg
=
cast
(
-
12345.54321
as
decimal
(
20
,
10
));
select
@
arg
;
execute
stmt
using
@
arg
;
deallocate
prepare
stmt
;
--
echo
End
of
5.0
tests
.
#
...
...
sql/item.cc
View file @
2905909d
...
...
@@ -2468,14 +2468,14 @@ default_set_param_func(Item_param *param,
Item_param
::
Item_param
(
uint
pos_in_query_arg
)
:
strict_type
(
FALSE
),
state
(
NO_VALUE
),
item_result_type
(
STRING_RESULT
),
/* Don't pretend to be a literal unless value for this item is set. */
item_type
(
PARAM_ITEM
),
param_type
(
MYSQL_TYPE_VARCHAR
),
pos_in_query
(
pos_in_query_arg
),
set_param_func
(
default_set_param_func
)
set_param_func
(
default_set_param_func
),
limit_clause_param
(
FALSE
)
{
name
=
(
char
*
)
"?"
;
/*
...
...
@@ -2659,8 +2659,13 @@ bool Item_param::set_from_user_var(THD *thd, const user_var_entry *entry)
{
item_result_type
=
entry
->
type
;
unsigned_flag
=
entry
->
unsigned_flag
;
if
(
strict_type
&&
required_result_type
!=
item_result_type
)
DBUG_RETURN
(
1
);
if
(
limit_clause_param
)
{
my_bool
unused
;
set_int
(
entry
->
val_int
(
&
unused
),
MY_INT64_NUM_DECIMAL_DIGITS
);
item_type
=
Item
::
INT_ITEM
;
DBUG_RETURN
(
!
unsigned_flag
&&
value
.
integer
<
0
?
1
:
0
);
}
switch
(
item_result_type
)
{
case
REAL_RESULT
:
set_double
(
*
(
double
*
)
entry
->
value
);
...
...
sql/item.h
View file @
2905909d
...
...
@@ -1559,8 +1559,6 @@ class Item_param :public Item
char
cnvbuf
[
MAX_FIELD_WIDTH
];
String
cnvstr
;
Item
*
cnvitem
;
bool
strict_type
;
enum
Item_result
required_result_type
;
public:
enum
enum_item_param_state
...
...
@@ -1690,11 +1688,8 @@ public:
Otherwise return FALSE.
*/
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
void
set_strict_type
(
enum
Item_result
result_type_arg
)
{
strict_type
=
TRUE
;
required_result_type
=
result_type_arg
;
}
/** Item is a argument to a limit clause. */
bool
limit_clause_param
;
};
...
...
sql/item_func.cc
View file @
2905909d
...
...
@@ -3981,7 +3981,7 @@ double user_var_entry::val_real(my_bool *null_value)
/** Get the value of a variable as an integer. */
longlong
user_var_entry
::
val_int
(
my_bool
*
null_value
)
longlong
user_var_entry
::
val_int
(
my_bool
*
null_value
)
const
{
if
((
*
null_value
=
(
value
==
0
)))
return
LL
(
0
);
...
...
sql/sql_class.h
View file @
2905909d
...
...
@@ -2606,7 +2606,7 @@ class user_var_entry
bool
unsigned_flag
;
double
val_real
(
my_bool
*
null_value
);
longlong
val_int
(
my_bool
*
null_value
);
longlong
val_int
(
my_bool
*
null_value
)
const
;
String
*
val_str
(
my_bool
*
null_value
,
String
*
str
,
uint
decimals
);
my_decimal
*
val_decimal
(
my_bool
*
null_value
,
my_decimal
*
result
);
DTCollation
collation
;
...
...
sql/sql_yacc.yy
View file @
2905909d
...
...
@@ -8219,10 +8219,10 @@ limit_options:
;
limit_option:
param_marker
{
((Item_param *) $1)->set_strict_type(INT_RESULT)
;
}
param_marker
{
((Item_param *) $1)->limit_clause_param= TRUE
;
}
| ULONGLONG_NUM { $$= new Item_uint($1.str, $1.length); }
| LONG_NUM { $$= new Item_uint($1.str, $1.length); }
| NUM { $$= new Item_uint($1.str, $1.length); }
...
...
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