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
d1fcc620
Commit
d1fcc620
authored
Jun 20, 2006
by
ramil@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/usr/home/ram/work/mysql-4.1
parents
49797c23
1f5715af
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
36 additions
and
64 deletions
+36
-64
innobase/row/row0mysql.c
innobase/row/row0mysql.c
+10
-10
mysql-test/r/func_in.result
mysql-test/r/func_in.result
+0
-21
mysql-test/r/myisam.result
mysql-test/r/myisam.result
+8
-0
mysql-test/t/func_in.test
mysql-test/t/func_in.test
+0
-12
mysql-test/t/myisam.test
mysql-test/t/myisam.test
+9
-0
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+8
-20
sql/sql_update.cc
sql/sql_update.cc
+1
-1
No files found.
innobase/row/row0mysql.c
View file @
d1fcc620
...
...
@@ -2237,14 +2237,14 @@ do not allow the discard. We also reserve the data dictionary latch. */
}
}
funct_exit:
trx_commit_for_mysql
(
trx
);
row_mysql_unlock_data_dictionary
(
trx
);
if
(
graph
)
{
que_graph_free
(
graph
);
}
trx_commit_for_mysql
(
trx
);
trx
->
op_info
=
""
;
return
((
int
)
err
);
...
...
@@ -2374,10 +2374,10 @@ row_import_tablespace_for_mysql(
}
funct_exit:
row_mysql_unlock_data_dictionary
(
trx
);
trx_commit_for_mysql
(
trx
);
row_mysql_unlock_data_dictionary
(
trx
);
trx
->
op_info
=
""
;
return
((
int
)
err
);
...
...
@@ -2769,6 +2769,8 @@ fputs(" InnoDB: You are trying to drop table ", stderr);
}
funct_exit:
trx_commit_for_mysql
(
trx
);
if
(
locked_dictionary
)
{
row_mysql_unlock_data_dictionary
(
trx
);
}
...
...
@@ -2779,8 +2781,6 @@ funct_exit:
que_graph_free
(
graph
);
trx_commit_for_mysql
(
trx
);
trx
->
op_info
=
""
;
srv_wake_master_thread
();
...
...
@@ -2857,10 +2857,10 @@ loop:
}
}
row_mysql_unlock_data_dictionary
(
trx
);
trx_commit_for_mysql
(
trx
);
row_mysql_unlock_data_dictionary
(
trx
);
trx
->
op_info
=
""
;
return
(
err
);
...
...
@@ -3272,6 +3272,8 @@ row_rename_table_for_mysql(
}
}
funct_exit:
trx_commit_for_mysql
(
trx
);
if
(
!
recovering_temp_table
)
{
row_mysql_unlock_data_dictionary
(
trx
);
}
...
...
@@ -3284,8 +3286,6 @@ funct_exit:
mem_heap_free
(
heap
);
}
trx_commit_for_mysql
(
trx
);
trx
->
op_info
=
""
;
return
((
int
)
err
);
...
...
mysql-test/r/func_in.result
View file @
d1fcc620
...
...
@@ -202,24 +202,3 @@ select count(*) from t1 where id not in (1,2);
count(*)
1
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;
mysql-test/r/myisam.result
View file @
d1fcc620
...
...
@@ -748,3 +748,11 @@ select count(id1) from t1 where id2 = 10;
count(id1)
5
drop table t1;
CREATE TABLE t1(a CHAR(9), b VARCHAR(7)) ENGINE=MyISAM;
INSERT INTO t1(a) VALUES('xxxxxxxxx'),('xxxxxxxxx');
UPDATE t1 AS ta1,t1 AS ta2 SET ta1.b='aaaaaa',ta2.b='bbbbbb';
SELECT * FROM t1;
a b
xxxxxxxxx bbbbbb
xxxxxxxxx bbbbbb
DROP TABLE t1;
mysql-test/t/func_in.test
View file @
d1fcc620
...
...
@@ -109,16 +109,4 @@ select count(*) from t1 where id not in (1);
select
count
(
*
)
from
t1
where
id
not
in
(
1
,
2
);
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
mysql-test/t/myisam.test
View file @
d1fcc620
...
...
@@ -705,4 +705,13 @@ select count(*) from t1 where id2 = 10;
select
count
(
id1
)
from
t1
where
id2
=
10
;
drop
table
t1
;
#
# BUG#18036 - update of table joined to self reports table as crashed
#
CREATE
TABLE
t1
(
a
CHAR
(
9
),
b
VARCHAR
(
7
))
ENGINE
=
MyISAM
;
INSERT
INTO
t1
(
a
)
VALUES
(
'xxxxxxxxx'
),(
'xxxxxxxxx'
);
UPDATE
t1
AS
ta1
,
t1
AS
ta2
SET
ta1
.
b
=
'aaaaaa'
,
ta2
.
b
=
'bbbbbb'
;
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
# End of 4.1 tests
sql/item_cmpfunc.cc
View file @
d1fcc620
...
...
@@ -78,9 +78,6 @@ static void agg_result_type(Item_result *type, Item **items, uint nitems)
NOTES
Aggregation rules:
If all items are constants the type will be aggregated from all items.
If there are some non-constant items then only types of non-constant
items will be used for aggregation.
If there are DATE/TIME fields/functions in the list and no string
fields/functions in the list then:
The INT_RESULT type will be used for aggregation instead of original
...
...
@@ -167,34 +164,25 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems)
}
}
}
/* Reset to 0 on first occurence of non-const item. 1 otherwise */
bool
is_const
=
items
[
0
]
->
const_item
();
/*
If the first item is a date/time function then its result should be
compared as int
*/
if
(
field
)
{
/* Suppose we are comparing dates and some non-constant items are present. */
/* Suppose we are comparing dates */
type
[
0
]
=
INT_RESULT
;
is_const
=
0
;
}
else
type
[
0
]
=
items
[
0
]
->
result_type
();
for
(
i
=
0
;
i
<
nitems
;
i
++
)
{
if
(
!
items
[
i
]
->
const_item
())
{
Item_result
result
=
field
&&
items
[
i
]
->
result_as_longlong
()
?
INT_RESULT
:
items
[
i
]
->
result_type
();
type
[
0
]
=
is_const
?
result
:
item_cmp_type
(
type
[
0
],
result
);
is_const
=
0
;
}
else
if
(
is_const
)
type
[
0
]
=
item_cmp_type
(
type
[
0
],
items
[
i
]
->
result_type
());
else
if
(
field
)
convert_constant_item
(
thd
,
field
,
&
items
[
i
]);
Item_result
result
=
items
[
i
]
->
result_type
();
if
(
field
&&
((
!
items
[
i
]
->
const_item
()
&&
items
[
i
]
->
result_as_longlong
())
||
(
items
[
i
]
->
const_item
()
&&
convert_constant_item
(
thd
,
field
,
&
items
[
i
]))))
result
=
INT_RESULT
;
type
[
0
]
=
item_cmp_type
(
type
[
0
],
result
);
}
if
(
res
==
Item
::
FUNC_ITEM
&&
field
)
...
...
sql/sql_update.cc
View file @
d1fcc620
...
...
@@ -862,7 +862,7 @@ int multi_update::prepare(List<Item> ¬_used_values,
for
(
table_ref
=
all_tables
;
table_ref
;
table_ref
=
table_ref
->
next
)
{
TABLE
*
table
=
table_ref
->
table
;
if
(
!
(
tables_to_update
&
table
->
map
)
&&
if
((
tables_to_update
&
table
->
map
)
&&
mysql_lock_have_duplicate
(
thd
,
table
,
update_tables
))
table
->
no_cache
=
1
;
// Disable row cache
}
...
...
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