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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
de96d529
Commit
de96d529
authored
May 30, 2006
by
evgen@moonbone.local
Browse files
Options
Browse Files
Download
Plain Diff
Manually merged
parents
41f968e1
de8a1b4f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
45 additions
and
4 deletions
+45
-4
mysql-test/r/func_in.result
mysql-test/r/func_in.result
+21
-0
mysql-test/t/func_in.test
mysql-test/t/func_in.test
+12
-0
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+12
-4
No files found.
mysql-test/r/func_in.result
View file @
de96d529
...
@@ -202,6 +202,27 @@ select count(*) from t1 where id not in (1,2);
...
@@ -202,6 +202,27 @@ select count(*) from t1 where id not in (1,2);
count(*)
count(*)
1
1
drop table t1;
drop table t1;
create table t1 (f1 char(1), f2 int);
insert into t1 values (1,0),('a',1),('z',2);
select f1 from t1 where f1 in (1,'z');
f1
1
z
select f2 from t1 where f2 in (1,'z');
f2
0
1
select f1 from t1 where 'z' in (1,f1);
f1
z
select * from t1 where 'z' in (f2,f1);
f1 f2
z 2
select * from t1 where 1 in (f2,f1);
f1 f2
1 0
a 1
drop table t1;
CREATE TABLE t1 (a int PRIMARY KEY);
CREATE TABLE t1 (a int PRIMARY KEY);
INSERT INTO t1 VALUES (44), (45), (46);
INSERT INTO t1 VALUES (44), (45), (46);
SELECT * FROM t1 WHERE a IN (45);
SELECT * FROM t1 WHERE a IN (45);
...
...
mysql-test/t/func_in.test
View file @
de96d529
...
@@ -109,6 +109,18 @@ select count(*) from t1 where id not in (1);
...
@@ -109,6 +109,18 @@ select count(*) from t1 where id not in (1);
select
count
(
*
)
from
t1
where
id
not
in
(
1
,
2
);
select
count
(
*
)
from
t1
where
id
not
in
(
1
,
2
);
drop
table
t1
;
drop
table
t1
;
#
# Bug#18360 Incorrect type coercion in IN() results in false comparison
#
create
table
t1
(
f1
char
(
1
),
f2
int
);
insert
into
t1
values
(
1
,
0
),(
'a'
,
1
),(
'z'
,
2
);
select
f1
from
t1
where
f1
in
(
1
,
'z'
);
select
f2
from
t1
where
f2
in
(
1
,
'z'
);
select
f1
from
t1
where
'z'
in
(
1
,
f1
);
select
*
from
t1
where
'z'
in
(
f2
,
f1
);
select
*
from
t1
where
1
in
(
f2
,
f1
);
drop
table
t1
;
# End of 4.1 tests
# End of 4.1 tests
#
#
...
...
sql/item_cmpfunc.cc
View file @
de96d529
...
@@ -76,11 +76,19 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems)
...
@@ -76,11 +76,19 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems)
field
=
NULL
;
field
=
NULL
;
type
[
0
]
=
items
[
0
]
->
result_type
();
type
[
0
]
=
items
[
0
]
->
result_type
();
for
(
i
=
1
;
i
<
nitems
;
i
++
)
/* Reset to 0 on first occurence of non-const item. 1 otherwise */
bool
is_const
=
items
[
0
]
->
const_item
();
for
(
i
=
1
;
i
<
nitems
;
i
++
)
{
{
type
[
0
]
=
item_cmp_type
(
type
[
0
],
items
[
i
]
->
result_type
());
if
(
!
items
[
i
]
->
const_item
())
if
(
field
&&
convert_constant_item
(
thd
,
field
,
&
items
[
i
]))
{
type
[
0
]
=
INT_RESULT
;
type
[
0
]
=
is_const
?
items
[
i
]
->
result_type
()
:
item_cmp_type
(
type
[
0
],
items
[
i
]
->
result_type
());
is_const
=
0
;
}
else
if
(
is_const
)
type
[
0
]
=
item_cmp_type
(
type
[
0
],
items
[
i
]
->
result_type
());
}
}
}
}
...
...
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