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
1a6452a2
Commit
1a6452a2
authored
Jan 08, 2009
by
Davi Arnaut
Browse files
Options
Browse Files
Download
Plain Diff
Auto-merge from upstream 5.1-bugteam
parents
7ba37134
13bb89ed
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
105 additions
and
29 deletions
+105
-29
client/mysqltest.c
client/mysqltest.c
+63
-18
mysql-test/r/partition_pruning.result
mysql-test/r/partition_pruning.result
+12
-0
mysql-test/suite/binlog/r/binlog_innodb.result
mysql-test/suite/binlog/r/binlog_innodb.result
+4
-3
mysql-test/suite/binlog/t/binlog_innodb.test
mysql-test/suite/binlog/t/binlog_innodb.test
+1
-0
mysql-test/t/partition_pruning.test
mysql-test/t/partition_pruning.test
+16
-0
sql/ha_partition.cc
sql/ha_partition.cc
+3
-3
sql/mysqld.cc
sql/mysqld.cc
+1
-1
sql/set_var.cc
sql/set_var.cc
+3
-2
sql/sql_partition.cc
sql/sql_partition.cc
+2
-2
No files found.
client/mysqltest.c
View file @
1a6452a2
...
@@ -1327,6 +1327,35 @@ static int run_tool(const char *tool_path, DYNAMIC_STRING *ds_res, ...)
...
@@ -1327,6 +1327,35 @@ static int run_tool(const char *tool_path, DYNAMIC_STRING *ds_res, ...)
DBUG_RETURN
(
ret
);
DBUG_RETURN
(
ret
);
}
}
/*
Test if diff is present. This is needed on Windows systems
as the OS returns 1 whether diff is successful or if it is
not present.
We run diff -v and look for output in stdout.
We don't redirect stderr to stdout to make for a simplified check
Windows will output '"diff"' is not recognized... to stderr if it is
not present.
*/
int
diff_check
()
{
char
buf
[
512
]
=
{
0
};
FILE
*
res_file
;
char
*
cmd
=
"diff -v"
;
int
have_diff
=
0
;
if
(
!
(
res_file
=
popen
(
cmd
,
"r"
)))
die
(
"popen(
\"
%s
\"
,
\"
r
\"
) failed"
,
cmd
);
/* if diff is not present, nothing will be in stdout to increment have_diff */
if
(
fgets
(
buf
,
sizeof
(
buf
),
res_file
))
{
have_diff
+=
1
;
}
pclose
(
res_file
);
return
have_diff
;
}
/*
/*
Show the diff of two files using the systems builtin diff
Show the diff of two files using the systems builtin diff
...
@@ -1346,34 +1375,51 @@ void show_diff(DYNAMIC_STRING* ds,
...
@@ -1346,34 +1375,51 @@ void show_diff(DYNAMIC_STRING* ds,
{
{
DYNAMIC_STRING
ds_tmp
;
DYNAMIC_STRING
ds_tmp
;
int
have_diff
=
0
;
if
(
init_dynamic_string
(
&
ds_tmp
,
""
,
256
,
256
))
if
(
init_dynamic_string
(
&
ds_tmp
,
""
,
256
,
256
))
die
(
"Out of memory"
);
die
(
"Out of memory"
);
/* determine if we have diff on Windows
needs special processing due to return values
on that OS
*/
have_diff
=
diff_check
();
/* First try with unified diff */
if
(
have_diff
)
if
(
run_tool
(
"diff"
,
&
ds_tmp
,
/* Get output from diff in ds_tmp */
"-u"
,
filename1
,
filename2
,
"2>&1"
,
NULL
)
>
1
)
/* Most "diff" tools return >1 if error */
{
{
dynstr_set
(
&
ds_tmp
,
""
);
/* First try with unified diff */
/* Fallback to context diff with "diff -c" */
if
(
run_tool
(
"diff"
,
if
(
run_tool
(
"diff"
,
&
ds_tmp
,
/* Get output from diff in ds_tmp */
&
ds_tmp
,
/* Get output from diff in ds_tmp */
"-
c
"
,
"-
u
"
,
filename1
,
filename1
,
filename2
,
filename2
,
"2>&1"
,
"2>&1"
,
NULL
)
>
1
)
/* Most "diff" tools return >1 if error */
NULL
)
>
1
)
/* Most "diff" tools return >1 if error */
{
{
/*
dynstr_set
(
&
ds_tmp
,
""
);
Fallback to dump both files to result file and inform
about installing "diff"
/* Fallback to context diff with "diff -c" */
*/
if
(
run_tool
(
"diff"
,
&
ds_tmp
,
/* Get output from diff in ds_tmp */
"-c"
,
filename1
,
filename2
,
"2>&1"
,
NULL
)
>
1
)
/* Most "diff" tools return >1 if error */
{
have_diff
=
1
;
}
}
}
if
(
!
(
have_diff
))
{
/*
Fallback to dump both files to result file and inform
about installing "diff"
*/
dynstr_set
(
&
ds_tmp
,
""
);
dynstr_set
(
&
ds_tmp
,
""
);
dynstr_append
(
&
ds_tmp
,
dynstr_append
(
&
ds_tmp
,
...
@@ -1397,8 +1443,7 @@ void show_diff(DYNAMIC_STRING* ds,
...
@@ -1397,8 +1443,7 @@ void show_diff(DYNAMIC_STRING* ds,
dynstr_append
(
&
ds_tmp
,
" >>>
\n
"
);
dynstr_append
(
&
ds_tmp
,
" >>>
\n
"
);
cat_file
(
&
ds_tmp
,
filename2
);
cat_file
(
&
ds_tmp
,
filename2
);
dynstr_append
(
&
ds_tmp
,
"<<<<
\n
"
);
dynstr_append
(
&
ds_tmp
,
"<<<<
\n
"
);
}
}
}
if
(
ds
)
if
(
ds
)
{
{
...
...
mysql-test/r/partition_pruning.result
View file @
1a6452a2
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
CREATE TABLE t1
(a INT NOT NULL AUTO_INCREMENT,
b DATETIME,
PRIMARY KEY (a,b),
KEY (b))
PARTITION BY RANGE (to_days(b))
(PARTITION p0 VALUES LESS THAN (733681) COMMENT = 'LESS THAN 2008-10-01',
PARTITION p1 VALUES LESS THAN (733712) COMMENT = 'LESS THAN 2008-11-01',
PARTITION pX VALUES LESS THAN MAXVALUE);
SELECT a,b FROM t1 WHERE b >= '2008-12-01' AND b < '2009-12-00';
a b
DROP TABLE t1;
create table t1 ( a int not null) partition by hash(a) partitions 2;
create table t1 ( a int not null) partition by hash(a) partitions 2;
insert into t1 values (1),(2),(3);
insert into t1 values (1),(2),(3);
explain select * from t1 where a=5 and a=6;
explain select * from t1 where a=5 and a=6;
...
...
mysql-test/suite/binlog/r/binlog_innodb.result
View file @
1a6452a2
...
@@ -113,16 +113,17 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
...
@@ -113,16 +113,17 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Xid # # COMMIT /* XID */
DROP TABLE t1;
DROP TABLE t1;
flush status;
show status like "binlog_cache_use";
show status like "binlog_cache_use";
Variable_name Value
Variable_name Value
Binlog_cache_use
13
Binlog_cache_use
0
show status like "binlog_cache_disk_use";
show status like "binlog_cache_disk_use";
Variable_name Value
Variable_name Value
Binlog_cache_disk_use 0
Binlog_cache_disk_use 0
create table t1 (a int) engine=innodb;
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
show status like "binlog_cache_use";
Variable_name Value
Variable_name Value
Binlog_cache_use 1
4
Binlog_cache_use 1
show status like "binlog_cache_disk_use";
show status like "binlog_cache_disk_use";
Variable_name Value
Variable_name Value
Binlog_cache_disk_use 1
Binlog_cache_disk_use 1
...
@@ -131,7 +132,7 @@ delete from t1;
...
@@ -131,7 +132,7 @@ delete from t1;
commit;
commit;
show status like "binlog_cache_use";
show status like "binlog_cache_use";
Variable_name Value
Variable_name Value
Binlog_cache_use
15
Binlog_cache_use
2
show status like "binlog_cache_disk_use";
show status like "binlog_cache_disk_use";
Variable_name Value
Variable_name Value
Binlog_cache_disk_use 1
Binlog_cache_disk_use 1
...
...
mysql-test/suite/binlog/t/binlog_innodb.test
View file @
1a6452a2
...
@@ -101,6 +101,7 @@ DROP TABLE t1;
...
@@ -101,6 +101,7 @@ DROP TABLE t1;
# Actually this test has nothing to do with innodb per se, it just requires
# Actually this test has nothing to do with innodb per se, it just requires
# transactional table.
# transactional table.
#
#
flush
status
;
show
status
like
"binlog_cache_use"
;
show
status
like
"binlog_cache_use"
;
show
status
like
"binlog_cache_disk_use"
;
show
status
like
"binlog_cache_disk_use"
;
...
...
mysql-test/t/partition_pruning.test
View file @
1a6452a2
...
@@ -8,6 +8,22 @@
...
@@ -8,6 +8,22 @@
drop
table
if
exists
t1
,
t2
,
t3
,
t4
,
t5
,
t6
,
t7
,
t8
,
t9
;
drop
table
if
exists
t1
,
t2
,
t3
,
t4
,
t5
,
t6
,
t7
,
t8
,
t9
;
--
enable_warnings
--
enable_warnings
#
# Bug#40972: some sql execution lead the whole database crashing
#
# Setup so the start is at partition pX and end is at p1
# Pruning does handle 'bad' dates differently.
CREATE
TABLE
t1
(
a
INT
NOT
NULL
AUTO_INCREMENT
,
b
DATETIME
,
PRIMARY
KEY
(
a
,
b
),
KEY
(
b
))
PARTITION
BY
RANGE
(
to_days
(
b
))
(
PARTITION
p0
VALUES
LESS
THAN
(
733681
)
COMMENT
=
'LESS THAN 2008-10-01'
,
PARTITION
p1
VALUES
LESS
THAN
(
733712
)
COMMENT
=
'LESS THAN 2008-11-01'
,
PARTITION
pX
VALUES
LESS
THAN
MAXVALUE
);
SELECT
a
,
b
FROM
t1
WHERE
b
>=
'2008-12-01'
AND
b
<
'2009-12-00'
;
DROP
TABLE
t1
;
# Check if we can infer from condition on partition fields that
# Check if we can infer from condition on partition fields that
# no records will match.
# no records will match.
...
...
sql/ha_partition.cc
View file @
1a6452a2
...
@@ -4815,7 +4815,7 @@ int ha_partition::info(uint flag)
...
@@ -4815,7 +4815,7 @@ int ha_partition::info(uint flag)
/*
/*
Calculates statistical variables
Calculates statistical variables
records: Estimate of number records in table
records: Estimate of number records in table
We report sum (always at least 2)
We report sum (always at least 2
if not empty
)
deleted: Estimate of number holes in the table due to
deleted: Estimate of number holes in the table due to
deletes
deletes
We report sum
We report sum
...
@@ -4854,13 +4854,13 @@ int ha_partition::info(uint flag)
...
@@ -4854,13 +4854,13 @@ int ha_partition::info(uint flag)
stats
.
check_time
=
file
->
stats
.
check_time
;
stats
.
check_time
=
file
->
stats
.
check_time
;
}
}
}
while
(
*
(
++
file_array
));
}
while
(
*
(
++
file_array
));
if
(
stats
.
records
<
2
&&
if
(
stats
.
records
&&
stats
.
records
<
2
&&
!
(
m_file
[
0
]
->
ha_table_flags
()
&
HA_STATS_RECORDS_IS_EXACT
))
!
(
m_file
[
0
]
->
ha_table_flags
()
&
HA_STATS_RECORDS_IS_EXACT
))
stats
.
records
=
2
;
stats
.
records
=
2
;
if
(
stats
.
records
>
0
)
if
(
stats
.
records
>
0
)
stats
.
mean_rec_length
=
(
ulong
)
(
stats
.
data_file_length
/
stats
.
records
);
stats
.
mean_rec_length
=
(
ulong
)
(
stats
.
data_file_length
/
stats
.
records
);
else
else
stats
.
mean_rec_length
=
1
;
//? What should we set here
stats
.
mean_rec_length
=
0
;
}
}
if
(
flag
&
HA_STATUS_CONST
)
if
(
flag
&
HA_STATUS_CONST
)
{
{
...
...
sql/mysqld.cc
View file @
1a6452a2
...
@@ -230,7 +230,7 @@ extern "C" sig_handler handle_segfault(int sig);
...
@@ -230,7 +230,7 @@ extern "C" sig_handler handle_segfault(int sig);
#if defined(__linux__)
#if defined(__linux__)
#define ENABLE_TEMP_POOL 1
#define ENABLE_TEMP_POOL 1
#else
#else
#define ENABLE_TEMP_
T
OOL 0
#define ENABLE_TEMP_
P
OOL 0
#endif
#endif
/* Constants */
/* Constants */
...
...
sql/set_var.cc
View file @
1a6452a2
...
@@ -1527,14 +1527,14 @@ bool sys_var_thd_ulong::update(THD *thd, set_var *var)
...
@@ -1527,14 +1527,14 @@ bool sys_var_thd_ulong::update(THD *thd, set_var *var)
ulonglong
tmp
=
var
->
save_result
.
ulonglong_value
;
ulonglong
tmp
=
var
->
save_result
.
ulonglong_value
;
/* Don't use bigger value than given with --maximum-variable-name=.. */
/* Don't use bigger value than given with --maximum-variable-name=.. */
if
(
(
ulong
)
tmp
>
max_system_variables
.
*
offset
)
if
(
tmp
>
max_system_variables
.
*
offset
)
{
{
throw_bounds_warning
(
thd
,
TRUE
,
TRUE
,
name
,
(
longlong
)
tmp
);
throw_bounds_warning
(
thd
,
TRUE
,
TRUE
,
name
,
(
longlong
)
tmp
);
tmp
=
max_system_variables
.
*
offset
;
tmp
=
max_system_variables
.
*
offset
;
}
}
if
(
option_limits
)
if
(
option_limits
)
tmp
=
(
ulong
)
fix_unsigned
(
thd
,
tmp
,
option_limits
);
tmp
=
fix_unsigned
(
thd
,
tmp
,
option_limits
);
#if SIZEOF_LONG < SIZEOF_LONG_LONG
#if SIZEOF_LONG < SIZEOF_LONG_LONG
else
if
(
tmp
>
ULONG_MAX
)
else
if
(
tmp
>
ULONG_MAX
)
{
{
...
@@ -1543,6 +1543,7 @@ bool sys_var_thd_ulong::update(THD *thd, set_var *var)
...
@@ -1543,6 +1543,7 @@ bool sys_var_thd_ulong::update(THD *thd, set_var *var)
}
}
#endif
#endif
DBUG_ASSERT
(
tmp
<=
ULONG_MAX
);
if
(
var
->
type
==
OPT_GLOBAL
)
if
(
var
->
type
==
OPT_GLOBAL
)
global_system_variables
.
*
offset
=
(
ulong
)
tmp
;
global_system_variables
.
*
offset
=
(
ulong
)
tmp
;
else
else
...
...
sql/sql_partition.cc
View file @
1a6452a2
...
@@ -6760,7 +6760,7 @@ int get_part_iter_for_interval_via_mapping(partition_info *part_info,
...
@@ -6760,7 +6760,7 @@ int get_part_iter_for_interval_via_mapping(partition_info *part_info,
store_key_image_to_rec
(
field
,
max_value
,
field_len
);
store_key_image_to_rec
(
field
,
max_value
,
field_len
);
bool
include_endp
=
!
test
(
flags
&
NEAR_MAX
);
bool
include_endp
=
!
test
(
flags
&
NEAR_MAX
);
part_iter
->
part_nums
.
end
=
get_endpoint
(
part_info
,
0
,
include_endp
);
part_iter
->
part_nums
.
end
=
get_endpoint
(
part_info
,
0
,
include_endp
);
if
(
part_iter
->
part_nums
.
start
=
=
part_iter
->
part_nums
.
end
&&
if
(
part_iter
->
part_nums
.
start
>
=
part_iter
->
part_nums
.
end
&&
!
part_iter
->
ret_null_part
)
!
part_iter
->
ret_null_part
)
return
0
;
/* No partitions */
return
0
;
/* No partitions */
}
}
...
@@ -6938,7 +6938,7 @@ int get_part_iter_for_interval_via_walking(partition_info *part_info,
...
@@ -6938,7 +6938,7 @@ int get_part_iter_for_interval_via_walking(partition_info *part_info,
uint32
get_next_partition_id_range
(
PARTITION_ITERATOR
*
part_iter
)
uint32
get_next_partition_id_range
(
PARTITION_ITERATOR
*
part_iter
)
{
{
if
(
part_iter
->
part_nums
.
cur
=
=
part_iter
->
part_nums
.
end
)
if
(
part_iter
->
part_nums
.
cur
>
=
part_iter
->
part_nums
.
end
)
{
{
part_iter
->
part_nums
.
cur
=
part_iter
->
part_nums
.
start
;
part_iter
->
part_nums
.
cur
=
part_iter
->
part_nums
.
start
;
return
NOT_A_PARTITION_ID
;
return
NOT_A_PARTITION_ID
;
...
...
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