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
c91d6eb7
Commit
c91d6eb7
authored
Jun 21, 2006
by
mikael@dator5.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge dator5.(none):/home/pappa/clean-mysql-5.1
into dator5.(none):/home/pappa/bug17138
parents
43409d98
a8e6967c
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
117 additions
and
38 deletions
+117
-38
mysql-test/r/partition.result
mysql-test/r/partition.result
+15
-0
mysql-test/t/partition.test
mysql-test/t/partition.test
+27
-0
sql/ha_ndbcluster.h
sql/ha_ndbcluster.h
+8
-0
sql/ha_partition.h
sql/ha_partition.h
+8
-0
sql/handler.h
sql/handler.h
+25
-7
sql/item_sum.cc
sql/item_sum.cc
+1
-2
sql/sql_acl.cc
sql/sql_acl.cc
+4
-5
sql/sql_insert.cc
sql/sql_insert.cc
+9
-4
sql/sql_select.cc
sql/sql_select.cc
+4
-5
sql/sql_table.cc
sql/sql_table.cc
+4
-5
sql/sql_union.cc
sql/sql_union.cc
+1
-1
sql/sql_update.cc
sql/sql_update.cc
+11
-9
No files found.
mysql-test/r/partition.result
View file @
c91d6eb7
...
@@ -1043,4 +1043,19 @@ alter table t1 add partition (partition p2 values in (3));
...
@@ -1043,4 +1043,19 @@ alter table t1 add partition (partition p2 values in (3));
alter table t1 drop partition p2;
alter table t1 drop partition p2;
use test;
use test;
drop database db99;
drop database db99;
create table t1 (a int)
partition by list (a)
(partition p0 values in (0));
insert into t1 values (0);
create procedure po ()
begin
begin
declare continue handler for sqlexception begin end;
update ignore t1 set a = 1 where a = 0;
end;
prepare stmt1 from 'alter table t1';
execute stmt1;
end//
call po()//
drop table t1;
End of 5.1 tests
End of 5.1 tests
mysql-test/t/partition.test
View file @
c91d6eb7
...
@@ -1199,4 +1199,31 @@ alter table t1 drop partition p2;
...
@@ -1199,4 +1199,31 @@ alter table t1 drop partition p2;
use
test
;
use
test
;
drop
database
db99
;
drop
database
db99
;
#
#BUG 17138 Problem with stored procedure and analyze partition
#
drop
procedure
mysqltest_1
if
exists
;
create
table
t1
(
a
int
)
partition
by
list
(
a
)
(
partition
p0
values
in
(
0
));
insert
into
t1
values
(
0
);
delimiter
//;
create
procedure
mysqltest_1
()
begin
begin
declare
continue
handler
for
sqlexception
begin
end
;
update
ignore
t1
set
a
=
1
where
a
=
0
;
end
;
prepare
stmt1
from
'alter table t1'
;
execute
stmt1
;
end
//
call
mysqltest_1
()
//
delimiter
;
//
drop
table
t1
;
drop
procedure
mysqltest_1
;
--
echo
End
of
5.1
tests
--
echo
End
of
5.1
tests
sql/ha_ndbcluster.h
View file @
c91d6eb7
...
@@ -654,6 +654,14 @@ class ha_ndbcluster: public handler
...
@@ -654,6 +654,14 @@ class ha_ndbcluster: public handler
int
get_default_no_partitions
(
ulonglong
max_rows
);
int
get_default_no_partitions
(
ulonglong
max_rows
);
bool
get_no_parts
(
const
char
*
name
,
uint
*
no_parts
);
bool
get_no_parts
(
const
char
*
name
,
uint
*
no_parts
);
void
set_auto_partitions
(
partition_info
*
part_info
);
void
set_auto_partitions
(
partition_info
*
part_info
);
virtual
bool
is_fatal_error
(
int
error
,
uint
flags
)
{
if
(
!
handler
::
is_fatal_error
(
error
,
flags
))
return
FALSE
;
if
(
error
==
HA_ERR_NO_PARTITION_FOUND
)
return
FALSE
;
return
TRUE
;
}
THR_LOCK_DATA
**
store_lock
(
THD
*
thd
,
THR_LOCK_DATA
**
store_lock
(
THD
*
thd
,
THR_LOCK_DATA
**
to
,
THR_LOCK_DATA
**
to
,
...
...
sql/ha_partition.h
View file @
c91d6eb7
...
@@ -302,6 +302,14 @@ class ha_partition :public handler
...
@@ -302,6 +302,14 @@ class ha_partition :public handler
virtual
void
start_bulk_insert
(
ha_rows
rows
);
virtual
void
start_bulk_insert
(
ha_rows
rows
);
virtual
int
end_bulk_insert
();
virtual
int
end_bulk_insert
();
virtual
bool
is_fatal_error
(
int
error
,
uint
flags
)
{
if
(
!
handler
::
is_fatal_error
(
error
,
flags
))
return
FALSE
;
if
(
error
==
HA_ERR_NO_PARTITION_FOUND
)
return
FALSE
;
return
TRUE
;
}
/*
/*
-------------------------------------------------------------------------
-------------------------------------------------------------------------
MODULE full table scan
MODULE full table scan
...
...
sql/handler.h
View file @
c91d6eb7
...
@@ -216,11 +216,6 @@
...
@@ -216,11 +216,6 @@
#define HA_BLOCK_LOCK 256
/* unlock when reading some records */
#define HA_BLOCK_LOCK 256
/* unlock when reading some records */
#define HA_OPEN_TEMPORARY 512
#define HA_OPEN_TEMPORARY 512
/* Errors on write which is recoverable (Key exist) */
#define HA_WRITE_SKIP 121
/* Duplicate key on write */
#define HA_READ_CHECK 123
/* Update with is recoverable */
#define HA_CANT_DO_THAT 131
/* Databasehandler can't do it */
/* Some key definitions */
/* Some key definitions */
#define HA_KEY_NULL_LENGTH 1
#define HA_KEY_NULL_LENGTH 1
#define HA_KEY_BLOB_LENGTH 2
#define HA_KEY_BLOB_LENGTH 2
...
@@ -970,7 +965,30 @@ class handler :public Sql_alloc
...
@@ -970,7 +965,30 @@ class handler :public Sql_alloc
bool
has_transactions
()
bool
has_transactions
()
{
return
(
ha_table_flags
()
&
HA_NO_TRANSACTIONS
)
==
0
;
}
{
return
(
ha_table_flags
()
&
HA_NO_TRANSACTIONS
)
==
0
;
}
virtual
uint
extra_rec_buf_length
()
const
{
return
0
;
}
virtual
uint
extra_rec_buf_length
()
const
{
return
0
;
}
/*
This method is used to analyse the error to see whether the error
is ignorable or not, certain handlers can have more error that are
ignorable than others. E.g. the partition handler can get inserts
into a range where there is no partition and this is an ignorable
error.
HA_ERR_FOUND_DUPP_UNIQUE is a special case in MyISAM that means the
same thing as HA_ERR_FOUND_DUPP_KEY but can in some cases lead to
a slightly different error message.
*/
#define HA_CHECK_DUPP_KEY 1
#define HA_CHECK_DUPP_UNIQUE 2
#define HA_CHECK_DUPP (HA_CHECK_DUPP_KEY + HA_CHECK_DUPP_UNIQUE)
virtual
bool
is_fatal_error
(
int
error
,
uint
flags
)
{
if
(
!
error
||
((
flags
&
HA_CHECK_DUPP_KEY
)
&&
(
error
==
HA_ERR_FOUND_DUPP_KEY
||
error
==
HA_ERR_FOUND_DUPP_UNIQUE
)))
return
FALSE
;
return
TRUE
;
}
/*
/*
Number of rows in table. It will only be called if
Number of rows in table. It will only be called if
(table_flags() & (HA_HAS_RECORDS | HA_STATS_RECORDS_IS_EXACT)) != 0
(table_flags() & (HA_HAS_RECORDS | HA_STATS_RECORDS_IS_EXACT)) != 0
...
@@ -1022,7 +1040,7 @@ class handler :public Sql_alloc
...
@@ -1022,7 +1040,7 @@ class handler :public Sql_alloc
DBUG_RETURN
(
rnd_end
());
DBUG_RETURN
(
rnd_end
());
}
}
int
ha_reset
();
int
ha_reset
();
/* this is necessary in many places, e.g. in HANDLER command */
/* this is necessary in many places, e.g. in HANDLER command */
int
ha_index_or_rnd_end
()
int
ha_index_or_rnd_end
()
{
{
...
...
sql/item_sum.cc
View file @
c91d6eb7
...
@@ -2663,8 +2663,7 @@ bool Item_sum_count_distinct::add()
...
@@ -2663,8 +2663,7 @@ bool Item_sum_count_distinct::add()
return
tree
->
unique_add
(
table
->
record
[
0
]
+
table
->
s
->
null_bytes
);
return
tree
->
unique_add
(
table
->
record
[
0
]
+
table
->
s
->
null_bytes
);
}
}
if
((
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
]))
&&
if
((
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
]))
&&
error
!=
HA_ERR_FOUND_DUPP_KEY
&&
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP
))
error
!=
HA_ERR_FOUND_DUPP_UNIQUE
)
return
TRUE
;
return
TRUE
;
return
FALSE
;
return
FALSE
;
}
}
...
...
sql/sql_acl.cc
View file @
c91d6eb7
...
@@ -2049,8 +2049,7 @@ static int replace_user_table(THD *thd, TABLE *table, const LEX_USER &combo,
...
@@ -2049,8 +2049,7 @@ static int replace_user_table(THD *thd, TABLE *table, const LEX_USER &combo,
}
}
else
if
((
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
])))
// insert
else
if
((
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
])))
// insert
{
// This should never happen
{
// This should never happen
if
(
error
&&
error
!=
HA_ERR_FOUND_DUPP_KEY
&&
if
(
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP
))
error
!=
HA_ERR_FOUND_DUPP_UNIQUE
)
/* purecov: inspected */
{
{
table
->
file
->
print_error
(
error
,
MYF
(
0
));
/* purecov: deadcode */
table
->
file
->
print_error
(
error
,
MYF
(
0
));
/* purecov: deadcode */
error
=
-
1
;
/* purecov: deadcode */
error
=
-
1
;
/* purecov: deadcode */
...
@@ -2172,7 +2171,7 @@ static int replace_db_table(TABLE *table, const char *db,
...
@@ -2172,7 +2171,7 @@ static int replace_db_table(TABLE *table, const char *db,
}
}
else
if
(
rights
&&
(
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
])))
else
if
(
rights
&&
(
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
])))
{
{
if
(
error
&&
error
!=
HA_ERR_FOUND_DUPP_KEY
)
/* purecov: inspected */
if
(
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP_KEY
))
goto
table_error
;
/* purecov: deadcode */
goto
table_error
;
/* purecov: deadcode */
}
}
...
@@ -2744,7 +2743,7 @@ static int replace_table_table(THD *thd, GRANT_TABLE *grant_table,
...
@@ -2744,7 +2743,7 @@ static int replace_table_table(THD *thd, GRANT_TABLE *grant_table,
else
else
{
{
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
]);
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
]);
if
(
error
&&
error
!=
HA_ERR_FOUND_DUPP_KEY
)
if
(
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP_KEY
)
)
goto
table_error
;
/* purecov: deadcode */
goto
table_error
;
/* purecov: deadcode */
}
}
...
@@ -2862,7 +2861,7 @@ static int replace_routine_table(THD *thd, GRANT_NAME *grant_name,
...
@@ -2862,7 +2861,7 @@ static int replace_routine_table(THD *thd, GRANT_NAME *grant_name,
else
else
{
{
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
]);
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
]);
if
(
error
&&
error
!=
HA_ERR_FOUND_DUPP_KEY
)
if
(
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP_KEY
)
)
goto
table_error
;
goto
table_error
;
}
}
...
...
sql/sql_insert.cc
View file @
c91d6eb7
...
@@ -976,12 +976,16 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
...
@@ -976,12 +976,16 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
while
((
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
])))
while
((
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
])))
{
{
uint
key_nr
;
uint
key_nr
;
if
(
error
!=
HA_WRITE_SKIP
)
bool
is_duplicate_key_error
;
if
(
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP
))
goto
err
;
goto
err
;
table
->
file
->
restore_auto_increment
();
// it's too early here! BUG#20188
table
->
file
->
restore_auto_increment
();
// it's too early here! BUG#20188
is_duplicate_key_error
=
table
->
file
->
is_fatal_error
(
error
,
0
);
if
(
info
->
ignore
&&
!
is_duplicate_key_error
)
goto
ok_or_after_trg_err
;
if
((
int
)
(
key_nr
=
table
->
file
->
get_dup_key
(
error
))
<
0
)
if
((
int
)
(
key_nr
=
table
->
file
->
get_dup_key
(
error
))
<
0
)
{
{
error
=
HA_
WRITE_SKIP
;
/* Database can't find key */
error
=
HA_
ERR_FOUND_DUPP_KEY
;
/* Database can't find key */
goto
err
;
goto
err
;
}
}
/* Read all columns for the row we are going to replace */
/* Read all columns for the row we are going to replace */
...
@@ -1062,7 +1066,8 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
...
@@ -1062,7 +1066,8 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
if
((
error
=
table
->
file
->
ha_update_row
(
table
->
record
[
1
],
if
((
error
=
table
->
file
->
ha_update_row
(
table
->
record
[
1
],
table
->
record
[
0
])))
table
->
record
[
0
])))
{
{
if
((
error
==
HA_ERR_FOUND_DUPP_KEY
)
&&
info
->
ignore
)
if
(
info
->
ignore
&&
!
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP_KEY
))
goto
ok_or_after_trg_err
;
goto
ok_or_after_trg_err
;
goto
err
;
goto
err
;
}
}
...
@@ -1145,7 +1150,7 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
...
@@ -1145,7 +1150,7 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
else
if
((
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
])))
else
if
((
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
])))
{
{
if
(
!
info
->
ignore
||
if
(
!
info
->
ignore
||
(
error
!=
HA_ERR_FOUND_DUPP_KEY
&&
error
!=
HA_ERR_FOUND_DUPP_UNIQUE
))
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP
))
goto
err
;
goto
err
;
table
->
file
->
restore_auto_increment
();
table
->
file
->
restore_auto_increment
();
goto
ok_or_after_trg_err
;
goto
ok_or_after_trg_err
;
...
...
sql/sql_select.cc
View file @
c91d6eb7
...
@@ -9354,9 +9354,9 @@ bool create_myisam_from_heap(THD *thd, TABLE *table, TMP_TABLE_PARAM *param,
...
@@ -9354,9 +9354,9 @@ bool create_myisam_from_heap(THD *thd, TABLE *table, TMP_TABLE_PARAM *param,
/* copy row that filled HEAP table */
/* copy row that filled HEAP table */
if
((
write_err
=
new_table
.
file
->
write_row
(
table
->
record
[
0
])))
if
((
write_err
=
new_table
.
file
->
write_row
(
table
->
record
[
0
])))
{
{
if
(
write_err
!=
HA_ERR_FOUND_DUPP_KEY
&&
if
(
new_table
.
file
->
is_fatal_error
(
write_err
,
HA_CHECK_DUPP
)
||
write_err
!=
HA_ERR_FOUND_DUPP_UNIQUE
||
!
ignore_last_dupp_key_error
)
!
ignore_last_dupp_key_error
)
goto
err
;
goto
err
;
}
}
/* remove heap table and change to use myisam table */
/* remove heap table and change to use myisam table */
...
@@ -10777,8 +10777,7 @@ end_write(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)),
...
@@ -10777,8 +10777,7 @@ end_write(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)),
join
->
found_records
++
;
join
->
found_records
++
;
if
((
error
=
table
->
file
->
write_row
(
table
->
record
[
0
])))
if
((
error
=
table
->
file
->
write_row
(
table
->
record
[
0
])))
{
{
if
(
error
==
HA_ERR_FOUND_DUPP_KEY
||
if
(
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP
))
error
==
HA_ERR_FOUND_DUPP_UNIQUE
)
goto
end
;
goto
end
;
if
(
create_myisam_from_heap
(
join
->
thd
,
table
,
&
join
->
tmp_table_param
,
if
(
create_myisam_from_heap
(
join
->
thd
,
table
,
&
join
->
tmp_table_param
,
error
,
1
))
error
,
1
))
...
...
sql/sql_table.cc
View file @
c91d6eb7
...
@@ -6268,12 +6268,11 @@ copy_data_between_tables(TABLE *from,TABLE *to,
...
@@ -6268,12 +6268,11 @@ copy_data_between_tables(TABLE *from,TABLE *to,
}
}
if
((
error
=
to
->
file
->
ha_write_row
((
byte
*
)
to
->
record
[
0
])))
if
((
error
=
to
->
file
->
ha_write_row
((
byte
*
)
to
->
record
[
0
])))
{
{
if
((
!
ignore
&&
if
(
!
ignore
||
handle_duplicates
!=
DUP_REPLACE
)
||
handle_duplicates
!=
DUP_REPLACE
||
/* Currently always false */
(
error
!=
HA_ERR_FOUND_DUPP_KEY
&&
to
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP
))
error
!=
HA_ERR_FOUND_DUPP_UNIQUE
))
{
{
if
(
error
==
HA_ERR_FOUND_DUPP_KEY
)
if
(
!
to
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP
)
)
{
{
uint
key_nr
=
to
->
file
->
get_dup_key
(
error
);
uint
key_nr
=
to
->
file
->
get_dup_key
(
error
);
if
((
int
)
key_nr
>=
0
)
if
((
int
)
key_nr
>=
0
)
...
...
sql/sql_union.cc
View file @
c91d6eb7
...
@@ -65,7 +65,7 @@ bool select_union::send_data(List<Item> &values)
...
@@ -65,7 +65,7 @@ bool select_union::send_data(List<Item> &values)
if
((
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
])))
if
((
error
=
table
->
file
->
ha_write_row
(
table
->
record
[
0
])))
{
{
/* create_myisam_from_heap will generate error if needed */
/* create_myisam_from_heap will generate error if needed */
if
(
error
!=
HA_ERR_FOUND_DUPP_KEY
&&
error
!=
HA_ERR_FOUND_DUPP_UNIQUE
&&
if
(
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP
)
&&
create_myisam_from_heap
(
thd
,
table
,
&
tmp_table_param
,
error
,
1
))
create_myisam_from_heap
(
thd
,
table
,
&
tmp_table_param
,
error
,
1
))
return
1
;
return
1
;
}
}
...
...
sql/sql_update.cc
View file @
c91d6eb7
...
@@ -541,13 +541,14 @@ int mysql_update(THD *thd,
...
@@ -541,13 +541,14 @@ int mysql_update(THD *thd,
break
;
break
;
}
}
}
}
else
if
(
!
ignore
||
error
!=
HA_ERR_FOUND_DUPP_KEY
)
else
if
(
!
ignore
||
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP_KEY
))
{
{
/*
/*
If (ignore && error
== HA_ERR_FOUND_DUPP_KEY
) we don't have to
If (ignore && error
is ignorable
) we don't have to
do anything; otherwise...
do anything; otherwise...
*/
*/
if
(
error
!=
HA_ERR_FOUND_DUPP_KEY
)
if
(
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP_KEY
)
)
thd
->
fatal_error
();
/* Other handler errors are fatal */
thd
->
fatal_error
();
/* Other handler errors are fatal */
table
->
file
->
print_error
(
error
,
MYF
(
0
));
table
->
file
->
print_error
(
error
,
MYF
(
0
));
error
=
1
;
error
=
1
;
...
@@ -1422,13 +1423,14 @@ bool multi_update::send_data(List<Item> ¬_used_values)
...
@@ -1422,13 +1423,14 @@ bool multi_update::send_data(List<Item> ¬_used_values)
table
->
record
[
0
])))
table
->
record
[
0
])))
{
{
updated
--
;
updated
--
;
if
(
!
ignore
||
error
!=
HA_ERR_FOUND_DUPP_KEY
)
if
(
!
ignore
||
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP_KEY
))
{
{
/*
/*
If (ignore && error ==
HA_ERR_FOUND_DUPP_KEY
) we don't have to
If (ignore && error ==
is ignorable
) we don't have to
do anything; otherwise...
do anything; otherwise...
*/
*/
if
(
error
!=
HA_ERR_FOUND_DUPP_KEY
)
if
(
table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP_KEY
)
)
thd
->
fatal_error
();
/* Other handler errors are fatal */
thd
->
fatal_error
();
/* Other handler errors are fatal */
table
->
file
->
print_error
(
error
,
MYF
(
0
));
table
->
file
->
print_error
(
error
,
MYF
(
0
));
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
...
@@ -1457,8 +1459,7 @@ bool multi_update::send_data(List<Item> ¬_used_values)
...
@@ -1457,8 +1459,7 @@ bool multi_update::send_data(List<Item> ¬_used_values)
/* Write row, ignoring duplicated updates to a row */
/* Write row, ignoring duplicated updates to a row */
if
((
error
=
tmp_table
->
file
->
ha_write_row
(
tmp_table
->
record
[
0
])))
if
((
error
=
tmp_table
->
file
->
ha_write_row
(
tmp_table
->
record
[
0
])))
{
{
if
(
error
!=
HA_ERR_FOUND_DUPP_KEY
&&
if
(
tmp_table
->
file
->
is_fatal_error
(
error
,
HA_CHECK_DUPP
)
&&
error
!=
HA_ERR_FOUND_DUPP_UNIQUE
&&
create_myisam_from_heap
(
thd
,
tmp_table
,
create_myisam_from_heap
(
thd
,
tmp_table
,
tmp_table_param
+
offset
,
error
,
1
))
tmp_table_param
+
offset
,
error
,
1
))
{
{
...
@@ -1581,7 +1582,8 @@ int multi_update::do_updates(bool from_send_error)
...
@@ -1581,7 +1582,8 @@ int multi_update::do_updates(bool from_send_error)
if
((
local_error
=
table
->
file
->
ha_update_row
(
table
->
record
[
1
],
if
((
local_error
=
table
->
file
->
ha_update_row
(
table
->
record
[
1
],
table
->
record
[
0
])))
table
->
record
[
0
])))
{
{
if
(
!
ignore
||
local_error
!=
HA_ERR_FOUND_DUPP_KEY
)
if
(
!
ignore
||
table
->
file
->
is_fatal_error
(
local_error
,
HA_CHECK_DUPP_KEY
))
goto
err
;
goto
err
;
}
}
updated
++
;
updated
++
;
...
...
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