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
4d6805f2
Commit
4d6805f2
authored
Apr 02, 2007
by
marko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
branches/zip: Merge revisions 1322:1402 from trunk.
parent
d753d3e8
Changes
35
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
328 additions
and
1311 deletions
+328
-1311
CMakeLists.txt
CMakeLists.txt
+2
-2
Makefile.am
Makefile.am
+2
-0
dict/dict0crea.c
dict/dict0crea.c
+2
-2
dict/dict0dict.c
dict/dict0dict.c
+7
-6
dict/dict0load.c
dict/dict0load.c
+3
-3
dict/dict0mem.c
dict/dict0mem.c
+11
-11
eval/eval0proc.c
eval/eval0proc.c
+1
-1
handler/ha_innodb.cc
handler/ha_innodb.cc
+94
-109
handler/ha_innodb.h
handler/ha_innodb.h
+3
-15
include/rem0rec.ic
include/rem0rec.ic
+3
-0
include/srv0srv.h
include/srv0srv.h
+2
-0
include/trx0trx.h
include/trx0trx.h
+1
-12
include/ut0byte.ic
include/ut0byte.ic
+2
-2
include/ut0ut.ic
include/ut0ut.ic
+1
-1
lock/lock0lock.c
lock/lock0lock.c
+21
-9
mtr/mtr0log.c
mtr/mtr0log.c
+1
-1
mysql-test/innodb-lock.test
mysql-test/innodb-lock.test
+0
-2
mysql-test/innodb-replace.result
mysql-test/innodb-replace.result
+2
-2
mysql-test/innodb-replace.test
mysql-test/innodb-replace.test
+2
-2
mysql-test/innodb.result
mysql-test/innodb.result
+10
-313
mysql-test/innodb.test
mysql-test/innodb.test
+14
-223
mysql-test/innodb_gis.result
mysql-test/innodb_gis.result
+0
-464
mysql-test/innodb_gis.test
mysql-test/innodb_gis.test
+0
-9
os/os0file.c
os/os0file.c
+118
-99
pars/lexyy.c
pars/lexyy.c
+1
-1
pars/pars0lex.l
pars/pars0lex.l
+1
-1
plug.in
plug.in
+2
-0
rem/rem0cmp.c
rem/rem0cmp.c
+1
-1
row/row0mysql.c
row/row0mysql.c
+2
-2
row/row0sel.c
row/row0sel.c
+1
-1
row/row0undo.c
row/row0undo.c
+7
-7
srv/srv0srv.c
srv/srv0srv.c
+2
-0
sync/sync0rw.c
sync/sync0rw.c
+4
-4
trx/trx0purge.c
trx/trx0purge.c
+1
-1
trx/trx0trx.c
trx/trx0trx.c
+4
-5
No files found.
CMakeLists.txt
View file @
4d6805f2
...
...
@@ -13,8 +13,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#SET(CMAKE_CXX_FLAGS_DEBUG "
-DSAFEMALLOC -DSAFE_MUTEX")
#SET(CMAKE_C_FLAGS_DEBUG "
-DSAFEMALLOC -DSAFE_MUTEX")
SET
(
CMAKE_CXX_FLAGS_DEBUG
"
${
CMAKE_CXX_FLAGS_DEBUG
}
-DSAFEMALLOC -DSAFE_MUTEX"
)
SET
(
CMAKE_C_FLAGS_DEBUG
"
${
CMAKE_C_FLAGS_DEBUG
}
-DSAFEMALLOC -DSAFE_MUTEX"
)
ADD_DEFINITIONS
(
-DMYSQL_SERVER -D_WIN32 -DWIN32 -D_LIB
)
INCLUDE_DIRECTORIES
(
${
CMAKE_SOURCE_DIR
}
/include
${
CMAKE_SOURCE_DIR
}
/zlib
...
...
Makefile.am
View file @
4d6805f2
...
...
@@ -91,6 +91,8 @@ EXTRA_DIST = include/btr0btr.h include/btr0btr.ic include/btr0cur.h include/btr
include/ut0sort.h include/ut0ut.h include/ut0ut.ic include/ut0vec.h include/ut0vec.ic include/ha_prototypes.h
\
include/ut0list.h include/ut0list.ic
\
include/ut0wqueue.h
\
pars/make_bison.sh pars/make_flex.sh
\
pars/pars0grm.y pars/pars0lex.l
CMakeLists.txt
plug.in
noinst_LIBRARIES
=
libinnobase.a
...
...
dict/dict0crea.c
View file @
4d6805f2
...
...
@@ -261,7 +261,7 @@ dict_build_table_def_step(
&
space
,
path_or_name
,
is_path
,
dict_table_zip_size
(
table
),
FIL_IBD_FILE_INITIAL_SIZE
);
table
->
space
=
space
;
table
->
space
=
(
unsigned
int
)
space
;
if
(
error
!=
DB_SUCCESS
)
{
...
...
@@ -820,7 +820,7 @@ dict_truncate_index_tree(
root_page_no
=
btr_create
(
type
,
space
,
zip_size
,
index_id
,
index
,
mtr
);
if
(
index
)
{
index
->
page
=
root_page_no
;
index
->
page
=
(
unsigned
int
)
root_page_no
;
}
else
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
...
...
dict/dict0dict.c
View file @
4d6805f2
...
...
@@ -683,7 +683,8 @@ dict_table_get_on_id(
if we are doing a rollback to handle an error in TABLE
CREATE, for example, we already have the mutex! */
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
))
||
trx
->
dict_operation_lock_mode
==
RW_X_LATCH
);
return
(
dict_table_get_on_id_low
(
table_id
));
}
...
...
@@ -1411,7 +1412,7 @@ dict_index_add_to_cache(
dict_index_get_nth_field
(
new_index
,
i
)
->
col
->
ord_part
=
1
;
}
new_index
->
page
=
page_no
;
new_index
->
page
=
(
unsigned
int
)
page_no
;
rw_lock_create
(
&
new_index
->
lock
,
SYNC_INDEX_TREE
);
if
(
!
UNIV_UNLIKELY
(
new_index
->
type
&
DICT_UNIVERSAL
))
{
...
...
@@ -1522,10 +1523,10 @@ dict_index_add_col(
field
=
dict_index_get_nth_field
(
index
,
index
->
n_def
-
1
);
field
->
col
=
col
;
field
->
fixed_len
=
dict_col_get_fixed_size
(
col
);
field
->
fixed_len
=
(
unsigned
int
)
dict_col_get_fixed_size
(
col
);
if
(
prefix_len
&&
field
->
fixed_len
>
prefix_len
)
{
field
->
fixed_len
=
prefix_len
;
field
->
fixed_len
=
(
unsigned
int
)
prefix_len
;
}
/* Long fixed-length fields that need external storage are treated as
...
...
@@ -1726,7 +1727,7 @@ dict_index_build_internal_clust(
break
;
}
new_index
->
trx_id_offset
+=
fixed_size
;
new_index
->
trx_id_offset
+=
(
unsigned
int
)
fixed_size
;
}
}
...
...
@@ -3039,7 +3040,7 @@ dict_create_foreign_constraints_low(
foreign
->
foreign_table_name
=
mem_heap_strdup
(
foreign
->
heap
,
table
->
name
);
foreign
->
foreign_index
=
index
;
foreign
->
n_fields
=
i
;
foreign
->
n_fields
=
(
unsigned
int
)
i
;
foreign
->
foreign_col_names
=
mem_heap_alloc
(
foreign
->
heap
,
i
*
sizeof
(
void
*
));
for
(
i
=
0
;
i
<
foreign
->
n_fields
;
i
++
)
{
...
...
dict/dict0load.c
View file @
4d6805f2
...
...
@@ -882,7 +882,7 @@ dict_load_table(
table
=
dict_mem_table_create
(
name
,
space
,
n_cols
&
~
0x80000000UL
,
flags
);
table
->
ibd_file_missing
=
ibd_file_missing
;
table
->
ibd_file_missing
=
(
unsigned
int
)
ibd_file_missing
;
ut_a
(
name_of_col_is
(
sys_tables
,
sys_index
,
3
,
"ID"
));
...
...
@@ -1217,8 +1217,8 @@ dict_load_foreign(
/* We store the type in the bits 24..29 of n_fields_and_type. */
foreign
->
type
=
n_fields_and_type
>>
24
;
foreign
->
n_fields
=
n_fields_and_type
&
0x3FFUL
;
foreign
->
type
=
(
unsigned
int
)
(
n_fields_and_type
>>
24
)
;
foreign
->
n_fields
=
(
unsigned
int
)
(
n_fields_and_type
&
0x3FFUL
)
;
foreign
->
id
=
mem_heap_strdup
(
foreign
->
heap
,
id
);
...
...
dict/dict0mem.c
View file @
4d6805f2
...
...
@@ -49,14 +49,14 @@ dict_mem_table_create(
table
->
heap
=
heap
;
table
->
flags
=
flags
;
table
->
flags
=
(
unsigned
int
)
flags
;
table
->
name
=
mem_heap_strdup
(
heap
,
name
);
table
->
dir_path_of_temp_table
=
NULL
;
table
->
space
=
space
;
table
->
space
=
(
unsigned
int
)
space
;
table
->
ibd_file_missing
=
FALSE
;
table
->
tablespace_discarded
=
FALSE
;
table
->
n_def
=
0
;
table
->
n_cols
=
n_cols
+
DATA_N_SYS_COLS
;
table
->
n_cols
=
(
unsigned
int
)
(
n_cols
+
DATA_N_SYS_COLS
)
;
table
->
n_mysql_handles_opened
=
0
;
table
->
n_foreign_key_checks_running
=
0
;
...
...
@@ -202,14 +202,14 @@ dict_mem_table_add_col(
col
->
ind
=
i
;
col
->
ord_part
=
0
;
col
->
mtype
=
mtype
;
col
->
prtype
=
prtype
;
col
->
len
=
len
;
col
->
mtype
=
(
unsigned
int
)
mtype
;
col
->
prtype
=
(
unsigned
int
)
prtype
;
col
->
len
=
(
unsigned
int
)
len
;
dtype_get_mblen
(
mtype
,
prtype
,
&
mbminlen
,
&
mbmaxlen
);
col
->
mbminlen
=
mbminlen
;
col
->
mbmaxlen
=
mbmaxlen
;
col
->
mbminlen
=
(
unsigned
int
)
mbminlen
;
col
->
mbmaxlen
=
(
unsigned
int
)
mbmaxlen
;
}
/**************************************************************************
...
...
@@ -239,13 +239,13 @@ dict_mem_index_create(
index
->
heap
=
heap
;
index
->
type
=
type
;
index
->
space
=
space
;
index
->
space
=
(
unsigned
int
)
space
;
index
->
page
=
0
;
index
->
name
=
mem_heap_strdup
(
heap
,
index_name
);
index
->
table_name
=
table_name
;
index
->
table
=
NULL
;
index
->
n_def
=
index
->
n_nullable
=
0
;
index
->
n_fields
=
n_fields
;
index
->
n_fields
=
(
unsigned
int
)
n_fields
;
index
->
fields
=
mem_heap_alloc
(
heap
,
1
+
n_fields
*
sizeof
(
dict_field_t
));
/* The '1 +' above prevents allocation
...
...
@@ -320,7 +320,7 @@ dict_mem_index_add_field(
field
=
dict_index_get_nth_field
(
index
,
index
->
n_def
-
1
);
field
->
name
=
name
;
field
->
prefix_len
=
prefix_len
;
field
->
prefix_len
=
(
unsigned
int
)
prefix_len
;
}
/**************************************************************************
...
...
eval/eval0proc.c
View file @
4d6805f2
...
...
@@ -194,7 +194,7 @@ for_step(
loop_var_value
=
eval_node_get_int_val
(
node
->
loop_start_limit
);
node
->
loop_end_value
=
eval_node_get_int_val
(
node
->
loop_end_limit
);
=
(
int
)
eval_node_get_int_val
(
node
->
loop_end_limit
);
}
/* Check if we should do another loop */
...
...
handler/ha_innodb.cc
View file @
4d6805f2
This diff is collapsed.
Click to expand it.
handler/ha_innodb.h
View file @
4d6805f2
...
...
@@ -35,10 +35,6 @@ typedef struct st_innobase_share {
struct
row_prebuilt_struct
;
typedef
struct
row_prebuilt_struct
row_prebuilt_t
;
my_bool
innobase_query_caching_of_table_permitted
(
THD
*
thd
,
char
*
full_name
,
uint
full_name_len
,
ulonglong
*
unused
);
/* The class defining a handle to an Innodb table */
class
ha_innobase
:
public
handler
{
...
...
@@ -48,8 +44,6 @@ class ha_innobase: public handler
THD
*
user_thd
;
/* the thread handle of the user
currently using the handle; this is
set in external_lock function */
query_id_t
last_query_id
;
/* the latest query id where the
handle was used */
THR_LOCK_DATA
lock
;
INNOBASE_SHARE
*
share
;
...
...
@@ -186,14 +180,7 @@ class ha_innobase: public handler
my_bool
register_query_cache_table
(
THD
*
thd
,
char
*
table_key
,
uint
key_length
,
qc_engine_callback
*
call_back
,
ulonglong
*
engine_data
)
{
*
call_back
=
innobase_query_caching_of_table_permitted
;
*
engine_data
=
0
;
return
innobase_query_caching_of_table_permitted
(
thd
,
table_key
,
key_length
,
engine_data
);
}
ulonglong
*
engine_data
);
static
char
*
get_mysql_bin_log_name
();
static
ulonglong
get_mysql_bin_log_pos
();
bool
primary_key_is_clustered
()
{
return
true
;
}
...
...
@@ -222,7 +209,8 @@ extern my_bool innobase_log_archive,
innobase_use_native_aio
,
innobase_file_per_table
,
innobase_locks_unsafe_for_binlog
,
innobase_rollback_on_timeout
,
innobase_create_status_file
;
innobase_create_status_file
,
innobase_stats_on_metadata
;
extern
"C"
{
extern
ulong
srv_buf_pool_curr_size
;
extern
ulong
srv_buf_pool_size
;
...
...
include/rem0rec.ic
View file @
4d6805f2
...
...
@@ -1103,6 +1103,9 @@ rec_offs_nth_size(
{
ut_ad(rec_offs_validate(NULL, NULL, offsets));
ut_ad(n < rec_offs_n_fields(offsets));
if (!n) {
return(rec_offs_base(offsets)[1 + n] & REC_OFFS_MASK);
}
return((rec_offs_base(offsets)[1 + n] - rec_offs_base(offsets)[n])
& REC_OFFS_MASK);
}
...
...
include/srv0srv.h
View file @
4d6805f2
...
...
@@ -125,6 +125,8 @@ extern ulint srv_fast_shutdown; /* If this is 1, do not do a
transactions). */
extern
ibool
srv_innodb_status
;
extern
ibool
srv_stats_on_metadata
;
extern
ibool
srv_use_doublewrite_buf
;
extern
ibool
srv_use_checksums
;
...
...
include/trx0trx.h
View file @
4d6805f2
...
...
@@ -375,8 +375,6 @@ trx_is_interrupted(
/* Signal to a transaction */
struct
trx_sig_struct
{
ulint
type
;
/* signal type */
ulint
state
;
/* TRX_SIG_WAITING or
TRX_SIG_BEING_HANDLED */
ulint
sender
;
/* TRX_SIG_SELF or
TRX_SIG_OTHER_SESS */
que_thr_t
*
receiver
;
/* non-NULL if the sender of the signal
...
...
@@ -404,7 +402,7 @@ struct trx_struct{
const
char
*
op_info
;
/* English text describing the
current operation, or an empty
string */
u
lint
type
;
/* TRX_USER, TRX_PURGE
*/
u
nsigned
is_purge
:
1
;
/* 0=user transaction, 1=purge
*/
ulint
conc_state
;
/* state of the trx from the point
of view of concurrency control:
TRX_ACTIVE, TRX_COMMITTED_IN_MEMORY,
...
...
@@ -675,12 +673,6 @@ struct trx_struct{
single operation of a
transaction, e.g., a parallel
query */
/* Transaction types */
#define TRX_USER 1
/* normal user transaction */
#define TRX_PURGE 2
/* purge transaction: this is not
inserted to the trx list of trx_sys
and no rollback segment is assigned to
this */
/* Transaction concurrency states */
#define TRX_NOT_STARTED 1
#define TRX_ACTIVE 2
...
...
@@ -742,9 +734,6 @@ struct trx_struct{
session */
#define TRX_SIG_OTHER_SESS 2
/* sent by another session (which
must hold rights to this) */
/* Signal states */
#define TRX_SIG_WAITING 1
#define TRX_SIG_BEING_HANDLED 2
/* Commit command node in a query graph */
struct
commit_node_struct
{
...
...
include/ut0byte.ic
View file @
4d6805f2
...
...
@@ -426,8 +426,8 @@ ut_bit_set_nth(
# error "TRUE != 1"
#endif
if (val) {
return((1 << n) | a);
return((
(ulint)
1 << n) | a);
} else {
return(~(1 << n) & a);
return(~(
(ulint)
1 << n) & a);
}
}
include/ut0ut.ic
View file @
4d6805f2
...
...
@@ -182,5 +182,5 @@ ut_2_exp(
/* out: 2 to power n */
ulint n) /* in: number */
{
return(1 << n);
return(
(ulint)
1 << n);
}
lock/lock0lock.c
View file @
4d6805f2
...
...
@@ -3416,12 +3416,6 @@ lock_deadlock_recursive(
*
cost
=
*
cost
+
1
;
if
((
depth
>
LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK
)
||
(
*
cost
>
LOCK_MAX_N_STEPS_IN_DEADLOCK_CHECK
))
{
return
(
LOCK_VICTIM_IS_START
);
}
lock
=
wait_lock
;
if
(
lock_get_type
(
wait_lock
)
==
LOCK_REC
)
{
...
...
@@ -3454,11 +3448,18 @@ lock_deadlock_recursive(
if
(
lock_has_to_wait
(
wait_lock
,
lock
))
{
ibool
too_far
=
depth
>
LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK
||
*
cost
>
LOCK_MAX_N_STEPS_IN_DEADLOCK_CHECK
;
lock_trx
=
lock
->
trx
;
if
(
lock_trx
==
start
)
{
if
(
lock_trx
==
start
||
too_far
)
{
/* We came back to the recursion starting
point: a deadlock detected */
point: a deadlock detected; or we have
searched the waits-for graph too long */
FILE
*
ef
=
lock_latest_err_file
;
rewind
(
ef
);
...
...
@@ -3500,9 +3501,20 @@ lock_deadlock_recursive(
}
#ifdef UNIV_DEBUG
if
(
lock_print_waits
)
{
fputs
(
"Deadlock detected
\n
"
,
stderr
);
fputs
(
"Deadlock detected"
" or too long search
\n
"
,
stderr
);
}
#endif
/* UNIV_DEBUG */
if
(
too_far
)
{
fputs
(
"TOO DEEP OR LONG SEARCH"
" IN THE LOCK TABLE"
" WAITS-FOR GRAPH
\n
"
,
ef
);
return
(
LOCK_VICTIM_IS_START
);
}
if
(
ut_dulint_cmp
(
wait_lock
->
trx
->
undo_no
,
start
->
undo_no
)
>=
0
)
{
/* Our recursion starting point
...
...
mtr/mtr0log.c
View file @
4d6805f2
...
...
@@ -547,7 +547,7 @@ mlog_parse_index(
ind
=
dict_mem_index_create
(
"LOG_DUMMY"
,
"LOG_DUMMY"
,
DICT_HDR_SPACE
,
0
,
n
);
ind
->
table
=
table
;
ind
->
n_uniq
=
n_uniq
;
ind
->
n_uniq
=
(
unsigned
int
)
n_uniq
;
if
(
n_uniq
!=
n
)
{
ut_a
(
n_uniq
+
DATA_ROLL_PTR
<=
n
);
ind
->
type
=
DICT_CLUSTERED
;
...
...
mysql-test/innodb-lock.test
View file @
4d6805f2
--
source
include
/
have_innodb
.
inc
# Can't test this with embedded server
--
source
include
/
not_embedded
.
inc
#
# Check and select innodb lock type
...
...
mysql-test/innodb-replace.result
View file @
4d6805f2
...
...
@@ -2,11 +2,11 @@ drop table if exists t1;
create table t1 (c1 char(5) unique not null, c2 int, stamp timestamp) engine=innodb;
select * from t1;
c1 c2 stamp
replace delayed into t1 (c1, c2) values ( "text1","11")
,( "text2","12")
;
replace delayed into t1 (c1, c2) values ( "text1","11");
ERROR HY000: Table storage engine for 't1' doesn't have this option
select * from t1;
c1 c2 stamp
replace delayed into t1 (c1, c2) values ( "text1","12")
,( "text2","13"),( "text3","14", "a" ),( "text4","15", "b" )
;
replace delayed into t1 (c1, c2) values ( "text1","12");
ERROR HY000: Table storage engine for 't1' doesn't have this option
select * from t1;
c1 c2 stamp
...
...
mysql-test/innodb-replace.test
View file @
4d6805f2
...
...
@@ -12,10 +12,10 @@ drop table if exists t1;
create
table
t1
(
c1
char
(
5
)
unique
not
null
,
c2
int
,
stamp
timestamp
)
engine
=
innodb
;
select
*
from
t1
;
--
error
1031
replace
delayed
into
t1
(
c1
,
c2
)
values
(
"text1"
,
"11"
)
,(
"text2"
,
"12"
)
;
replace
delayed
into
t1
(
c1
,
c2
)
values
(
"text1"
,
"11"
);
select
*
from
t1
;
--
error
1031
replace
delayed
into
t1
(
c1
,
c2
)
values
(
"text1"
,
"12"
)
,(
"text2"
,
"13"
),(
"text3"
,
"14"
,
"a"
),(
"text4"
,
"15"
,
"b"
)
;
replace
delayed
into
t1
(
c1
,
c2
)
values
(
"text1"
,
"12"
);
select
*
from
t1
;
drop
table
t1
;
...
...
mysql-test/innodb.result
View file @
4d6805f2
This diff is collapsed.
Click to expand it.
mysql-test/innodb.test
View file @
4d6805f2
This diff is collapsed.
Click to expand it.
mysql-test/innodb_gis.result
deleted
100644 → 0
View file @
d753d3e8
This diff is collapsed.
Click to expand it.
mysql-test/innodb_gis.test
deleted
100644 → 0
View file @
d753d3e8
--
source
include
/
have_innodb
.
inc
SET
storage_engine
=
innodb
;
--
source
include
/
gis_generic
.
inc
#
# Bug #15680 (SPATIAL key in innodb)
#
--
error
ER_TABLE_CANT_HANDLE_SPKEYS
create
table
t1
(
g
geometry
not
null
,
spatial
gk
(
g
))
engine
=
innodb
;
os/os0file.c
View file @
4d6805f2
...
...
@@ -318,7 +318,7 @@ os_file_get_last_error(
fflush
(
stderr
);
if
(
err
==
ENOSPC
)
{
if
(
err
==
ENOSPC
)
{
return
(
OS_FILE_DISK_FULL
);
#ifdef POSIX_ASYNC_IO
}
else
if
(
err
==
EAGAIN
)
{
...
...
@@ -337,15 +337,20 @@ os_file_get_last_error(
}
/********************************************************************
Does error handling when a file operation fails. */
Does error handling when a file operation fails.
Conditionally exits (calling exit(3)) based on should_exit value and the
error type */
static
ibool
os_file_handle_error
(
/*=================*/
/* out: TRUE if we should retry the
operation */
const
char
*
name
,
/* in: name of a file or NULL */
const
char
*
operation
)
/* in: operation */
os_file_handle_error_cond_exit
(
/*===========================*/
/* out: TRUE if we should retry the
operation */
const
char
*
name
,
/* in: name of a file or NULL */
const
char
*
operation
,
/* in: operation */
ibool
should_exit
)
/* in: call exit(3) if unknown error
and this parameter is TRUE */
{
ulint
err
;
...
...
@@ -376,11 +381,9 @@ os_file_handle_error(
fflush
(
stderr
);
return
(
FALSE
);
}
else
if
(
err
==
OS_FILE_AIO_RESOURCES_RESERVED
)
{
return
(
TRUE
);
}
else
if
(
err
==
OS_FILE_ALREADY_EXISTS
||
err
==
OS_FILE_PATH_ERROR
)
{
...
...
@@ -392,16 +395,49 @@ os_file_handle_error(
fprintf
(
stderr
,
"InnoDB: File operation call: '%s'.
\n
"
,
operation
);
fprintf
(
stderr
,
"InnoDB: Cannot continue operation.
\n
"
);
fflush
(
stderr
);
if
(
should_exit
)
{
fprintf
(
stderr
,
"InnoDB: Cannot continue operation.
\n
"
);
exit
(
1
);
fflush
(
stderr
);
exit
(
1
);
}
}
return
(
FALSE
);
}
/********************************************************************
Does error handling when a file operation fails. */
static
ibool
os_file_handle_error
(
/*=================*/
/* out: TRUE if we should retry the
operation */
const
char
*
name
,
/* in: name of a file or NULL */
const
char
*
operation
)
/* in: operation */
{
/* exit in case of unknown error */
return
(
os_file_handle_error_cond_exit
(
name
,
operation
,
TRUE
));
}
/********************************************************************
Does error handling when a file operation fails. */
static
ibool
os_file_handle_error_no_exit
(
/*=========================*/
/* out: TRUE if we should retry the
operation */
const
char
*
name
,
/* in: name of a file or NULL */
const
char
*
operation
)
/* in: operation */
{
/* don't exit in case of unknown error */
return
(
os_file_handle_error_cond_exit
(
name
,
operation
,
FALSE
));
}
#undef USE_FILE_LOCK
#define USE_FILE_LOCK
#if defined(UNIV_HOTBACKUP) || defined(__WIN__) || defined(__FreeBSD__) || defined(__NETWARE__)
...
...
@@ -445,68 +481,6 @@ os_file_lock(
}
#endif
/* USE_FILE_LOCK */
/********************************************************************
Does error handling when a file operation fails. */
static
ibool
os_file_handle_error_no_exit
(
/*=========================*/
/* out: TRUE if we should retry the
operation */
const
char
*
name
,
/* in: name of a file or NULL */
const
char
*
operation
)
/* in: operation */
{
ulint
err
;
err
=
os_file_get_last_error
(
FALSE
);
if
(
err
==
OS_FILE_DISK_FULL
)
{
/* We only print a warning about disk full once */
if
(
os_has_said_disk_full
)
{
return
(
FALSE
);
}
if
(
name
)
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: Encountered a problem with"
" file %s
\n
"
,
name
);
}
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: Disk is full. Try to clean the disk"
" to free space.
\n
"
);
os_has_said_disk_full
=
TRUE
;
fflush
(
stderr
);
return
(
FALSE
);
}
else
if
(
err
==
OS_FILE_AIO_RESOURCES_RESERVED
)
{
return
(
TRUE
);
}
else
if
(
err
==
OS_FILE_ALREADY_EXISTS
||
err
==
OS_FILE_PATH_ERROR
)
{
return
(
FALSE
);
}
else
{
if
(
name
)
{
fprintf
(
stderr
,
"InnoDB: File name %s
\n
"
,
name
);
}
fprintf
(
stderr
,
"InnoDB: File operation call: '%s'.
\n
"
,
operation
);
return
(
FALSE
);
}
return
(
FALSE
);
/* not reached */
}
/********************************************************************
Creates the seek mutexes used in positioned reads and writes. */
...
...
@@ -930,7 +904,7 @@ os_file_create_simple(
file
=
CreateFile
((
LPCTSTR
)
name
,
access
,
FILE_SHARE_READ
|
FILE_SHARE_WRITE
,
/* file can be read an
s
d written also
/* file can be read and written also
by other processes */
NULL
,
/* default security attributes */
create_flag
,
...
...
@@ -1124,6 +1098,51 @@ os_file_create_simple_no_error_handling(
#endif
/* __WIN__ */
}
/********************************************************************
Tries to disable OS caching on an opened file descriptor. */
void
os_file_set_nocache
(
/*================*/
int
fd
,
/* in: file descriptor to alter */
const
char
*
file_name
,
/* in: used in the diagnostic message */
const
char
*
operation_name
)
/* in: used in the diagnostic message,
we call os_file_set_nocache()
immediately after opening or creating
a file, so this is either "open" or
"create" */
{
/* some versions of Solaris may not have DIRECTIO_ON */
#if defined(UNIV_SOLARIS) && defined(DIRECTIO_ON)
if
(
directio
(
fd
,
DIRECTIO_ON
)
==
-
1
)
{
int
errno_save
;
errno_save
=
(
int
)
errno
;
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: Failed to set DIRECTIO_ON "
"on file %s: %s: %s, continuing anyway
\n
"
,
file_name
,
operation_name
,
strerror
(
errno_save
));
}
#elif defined(O_DIRECT)
if
(
fcntl
(
fd
,
F_SETFL
,
O_DIRECT
)
==
-
1
)
{
int
errno_save
;
errno_save
=
(
int
)
errno
;
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: Failed to set O_DIRECT "
"on file %s: %s: %s, continuing anyway
\n
"
,
file_name
,
operation_name
,
strerror
(
errno_save
));
if
(
errno_save
==
EINVAL
)
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: O_DIRECT is known to result in "
"'Invalid argument' on Linux on tmpfs, "
"see MySQL Bug#26662
\n
"
);
}
}
#endif
}
/********************************************************************
Opens an existing file or creates a new. */
...
...
@@ -1306,21 +1325,8 @@ os_file_create(
create_flag
=
create_flag
|
O_SYNC
;
}
#endif
/* O_SYNC */
#ifdef O_DIRECT
/* We let O_DIRECT only affect data files */
if
(
type
!=
OS_LOG_FILE
&&
srv_unix_file_flush_method
==
SRV_UNIX_O_DIRECT
)
{
# if 0
fprintf
(
stderr
,
"Using O_DIRECT for file %s
\n
"
,
name
);
# endif
create_flag
=
create_flag
|
O_DIRECT
;
}
#endif
/* O_DIRECT */
if
(
create_mode
==
OS_FILE_CREATE
)
{
file
=
open
(
name
,
create_flag
,
os_innodb_umask
);
}
else
{
file
=
open
(
name
,
create_flag
);
}
file
=
open
(
name
,
create_flag
,
os_innodb_umask
);
if
(
file
==
-
1
)
{
*
success
=
FALSE
;
...
...
@@ -1330,11 +1336,24 @@ os_file_create(
"create"
:
"open"
);
if
(
retry
)
{
goto
try_again
;
}
else
{
return
(
file
/* -1 */
);
}
}
/* else */
*
success
=
TRUE
;
/* We disable OS caching (O_DIRECT) only on data files */
if
(
type
!=
OS_LOG_FILE
&&
srv_unix_file_flush_method
==
SRV_UNIX_O_DIRECT
)
{
os_file_set_nocache
(
file
,
name
,
mode_str
);
}
#ifdef USE_FILE_LOCK
}
else
if
(
create_mode
!=
OS_FILE_OPEN_RAW
&&
os_file_lock
(
file
,
name
))
{
*
success
=
FALSE
;
if
(
create_mode
!=
OS_FILE_OPEN_RAW
&&
os_file_lock
(
file
,
name
))
{
if
(
create_mode
==
OS_FILE_OPEN_RETRY
)
{
int
i
;
ut_print_timestamp
(
stderr
);
...
...
@@ -1352,12 +1371,12 @@ os_file_create(
fputs
(
" InnoDB: Unable to open the first data file
\n
"
,
stderr
);
}
*
success
=
FALSE
;
close
(
file
);
file
=
-
1
;
#endif
}
else
{
*
success
=
TRUE
;
}
#endif
/* USE_FILE_LOCK */
return
(
file
);
#endif
/* __WIN__ */
...
...
@@ -1509,7 +1528,7 @@ os_file_rename(
return
(
TRUE
);
}
os_file_handle_error
(
oldpath
,
"rename"
);
os_file_handle_error
_no_exit
(
oldpath
,
"rename"
);
return
(
FALSE
);
#else
...
...
@@ -1518,7 +1537,7 @@ os_file_rename(
ret
=
rename
((
const
char
*
)
oldpath
,
(
const
char
*
)
newpath
);
if
(
ret
!=
0
)
{
os_file_handle_error
(
oldpath
,
"rename"
);
os_file_handle_error
_no_exit
(
oldpath
,
"rename"
);
return
(
FALSE
);
}
...
...
pars/lexyy.c
View file @
4d6805f2
...
...
@@ -1017,7 +1017,7 @@ YY_RULE_SETUP
yylval
=
sym_tab_add_bound_lit
(
pars_sym_tab_global
,
yytext
+
1
,
&
type
);
return
(
type
);
return
(
(
int
)
type
);
}
YY_BREAK
case
4
:
...
...
pars/pars0lex.l
View file @
4d6805f2
...
...
@@ -109,7 +109,7 @@ BOUND_ID \$[a-z_A-Z0-9]+
yylval = sym_tab_add_bound_lit(pars_sym_tab_global,
yytext + 1, &type);
return(type);
return(
(int)
type);
}
{BOUND_ID} {
...
...
plug.in
View file @
4d6805f2
...
...
@@ -30,6 +30,8 @@ MYSQL_PLUGIN_ACTIONS(innobase, [
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE";;
osf*)
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE";;
*solaris*|*SunOS*)
CFLAGS="$CFLAGS -DUNIV_SOLARIS";;
sysv5uw7*)
# Problem when linking on SCO
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE";;
...
...
rem/rem0cmp.c
View file @
4d6805f2
...
...
@@ -597,7 +597,7 @@ cmp_dtuple_rec_with_match(
dtuple_byte
=
cmp_collate
(
dtuple_byte
);
}
ret
=
dtuple_byte
-
rec_byte
;
ret
=
(
int
)
(
dtuple_byte
-
rec_byte
)
;
if
(
UNIV_UNLIKELY
(
ret
))
{
if
(
ret
<
0
)
{
ret
=
-
1
;
...
...
row/row0mysql.c
View file @
4d6805f2
...
...
@@ -3481,7 +3481,7 @@ row_delete_constraint_low(
pars_info_add_str_literal
(
info
,
"id"
,
id
);
return
(
que_eval_sql
(
info
,
return
(
(
int
)
que_eval_sql
(
info
,
"PROCEDURE DELETE_CONSTRAINT () IS
\n
"
"BEGIN
\n
"
"DELETE FROM SYS_FOREIGN_COLS WHERE ID = :id;
\n
"
...
...
@@ -3520,7 +3520,7 @@ row_delete_constraint(
err
=
row_delete_constraint_low
(
id
,
trx
);
}
return
(
err
);
return
(
(
int
)
err
);
}
/*************************************************************************
...
...
row/row0sel.c
View file @
4d6805f2
...
...
@@ -2172,7 +2172,7 @@ row_fetch_store_uint4(
ut_a
(
len
==
4
);
tmp
=
mach_read_from_4
(
dfield_get_data
(
dfield
));
*
val
=
tmp
;
*
val
=
(
ib_uint32_t
)
tmp
;
return
(
NULL
);
}
...
...
row/row0undo.c
View file @
4d6805f2
...
...
@@ -213,7 +213,7 @@ row_undo(
ulint
err
;
trx_t
*
trx
;
dulint
roll_ptr
;
ibool
froze_data_dict
=
FALSE
;
ibool
locked_data_dict
;
ut_ad
(
node
&&
thr
);
...
...
@@ -266,13 +266,13 @@ row_undo(
/* Prevent DROP TABLE etc. while we are rolling back this row.
If we are doing a TABLE CREATE or some other dictionary operation,
then we already have dict_operation_lock locked in x-mode. Do not
try to lock again
in s-mode
, because that would cause a hang. */
try to lock again, because that would cause a hang. */
if
(
trx
->
dict_operation_lock_mode
==
0
)
{
locked_data_dict
=
(
trx
->
dict_operation_lock_mode
==
0
);
row_mysql_freeze_data_dictionary
(
trx
);
if
(
locked_data_dict
)
{
froze_data_dict
=
TRUE
;
row_mysql_lock_data_dictionary
(
trx
)
;
}
if
(
node
->
state
==
UNDO_NODE_INSERT
)
{
...
...
@@ -285,9 +285,9 @@ row_undo(
err
=
row_undo_mod
(
node
,
thr
);
}
if
(
froze
_data_dict
)
{
if
(
locked
_data_dict
)
{
row_mysql_un
freeze
_data_dictionary
(
trx
);
row_mysql_un
lock
_data_dictionary
(
trx
);
}
/* Do some cleanup */
...
...
srv/srv0srv.c
View file @
4d6805f2
...
...
@@ -314,6 +314,8 @@ ulint srv_fast_shutdown = 0;
/* Generate a innodb_status.<pid> file */
ibool
srv_innodb_status
=
FALSE
;
ibool
srv_stats_on_metadata
=
TRUE
;
ibool
srv_use_doublewrite_buf
=
TRUE
;
ibool
srv_use_checksums
=
TRUE
;
...
...
sync/sync0rw.c
View file @
4d6805f2
...
...
@@ -127,7 +127,7 @@ rw_lock_create_func(
lock
->
magic_n
=
RW_LOCK_MAGIC_N
;
lock
->
cfile_name
=
cfile_name
;
lock
->
cline
=
cline
;
lock
->
cline
=
(
unsigned
int
)
cline
;
lock
->
last_s_file_name
=
"not yet reserved"
;
lock
->
last_x_file_name
=
"not yet reserved"
;
...
...
@@ -355,7 +355,7 @@ rw_lock_x_lock_low(
file_name
,
line
);
#endif
lock
->
last_x_file_name
=
file_name
;
lock
->
last_x_line
=
line
;
lock
->
last_x_line
=
(
unsigned
int
)
line
;
/* Locking succeeded, we may return */
return
(
RW_LOCK_EX
);
...
...
@@ -392,7 +392,7 @@ rw_lock_x_lock_low(
#endif
lock
->
last_x_file_name
=
file_name
;
lock
->
last_x_line
=
line
;
lock
->
last_x_line
=
(
unsigned
int
)
line
;
/* Locking succeeded, we may return */
return
(
RW_LOCK_EX
);
...
...
@@ -414,7 +414,7 @@ rw_lock_x_lock_low(
#endif
lock
->
last_x_file_name
=
file_name
;
lock
->
last_x_line
=
line
;
lock
->
last_x_line
=
(
unsigned
int
)
line
;
/* Locking succeeded, we may return */
return
(
RW_LOCK_EX
);
...
...
trx/trx0purge.c
View file @
4d6805f2
...
...
@@ -221,7 +221,7 @@ trx_purge_sys_create(void)
purge_sys
->
trx
=
purge_sys
->
sess
->
trx
;
purge_sys
->
trx
->
type
=
TRX_PURGE
;
purge_sys
->
trx
->
is_purge
=
1
;
ut_a
(
trx_start_low
(
purge_sys
->
trx
,
ULINT_UNDEFINED
));
...
...
trx/trx0trx.c
View file @
4d6805f2
...
...
@@ -109,7 +109,7 @@ trx_create(
trx
->
op_info
=
""
;
trx
->
type
=
TRX_USER
;
trx
->
is_purge
=
0
;
trx
->
conc_state
=
TRX_NOT_STARTED
;
trx
->
start_time
=
time
(
NULL
);
...
...
@@ -667,7 +667,7 @@ trx_start_low(
ut_ad
(
mutex_own
(
&
kernel_mutex
));
ut_ad
(
trx
->
rseg
==
NULL
);
if
(
trx
->
type
==
TRX_PURGE
)
{
if
(
trx
->
is_purge
)
{
trx
->
id
=
ut_dulint_zero
;
trx
->
conc_state
=
TRX_ACTIVE
;
trx
->
start_time
=
time
(
NULL
);
...
...
@@ -1259,7 +1259,6 @@ trx_sig_send(
UT_LIST_ADD_LAST
(
signals
,
trx
->
signals
,
sig
);
sig
->
type
=
type
;
sig
->
state
=
TRX_SIG_WAITING
;
sig
->
sender
=
sender
;
sig
->
receiver
=
receiver_thr
;
...
...
@@ -1706,7 +1705,7 @@ trx_print(
fputs
(
trx
->
op_info
,
f
);
}
if
(
trx
->
type
!=
TRX_USER
)
{
if
(
trx
->
is_purge
)
{
fputs
(
" purge trx"
,
f
);
}
...
...
@@ -1979,7 +1978,7 @@ trx_recover_for_mysql(
(
ulong
)
count
);
}
return
(
count
);
return
(
(
int
)
count
);
}
/***********************************************************************
...
...
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