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
f9ad6504
Commit
f9ad6504
authored
Mar 17, 2004
by
monty@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
merge with 4.0
parents
44667503
e8c65b88
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
110 additions
and
82 deletions
+110
-82
include/my_tree.h
include/my_tree.h
+3
-1
innobase/btr/btr0cur.c
innobase/btr/btr0cur.c
+11
-1
innobase/btr/btr0sea.c
innobase/btr/btr0sea.c
+2
-0
innobase/cry/makefilewin
innobase/cry/makefilewin
+0
-12
innobase/include/btr0cur.h
innobase/include/btr0cur.h
+0
-10
innobase/include/btr0sea.h
innobase/include/btr0sea.h
+2
-0
innobase/include/log0log.h
innobase/include/log0log.h
+4
-0
innobase/include/log0log.ic
innobase/include/log0log.ic
+2
-0
innobase/include/page0cur.h
innobase/include/page0cur.h
+4
-1
innobase/include/que0que.h
innobase/include/que0que.h
+0
-16
innobase/include/que0que.ic
innobase/include/que0que.ic
+0
-18
innobase/log/log0log.c
innobase/log/log0log.c
+41
-13
innobase/log/log0recv.c
innobase/log/log0recv.c
+18
-2
innobase/page/page0cur.c
innobase/page/page0cur.c
+4
-3
innobase/que/que0que.c
innobase/que/que0que.c
+3
-1
myisam/myisam_ftdump.c
myisam/myisam_ftdump.c
+1
-1
mysql-test/r/func_if.result
mysql-test/r/func_if.result
+6
-0
mysql-test/t/func_if.test
mysql-test/t/func_if.test
+6
-0
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+3
-3
No files found.
include/my_tree.h
View file @
f9ad6504
...
...
@@ -22,7 +22,9 @@ extern "C" {
#include "my_base.h"
/* get 'enum ha_rkey_function' */
#define MAX_TREE_HEIGHT 40
/* = max 1048576 leafs in tree */
/* Worst case tree is half full. This gives use 2^(MAX_TREE_HIGHT/2) leafs */
#define MAX_TREE_HIGHT 64
#define ELEMENT_KEY(tree,element)\
(tree->offset_to_key ? (void*)((byte*) element+tree->offset_to_key) :\
*((void**) (element+1)))
...
...
innobase/btr/btr0cur.c
View file @
f9ad6504
...
...
@@ -65,6 +65,16 @@ this many index pages */
/*--------------------------------------*/
#define BTR_BLOB_HDR_SIZE 8
/***********************************************************************
Marks all extern fields in a record as owned by the record. This function
should be called if the delete mark of a record is removed: a not delete
marked record always owns all its extern fields. */
static
void
btr_cur_unmark_extern_fields
(
/*=========================*/
rec_t
*
rec
,
/* in: record in a clustered index */
mtr_t
*
mtr
);
/* in: mtr */
/***********************************************************************
Adds path information to the cursor for the current page, for which
the binary search has been performed. */
...
...
@@ -2933,7 +2943,7 @@ btr_cur_mark_dtuple_inherited_extern(
Marks all extern fields in a record as owned by the record. This function
should be called if the delete mark of a record is removed: a not delete
marked record always owns all its extern fields. */
static
void
btr_cur_unmark_extern_fields
(
/*=========================*/
...
...
innobase/btr/btr0sea.c
View file @
f9ad6504
...
...
@@ -22,7 +22,9 @@ Created 2/17/1996 Heikki Tuuri
ulint
btr_search_this_is_zero
=
0
;
/* A dummy variable to fool the
compiler */
#ifdef UNIV_SEARCH_PERF_STAT
ulint
btr_search_n_succ
=
0
;
#endif
/* UNIV_SEARCH_PERF_STAT */
ulint
btr_search_n_hash_fail
=
0
;
byte
btr_sea_pad1
[
64
];
/* padding to prevent other memory update
...
...
innobase/cry/makefilewin
deleted
100644 → 0
View file @
44667503
include ..\include\makefile.i
doall: cr.exe dcr.exe wro.exe
cr.exe: cry0cry.c
$(CCOM) $(CFLW) -o cr.exe -I.. cry0cry.c ..\ut.lib ..\os.lib
dcr.exe: cry0dcr.c
$(CCOM) $(CFLW) -o dcr.exe -I.. cry0dcr.c ..\ut.lib ..\os.lib
wro.exe: cry0wro.c
$(CCOM) $(CFLW) -o wro.exe -I.. cry0wro.c ..\ut.lib ..\os.lib
innobase/include/btr0cur.h
View file @
f9ad6504
...
...
@@ -435,16 +435,6 @@ btr_cur_mark_dtuple_inherited_extern(
ulint
n_ext_vec
,
/* in: number of elements in ext_vec */
upd_t
*
update
);
/* in: update vector */
/***********************************************************************
Marks all extern fields in a record as owned by the record. This function
should be called if the delete mark of a record is removed: a not delete
marked record always owns all its extern fields. */
void
btr_cur_unmark_extern_fields
(
/*=========================*/
rec_t
*
rec
,
/* in: record in a clustered index */
mtr_t
*
mtr
);
/* in: mtr */
/***********************************************************************
Marks all extern fields in a dtuple as owned by the record. */
void
...
...
innobase/include/btr0sea.h
View file @
f9ad6504
...
...
@@ -214,7 +214,9 @@ extern rw_lock_t* btr_search_latch_temp;
#define btr_search_latch (*btr_search_latch_temp)
#ifdef UNIV_SEARCH_PERF_STAT
extern
ulint
btr_search_n_succ
;
#endif
/* UNIV_SEARCH_PERF_STAT */
extern
ulint
btr_search_n_hash_fail
;
/* After change in n_fields or n_bytes in info, this many rounds are waited
...
...
innobase/include/log0log.h
View file @
f9ad6504
...
...
@@ -18,7 +18,9 @@ typedef struct log_struct log_t;
typedef
struct
log_group_struct
log_group_t
;
extern
ibool
log_do_write
;
#ifdef UNIV_LOG_DEBUG
extern
ibool
log_debug_writes
;
#endif
/* UNIV_LOG_DEBUG */
/* Wait modes for log_write_up_to */
#define LOG_NO_WAIT 91
...
...
@@ -719,11 +721,13 @@ struct log_struct{
ulint
max_buf_free
;
/* recommended maximum value of
buf_free, after which the buffer is
flushed */
#ifdef UNIV_LOG_DEBUG
ulint
old_buf_free
;
/* value of buf free when log was
last time opened; only in the debug
version */
dulint
old_lsn
;
/* value of lsn when log was last time
opened; only in the debug version */
#endif
/* UNIV_LOG_DEBUG */
ibool
check_flush_or_checkpoint
;
/* this is set to TRUE when there may
be need to flush the log buffer, or
...
...
innobase/include/log0log.ic
View file @
f9ad6504
...
...
@@ -10,6 +10,7 @@ Created 12/9/1995 Heikki Tuuri
#include "mach0data.h"
#include "mtr0mtr.h"
#ifdef UNIV_LOG_DEBUG
/**********************************************************
Checks by parsing that the catenated log segment for a single mtr is
consistent. */
...
...
@@ -21,6 +22,7 @@ log_check_log_recs(
in the log_sys->buf log buffer */
ulint len, /* in: segment length in bytes */
dulint buf_start_lsn); /* in: buffer start lsn */
#endif /* UNIV_LOG_DEBUG */
/****************************************************************
Gets a log block flush bit. */
...
...
innobase/include/page0cur.h
View file @
f9ad6504
...
...
@@ -32,8 +32,11 @@ Created 10/4/1994 Heikki Tuuri
which extend it */
#define PAGE_CUR_DBG 6
#ifdef PAGE_CUR_ADAPT
# ifdef UNIV_SEARCH_PERF_STAT
extern
ulint
page_cur_short_succ
;
# endif
/* UNIV_SEARCH_PERF_STAT */
#endif
/* PAGE_CUR_ADAPT */
/*************************************************************
Gets pointer to the page frame where the cursor is positioned. */
...
...
innobase/include/que0que.h
View file @
f9ad6504
...
...
@@ -307,22 +307,6 @@ que_thr_peek_stop(
mutex reserved is necessary before deciding
the actual stopping */
que_thr_t
*
thr
);
/* in: query thread */
/***************************************************************************
Returns TRUE if the query graph is for a SELECT statement. */
UNIV_INLINE
ibool
que_graph_is_select
(
/*================*/
/* out: TRUE if a select */
que_t
*
graph
);
/* in: graph */
/**************************************************************************
Prints info of an SQL query graph node. */
void
que_node_print_info
(
/*================*/
que_node_t
*
node
);
/* in: query graph node */
/* Query graph query thread node: the fields are protected by the kernel
mutex with the exceptions named below */
...
...
innobase/include/que0que.ic
View file @
f9ad6504
...
...
@@ -238,21 +238,3 @@ que_thr_peek_stop(
return(FALSE);
}
/***************************************************************************
Returns TRUE if the query graph is for a SELECT statement. */
UNIV_INLINE
ibool
que_graph_is_select(
/*================*/
/* out: TRUE if a select */
que_t* graph) /* in: graph */
{
if (graph->fork_type == QUE_FORK_SELECT_SCROLL
|| graph->fork_type == QUE_FORK_SELECT_NON_SCROLL) {
return(TRUE);
}
return(FALSE);
}
innobase/log/log0log.c
View file @
f9ad6504
...
...
@@ -32,7 +32,9 @@ ulint log_fsp_current_free_limit = 0;
log_t
*
log_sys
=
NULL
;
ibool
log_do_write
=
TRUE
;
#ifdef UNIV_LOG_DEBUG
ibool
log_debug_writes
=
FALSE
;
#endif
/* UNIV_LOG_DEBUG */
/* These control how often we print warnings if the last checkpoint is too
old */
...
...
@@ -86,9 +88,8 @@ the previous */
Completes a checkpoint write i/o to a log file. */
static
void
log_io_complete_checkpoint
(
/*=======================*/
log_group_t
*
group
);
/* in: log group */
log_io_complete_checkpoint
(
void
);
/*============================*/
/**********************************************************
Completes an archiving i/o. */
static
...
...
@@ -928,11 +929,12 @@ log_group_check_flush_completion(
#endif
/* UNIV_SYNC_DEBUG */
if
(
!
log_sys
->
one_flushed
&&
group
->
n_pending_writes
==
0
)
{
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Log flushed first to group %lu
\n
"
,
(
ulong
)
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
log_sys
->
written_to_some_lsn
=
log_sys
->
write_lsn
;
log_sys
->
one_flushed
=
TRUE
;
...
...
@@ -940,10 +942,12 @@ log_group_check_flush_completion(
return
(
LOG_UNLOCK_NONE_FLUSHED_LOCK
);
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
&&
(
group
->
n_pending_writes
==
0
))
{
printf
(
"Log flushed to group %lu
\n
"
,
(
ulong
)
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
return
(
0
);
}
...
...
@@ -1019,7 +1023,15 @@ log_io_complete(
fil_flush
(
group
->
space_id
);
}
log_io_complete_checkpoint
(
group
);
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"Checkpoint info written to group %lu
\n
"
,
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
log_io_complete_checkpoint
();
return
;
}
...
...
@@ -1084,11 +1096,13 @@ log_group_file_header_flush(
dest_offset
=
nth_file
*
group
->
file_size
;
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Writing log file header to group %lu file %lu
\n
"
,
(
ulong
)
group
->
id
,
(
ulong
)
nth_file
);
}
#endif
/* UNIV_LOG_DEBUG */
if
(
log_do_write
)
{
log_sys
->
n_log_ios
++
;
...
...
@@ -1173,6 +1187,7 @@ loop:
write_len
=
len
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
...
...
@@ -1197,6 +1212,7 @@ loop:
+
i
*
OS_FILE_LOG_BLOCK_SIZE
));
}
}
#endif
/* UNIV_LOG_DEBUG */
/* Calculate the checksums for each log block and write them to
the trailer fields of the log blocks */
...
...
@@ -1324,6 +1340,7 @@ loop:
return
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Writing log from %lu %lu up to lsn %lu %lu
\n
"
,
(
ulong
)
ut_dulint_get_high
(
log_sys
->
written_to_all_lsn
),
...
...
@@ -1331,6 +1348,7 @@ loop:
(
ulong
)
ut_dulint_get_high
(
log_sys
->
lsn
),
(
ulong
)
ut_dulint_get_low
(
log_sys
->
lsn
));
}
#endif
/* UNIV_LOG_DEBUG */
log_sys
->
n_pending_writes
++
;
...
...
@@ -1556,9 +1574,8 @@ log_complete_checkpoint(void)
Completes an asynchronous checkpoint info write i/o to a log file. */
static
void
log_io_complete_checkpoint
(
/*=======================*/
log_group_t
*
group
)
/* in: log group */
log_io_complete_checkpoint
(
void
)
/*============================*/
{
mutex_enter
(
&
(
log_sys
->
mutex
));
...
...
@@ -1566,11 +1583,6 @@ log_io_complete_checkpoint(
log_sys
->
n_pending_checkpoint_writes
--
;
if
(
log_debug_writes
)
{
printf
(
"Checkpoint info written to group %lu
\n
"
,
(
ulong
)
group
->
id
);
}
if
(
log_sys
->
n_pending_checkpoint_writes
==
0
)
{
log_complete_checkpoint
();
}
...
...
@@ -1895,12 +1907,14 @@ log_checkpoint(
log_sys
->
next_checkpoint_lsn
=
oldest_lsn
;
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Making checkpoint no %lu at lsn %lu %lu
\n
"
,
(
ulong
)
ut_dulint_get_low
(
log_sys
->
next_checkpoint_no
),
(
ulong
)
ut_dulint_get_high
(
oldest_lsn
),
(
ulong
)
ut_dulint_get_low
(
oldest_lsn
));
}
#endif
/* UNIV_LOG_DEBUG */
log_groups_write_checkpoint_info
();
...
...
@@ -2287,9 +2301,11 @@ loop:
exit
(
1
);
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Created archive file %s
\n
"
,
name
);
}
#endif
/* UNIV_LOG_DEBUG */
ret
=
os_file_close
(
file_handle
);
...
...
@@ -2316,6 +2332,7 @@ loop:
len
=
group
->
file_size
-
(
next_offset
%
group
->
file_size
);
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Archiving starting at lsn %lu %lu, len %lu to group %lu
\n
"
,
...
...
@@ -2323,6 +2340,7 @@ loop:
(
ulong
)
ut_dulint_get_low
(
start_lsn
),
(
ulong
)
len
,
(
ulong
)
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
log_sys
->
n_pending_archive_ios
++
;
...
...
@@ -2417,10 +2435,12 @@ log_archive_write_complete_groups(void)
trunc_files
=
n_files
-
1
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
&&
trunc_files
)
{
printf
(
"Complete file(s) archived to group %lu
\n
"
,
(
ulong
)
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
/* Calculate the archive file space start lsn */
start_lsn
=
ut_dulint_subtract
(
log_sys
->
next_archived_lsn
,
...
...
@@ -2443,9 +2463,11 @@ log_archive_write_complete_groups(void)
fil_space_truncate_start
(
group
->
archive_space_id
,
trunc_files
*
group
->
file_size
);
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Archiving writes completed
\n
"
);
}
#endif
/* UNIV_LOG_DEBUG */
}
/**********************************************************
...
...
@@ -2464,9 +2486,11 @@ log_archive_check_completion_low(void)
if
(
log_sys
->
n_pending_archive_ios
==
0
&&
log_sys
->
archiving_phase
==
LOG_ARCHIVE_READ
)
{
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Archiving read completed
\n
"
);
}
#endif
/* UNIV_LOG_DEBUG */
/* Archive buffer has now been read in: start archive writes */
...
...
@@ -2729,12 +2753,14 @@ log_archive_close_groups(
group
->
archived_file_no
+=
2
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Incrementing arch file no to %lu in log group %lu
\n
"
,
(
ulong
)
group
->
archived_file_no
+
2
,
(
ulong
)
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
}
}
...
...
@@ -3204,6 +3230,7 @@ loop:
ut_a
(
0
==
ut_dulint_cmp
(
lsn
,
log_sys
->
lsn
));
}
#ifdef UNIV_LOG_DEBUG
/**********************************************************
Checks by parsing that the catenated log segment for a single mtr is
consistent. */
...
...
@@ -3256,6 +3283,7 @@ log_check_log_recs(
return
(
TRUE
);
}
#endif
/* UNIV_LOG_DEBUG */
/**********************************************************
Peeks the current lsn. */
...
...
innobase/log/log0recv.c
View file @
f9ad6504
...
...
@@ -487,6 +487,7 @@ recv_find_max_checkpoint(
log_group_read_checkpoint_info
(
group
,
field
);
if
(
!
recv_check_cp_is_consistent
(
buf
))
{
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Checkpoint in group %lu at %lu invalid, %lu
\n
"
,
...
...
@@ -496,6 +497,7 @@ recv_find_max_checkpoint(
+
LOG_CHECKPOINT_CHECKSUM_1
));
}
#endif
/* UNIV_LOG_DEBUG */
goto
not_consistent
;
}
...
...
@@ -509,12 +511,14 @@ recv_find_max_checkpoint(
checkpoint_no
=
mach_read_from_8
(
buf
+
LOG_CHECKPOINT_NO
);
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Checkpoint number %lu found in group %lu
\n
"
,
(
ulong
)
ut_dulint_get_low
(
checkpoint_no
),
(
ulong
)
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
if
(
ut_dulint_cmp
(
checkpoint_no
,
max_no
)
>=
0
)
{
*
max_group
=
group
;
...
...
@@ -1147,6 +1151,7 @@ recv_recover_page(
start_lsn
=
recv
->
start_lsn
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Applying log rec type %lu len %lu to space %lu page no %lu
\n
"
,
...
...
@@ -1154,6 +1159,7 @@ recv_recover_page(
(
ulong
)
recv_addr
->
space
,
(
ulong
)
recv_addr
->
page_no
);
}
#endif
/* UNIV_LOG_DEBUG */
recv_parse_or_apply_log_rec_body
(
recv
->
type
,
buf
,
buf
+
recv
->
len
,
page
,
&
mtr
);
...
...
@@ -1984,12 +1990,14 @@ loop:
recv_sys
->
recovered_offset
+=
len
;
recv_sys
->
recovered_lsn
=
new_recovered_lsn
;
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Parsed a single log rec type %lu len %lu space %lu page no %lu
\n
"
,
(
ulong
)
type
,
(
ulong
)
len
,
(
ulong
)
space
,
(
ulong
)
page_no
);
}
#endif
/* UNIV_LOG_DEBUG */
if
(
type
==
MLOG_DUMMY_RECORD
)
{
/* Do nothing */
...
...
@@ -2071,12 +2079,14 @@ loop:
*/
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Parsed a multi log rec type %lu len %lu space %lu page no %lu
\n
"
,
(
ulong
)
type
,
(
ulong
)
len
,
(
ulong
)
space
,
(
ulong
)
page_no
);
}
#endif
/* UNIV_LOG_DEBUG */
total_len
+=
len
;
n_recs
++
;
...
...
@@ -2482,6 +2492,7 @@ recv_group_scan_log_recs(
start_lsn
=
end_lsn
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Scanned group %lu up to log sequence number %lu %lu
\n
"
,
...
...
@@ -2489,6 +2500,7 @@ recv_group_scan_log_recs(
(
ulong
)
ut_dulint_get_high
(
*
group_scanned_lsn
),
(
ulong
)
ut_dulint_get_low
(
*
group_scanned_lsn
));
}
#endif
/* UNIV_LOG_DEBUG */
}
/************************************************************
...
...
@@ -2869,10 +2881,12 @@ recv_recovery_from_checkpoint_finish(void)
recv_apply_hashed_log_recs
(
TRUE
);
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Log records applied to the database
\n
"
);
}
#endif
/* UNIV_LOG_DEBUG */
if
(
recv_needed_recovery
)
{
trx_sys_print_mysql_master_log_pos
();
...
...
@@ -3184,6 +3198,7 @@ ask_again:
break
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Archive read starting at lsn %lu %lu, len %lu from file %s
\n
"
,
...
...
@@ -3191,6 +3206,7 @@ ask_again:
(
ulong
)
ut_dulint_get_low
(
start_lsn
),
(
ulong
)
len
,
name
);
}
#endif
/* UNIV_LOG_DEBUG */
fil_io
(
OS_FILE_READ
|
OS_FILE_LOG
,
TRUE
,
group
->
archive_space_id
,
read_offset
/
UNIV_PAGE_SIZE
,
...
...
innobase/page/page0cur.c
View file @
f9ad6504
...
...
@@ -16,11 +16,12 @@ Created 10/4/1994 Heikki Tuuri
#include "log0recv.h"
#include "rem0cmp.h"
ulint
page_cur_short_succ
=
0
;
ulint
page_rnd
=
976722341
;
static
ulint
page_rnd
=
976722341
;
#ifdef PAGE_CUR_ADAPT
# ifdef UNIV_SEARCH_PERF_STAT
ulint
page_cur_short_succ
=
0
;
# endif
/* UNIV_SEARCH_PERF_STAT */
/********************************************************************
Tries a search shortcut based on the last insert. */
...
...
innobase/que/que0que.c
View file @
f9ad6504
...
...
@@ -1036,9 +1036,10 @@ que_thr_stop_for_mysql_no_error(
trx
->
n_active_thrs
--
;
}
#ifdef UNIV_DEBUG
/**************************************************************************
Prints info of an SQL query graph node. */
static
void
que_node_print_info
(
/*================*/
...
...
@@ -1095,6 +1096,7 @@ que_node_print_info(
fprintf
(
stderr
,
"Node type %lu: %s, address %p
\n
"
,
(
ulong
)
type
,
str
,
node
);
}
#endif
/* UNIV_DEBUG */
/**************************************************************************
Performs an execution step on a query thread. */
...
...
myisam/myisam_ftdump.c
View file @
f9ad6504
...
...
@@ -267,7 +267,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
static
void
usage
()
{
printf
(
"Use:
ft_dump <table_name> <index_no
>
\n
"
);
printf
(
"Use:
myisam_ftdump <table_name> <index_num
>
\n
"
);
my_print_help
(
my_long_options
);
my_print_variables
(
my_long_options
);
exit
(
1
);
...
...
mysql-test/r/func_if.result
View file @
f9ad6504
...
...
@@ -59,6 +59,12 @@ id select_type table type possible_keys key key_len ref rows Extra
Warnings:
Note 1003 select high_priority nullif((test.t1.u = 0),_latin1'test') AS `nullif(u=0, 'test')` from test.t1
drop table t1;
select NULLIF(NULL,NULL), NULLIF(NULL,1), NULLIF(NULL,1.0), NULLIF(NULL,"test");
NULLIF(NULL,NULL) NULLIF(NULL,1) NULLIF(NULL,1.0) NULLIF(NULL,"test")
NULL NULL NULL NULL
select NULLIF(1,NULL), NULLIF(1.0, NULL), NULLIF("test", NULL);
NULLIF(1,NULL) NULLIF(1.0, NULL) NULLIF("test", NULL)
1 1.0 test
create table t1 (num double(12,2));
insert into t1 values (144.54);
select sum(if(num is null,0.00,num)) from t1;
...
...
mysql-test/t/func_if.test
View file @
f9ad6504
...
...
@@ -29,6 +29,12 @@ select nullif(u=0, 'test') from t1;
explain
extended
select
nullif
(
u
=
0
,
'test'
)
from
t1
;
drop
table
t1
;
#
# Bug 2629
#
select
NULLIF
(
NULL
,
NULL
),
NULLIF
(
NULL
,
1
),
NULLIF
(
NULL
,
1.0
),
NULLIF
(
NULL
,
"test"
);
select
NULLIF
(
1
,
NULL
),
NULLIF
(
1.0
,
NULL
),
NULLIF
(
"test"
,
NULL
);
#
# Problem with IF()
#
...
...
sql/item_cmpfunc.cc
View file @
f9ad6504
...
...
@@ -977,7 +977,7 @@ double
Item_func_nullif
::
val
()
{
double
value
;
if
(
!
cmp
.
compare
()
||
null_value
)
if
(
!
cmp
.
compare
())
{
null_value
=
1
;
return
0.0
;
...
...
@@ -991,7 +991,7 @@ longlong
Item_func_nullif
::
val_int
()
{
longlong
value
;
if
(
!
cmp
.
compare
()
||
null_value
)
if
(
!
cmp
.
compare
())
{
null_value
=
1
;
return
0
;
...
...
@@ -1005,7 +1005,7 @@ String *
Item_func_nullif
::
val_str
(
String
*
str
)
{
String
*
res
;
if
(
!
cmp
.
compare
()
||
null_value
)
if
(
!
cmp
.
compare
())
{
null_value
=
1
;
return
0
;
...
...
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