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
16d13fe5
Commit
16d13fe5
authored
Mar 16, 2009
by
Patrick Crews
Browse files
Options
Browse Files
Download
Plain Diff
merge
parents
386ae7db
15baa13f
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
118 additions
and
21 deletions
+118
-21
include/my_sys.h
include/my_sys.h
+5
-2
mysql-test/r/select.result
mysql-test/r/select.result
+28
-0
mysql-test/t/select.test
mysql-test/t/select.test
+16
-0
mysys/default.c
mysys/default.c
+51
-14
server-tools/instance-manager/instance_map.cc
server-tools/instance-manager/instance_map.cc
+2
-1
server-tools/instance-manager/options.cc
server-tools/instance-manager/options.cc
+3
-1
server-tools/instance-manager/options.h
server-tools/instance-manager/options.h
+3
-0
sql-common/client.c
sql-common/client.c
+1
-1
sql/sql_plugin.cc
sql/sql_plugin.cc
+1
-1
sql/sql_select.cc
sql/sql_select.cc
+8
-1
No files found.
include/my_sys.h
View file @
16d13fe5
...
@@ -843,6 +843,8 @@ extern void *memdup_root(MEM_ROOT *root,const void *str, size_t len);
...
@@ -843,6 +843,8 @@ extern void *memdup_root(MEM_ROOT *root,const void *str, size_t len);
extern
int
get_defaults_options
(
int
argc
,
char
**
argv
,
extern
int
get_defaults_options
(
int
argc
,
char
**
argv
,
char
**
defaults
,
char
**
extra_defaults
,
char
**
defaults
,
char
**
extra_defaults
,
char
**
group_suffix
);
char
**
group_suffix
);
extern
int
my_load_defaults
(
const
char
*
conf_file
,
const
char
**
groups
,
int
*
argc
,
char
***
argv
,
const
char
***
);
extern
int
load_defaults
(
const
char
*
conf_file
,
const
char
**
groups
,
extern
int
load_defaults
(
const
char
*
conf_file
,
const
char
**
groups
,
int
*
argc
,
char
***
argv
);
int
*
argc
,
char
***
argv
);
extern
int
modify_defaults_file
(
const
char
*
file_location
,
const
char
*
option
,
extern
int
modify_defaults_file
(
const
char
*
file_location
,
const
char
*
option
,
...
@@ -850,7 +852,8 @@ extern int modify_defaults_file(const char *file_location, const char *option,
...
@@ -850,7 +852,8 @@ extern int modify_defaults_file(const char *file_location, const char *option,
const
char
*
section_name
,
int
remove_option
);
const
char
*
section_name
,
int
remove_option
);
extern
int
my_search_option_files
(
const
char
*
conf_file
,
int
*
argc
,
extern
int
my_search_option_files
(
const
char
*
conf_file
,
int
*
argc
,
char
***
argv
,
uint
*
args_used
,
char
***
argv
,
uint
*
args_used
,
Process_option_func
func
,
void
*
func_ctx
);
Process_option_func
func
,
void
*
func_ctx
,
const
char
**
default_directories
);
extern
void
free_defaults
(
char
**
argv
);
extern
void
free_defaults
(
char
**
argv
);
extern
void
my_print_default_files
(
const
char
*
conf_file
);
extern
void
my_print_default_files
(
const
char
*
conf_file
);
extern
void
print_defaults
(
const
char
*
conf_file
,
const
char
**
groups
);
extern
void
print_defaults
(
const
char
*
conf_file
,
const
char
**
groups
);
...
...
mysql-test/r/select.result
View file @
16d13fe5
...
@@ -4416,4 +4416,32 @@ date_nokey
...
@@ -4416,4 +4416,32 @@ date_nokey
Warnings:
Warnings:
Warning 1292 Incorrect date value: '10:41:7' for column 'date_nokey' at row 1
Warning 1292 Incorrect date value: '10:41:7' for column 'date_nokey' at row 1
DROP TABLE A,C;
DROP TABLE A,C;
CREATE TABLE t1 (a INT NOT NULL, b INT);
INSERT INTO t1 VALUES (1, 1);
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a) OR b > 2;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
Note 1003 select '1' AS `a`,'1' AS `b` from `test`.`t1` where 1
SELECT * FROM t1 WHERE (a=a AND a=a) OR b > 2;
a b
1 1
DROP TABLE t1;
CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, c INT NOT NULL);
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND c=c) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
Warnings:
Note 1003 select '0' AS `a`,'0' AS `b`,'0' AS `c` from `test`.`t1` where 1
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a AND b=b) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
Warnings:
Note 1003 select '0' AS `a`,'0' AS `b`,'0' AS `c` from `test`.`t1` where 1
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND a=a) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
Warnings:
Note 1003 select '0' AS `a`,'0' AS `b`,'0' AS `c` from `test`.`t1` where 1
DROP TABLE t1;
End of 5.1 tests
End of 5.1 tests
mysql-test/t/select.test
View file @
16d13fe5
...
@@ -3769,4 +3769,20 @@ SELECT date_nokey FROM C
...
@@ -3769,4 +3769,20 @@ SELECT date_nokey FROM C
DROP
TABLE
A
,
C
;
DROP
TABLE
A
,
C
;
#
# Bug #42957: no results from
# select where .. (col=col and col=col) or ... (false expression)
#
CREATE
TABLE
t1
(
a
INT
NOT
NULL
,
b
INT
);
INSERT
INTO
t1
VALUES
(
1
,
1
);
EXPLAIN
EXTENDED
SELECT
*
FROM
t1
WHERE
(
a
=
a
AND
a
=
a
)
OR
b
>
2
;
SELECT
*
FROM
t1
WHERE
(
a
=
a
AND
a
=
a
)
OR
b
>
2
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
NOT
NULL
,
b
INT
NOT
NULL
,
c
INT
NOT
NULL
);
EXPLAIN
EXTENDED
SELECT
*
FROM
t1
WHERE
(
a
=
a
AND
b
=
b
AND
c
=
c
)
OR
b
>
20
;
EXPLAIN
EXTENDED
SELECT
*
FROM
t1
WHERE
(
a
=
a
AND
a
=
a
AND
b
=
b
)
OR
b
>
20
;
EXPLAIN
EXTENDED
SELECT
*
FROM
t1
WHERE
(
a
=
a
AND
b
=
b
AND
a
=
a
)
OR
b
>
20
;
DROP
TABLE
t1
;
--
echo
End
of
5.1
tests
--
echo
End
of
5.1
tests
mysys/default.c
View file @
16d13fe5
...
@@ -152,7 +152,7 @@ static char *remove_end_comment(char *ptr);
...
@@ -152,7 +152,7 @@ static char *remove_end_comment(char *ptr);
int
my_search_option_files
(
const
char
*
conf_file
,
int
*
argc
,
char
***
argv
,
int
my_search_option_files
(
const
char
*
conf_file
,
int
*
argc
,
char
***
argv
,
uint
*
args_used
,
Process_option_func
func
,
uint
*
args_used
,
Process_option_func
func
,
void
*
func_ctx
)
void
*
func_ctx
,
const
char
**
default_directories
)
{
{
const
char
**
dirs
,
*
forced_default_file
,
*
forced_extra_defaults
;
const
char
**
dirs
,
*
forced_default_file
,
*
forced_extra_defaults
;
int
error
=
0
;
int
error
=
0
;
...
@@ -359,18 +359,46 @@ int get_defaults_options(int argc, char **argv,
...
@@ -359,18 +359,46 @@ int get_defaults_options(int argc, char **argv,
return
org_argc
-
argc
;
return
org_argc
-
argc
;
}
}
/*
Wrapper around my_load_defaults() for interface compatibility.
SYNOPSIS
load_defaults()
conf_file Basename for configuration file to search for.
If this is a path, then only this file is read.
groups Which [group] entrys to read.
Points to an null terminated array of pointers
argc Pointer to argc of original program
argv Pointer to argv of original program
NOTES
This function is NOT thread-safe as it uses a global pointer internally.
See also notes for my_load_defaults().
RETURN
0 ok
1 The given conf_file didn't exists
*/
int
load_defaults
(
const
char
*
conf_file
,
const
char
**
groups
,
int
*
argc
,
char
***
argv
)
{
return
my_load_defaults
(
conf_file
,
groups
,
argc
,
argv
,
&
default_directories
);
}
/*
/*
Read options from configurations files
Read options from configurations files
SYNOPSIS
SYNOPSIS
load_defaults()
my_
load_defaults()
conf_file Basename for configuration file to search for.
conf_file Basename for configuration file to search for.
If this is a path, then only this file is read.
If this is a path, then only this file is read.
groups Which [group] entrys to read.
groups Which [group] entrys to read.
Points to an null terminated array of pointers
Points to an null terminated array of pointers
argc Pointer to argc of original program
argc Pointer to argc of original program
argv Pointer to argv of original program
argv Pointer to argv of original program
default_directories Pointer to a location where a pointer to the list
of default directories will be stored
IMPLEMENTATION
IMPLEMENTATION
...
@@ -386,13 +414,18 @@ int get_defaults_options(int argc, char **argv,
...
@@ -386,13 +414,18 @@ int get_defaults_options(int argc, char **argv,
that was put in *argv
that was put in *argv
RETURN
RETURN
0 ok
- If successful, 0 is returned. If 'default_directories' is not NULL,
1 The given conf_file didn't exists
a pointer to the array of default directory paths is stored to a location
it points to. That stored value must be passed to my_search_option_files()
later.
- 1 is returned if the given conf_file didn't exist. In this case, the
value pointed to by default_directories is undefined.
*/
*/
int
load_defaults
(
const
char
*
conf_file
,
const
char
**
groups
,
int
my_
load_defaults
(
const
char
*
conf_file
,
const
char
**
groups
,
int
*
argc
,
char
***
argv
)
int
*
argc
,
char
***
argv
,
const
char
***
default_directories
)
{
{
DYNAMIC_ARRAY
args
;
DYNAMIC_ARRAY
args
;
TYPELIB
group
;
TYPELIB
group
;
...
@@ -402,10 +435,11 @@ int load_defaults(const char *conf_file, const char **groups,
...
@@ -402,10 +435,11 @@ int load_defaults(const char *conf_file, const char **groups,
MEM_ROOT
alloc
;
MEM_ROOT
alloc
;
char
*
ptr
,
**
res
;
char
*
ptr
,
**
res
;
struct
handle_option_ctx
ctx
;
struct
handle_option_ctx
ctx
;
const
char
**
dirs
;
DBUG_ENTER
(
"load_defaults"
);
DBUG_ENTER
(
"load_defaults"
);
init_alloc_root
(
&
alloc
,
512
,
0
);
init_alloc_root
(
&
alloc
,
512
,
0
);
if
((
d
efault_directorie
s
=
init_default_directories
(
&
alloc
))
==
NULL
)
if
((
d
ir
s
=
init_default_directories
(
&
alloc
))
==
NULL
)
goto
err
;
goto
err
;
/*
/*
Check if the user doesn't want any default option processing
Check if the user doesn't want any default option processing
...
@@ -426,6 +460,8 @@ int load_defaults(const char *conf_file, const char **groups,
...
@@ -426,6 +460,8 @@ int load_defaults(const char *conf_file, const char **groups,
(
*
argc
)
--
;
(
*
argc
)
--
;
*
argv
=
res
;
*
argv
=
res
;
*
(
MEM_ROOT
*
)
ptr
=
alloc
;
/* Save alloc root for free */
*
(
MEM_ROOT
*
)
ptr
=
alloc
;
/* Save alloc root for free */
if
(
default_directories
)
*
default_directories
=
dirs
;
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
}
}
...
@@ -444,7 +480,8 @@ int load_defaults(const char *conf_file, const char **groups,
...
@@ -444,7 +480,8 @@ int load_defaults(const char *conf_file, const char **groups,
ctx
.
group
=
&
group
;
ctx
.
group
=
&
group
;
error
=
my_search_option_files
(
conf_file
,
argc
,
argv
,
&
args_used
,
error
=
my_search_option_files
(
conf_file
,
argc
,
argv
,
&
args_used
,
handle_default_option
,
(
void
*
)
&
ctx
);
handle_default_option
,
(
void
*
)
&
ctx
,
dirs
);
/*
/*
Here error contains <> 0 only if we have a fully specified conf_file
Here error contains <> 0 only if we have a fully specified conf_file
or a forced default file
or a forced default file
...
@@ -490,6 +527,10 @@ int load_defaults(const char *conf_file, const char **groups,
...
@@ -490,6 +527,10 @@ int load_defaults(const char *conf_file, const char **groups,
puts
(
""
);
puts
(
""
);
exit
(
0
);
exit
(
0
);
}
}
if
(
error
==
0
&&
default_directories
)
*
default_directories
=
dirs
;
DBUG_RETURN
(
error
);
DBUG_RETURN
(
error
);
err:
err:
...
@@ -895,15 +936,11 @@ void my_print_default_files(const char *conf_file)
...
@@ -895,15 +936,11 @@ void my_print_default_files(const char *conf_file)
fputs
(
conf_file
,
stdout
);
fputs
(
conf_file
,
stdout
);
else
else
{
{
/*
const
char
**
dirs
;
If default_directories is already initialized, use it. Otherwise,
use a private MEM_ROOT.
*/
const
char
**
dirs
=
default_directories
;
MEM_ROOT
alloc
;
MEM_ROOT
alloc
;
init_alloc_root
(
&
alloc
,
512
,
0
);
init_alloc_root
(
&
alloc
,
512
,
0
);
if
(
!
dirs
&&
(
dirs
=
init_default_directories
(
&
alloc
))
==
NULL
)
if
((
dirs
=
init_default_directories
(
&
alloc
))
==
NULL
)
{
{
fputs
(
"Internal error initializing default directories list"
,
stdout
);
fputs
(
"Internal error initializing default directories list"
,
stdout
);
}
}
...
...
server-tools/instance-manager/instance_map.cc
View file @
16d13fe5
...
@@ -536,7 +536,8 @@ int Instance_map::load()
...
@@ -536,7 +536,8 @@ int Instance_map::load()
*/
*/
if
(
my_search_option_files
(
Options
::
Main
::
config_file
,
&
argc
,
if
(
my_search_option_files
(
Options
::
Main
::
config_file
,
&
argc
,
(
char
***
)
&
argv
,
&
args_used
,
(
char
***
)
&
argv
,
&
args_used
,
process_option
,
(
void
*
)
this
))
process_option
,
(
void
*
)
this
,
Options
::
default_directories
))
log_info
(
"Falling back to compiled-in defaults."
);
log_info
(
"Falling back to compiled-in defaults."
);
return
complete_initialization
();
return
complete_initialization
();
...
...
server-tools/instance-manager/options.cc
View file @
16d13fe5
...
@@ -86,6 +86,7 @@ const char *Options::Main::bind_address= NULL; /* No default value */
...
@@ -86,6 +86,7 @@ const char *Options::Main::bind_address= NULL; /* No default value */
uint
Options
::
Main
::
monitoring_interval
=
DEFAULT_MONITORING_INTERVAL
;
uint
Options
::
Main
::
monitoring_interval
=
DEFAULT_MONITORING_INTERVAL
;
uint
Options
::
Main
::
port_number
=
DEFAULT_PORT
;
uint
Options
::
Main
::
port_number
=
DEFAULT_PORT
;
my_bool
Options
::
Main
::
mysqld_safe_compatible
=
FALSE
;
my_bool
Options
::
Main
::
mysqld_safe_compatible
=
FALSE
;
const
char
**
Options
::
default_directories
=
NULL
;
/* Options::User_management */
/* Options::User_management */
...
@@ -439,7 +440,8 @@ int Options::load(int argc, char **argv)
...
@@ -439,7 +440,8 @@ int Options::load(int argc, char **argv)
log_info
(
"Loading config file '%s'..."
,
log_info
(
"Loading config file '%s'..."
,
(
const
char
*
)
Main
::
config_file
);
(
const
char
*
)
Main
::
config_file
);
load_defaults
(
Main
::
config_file
,
default_groups
,
&
argc
,
&
saved_argv
);
my_load_defaults
(
Main
::
config_file
,
default_groups
,
&
argc
,
&
saved_argv
,
&
default_directories
);
if
((
handle_options
(
&
argc
,
&
saved_argv
,
my_long_options
,
get_one_option
)))
if
((
handle_options
(
&
argc
,
&
saved_argv
,
my_long_options
,
get_one_option
)))
return
ERR_INVALID_USAGE
;
return
ERR_INVALID_USAGE
;
...
...
server-tools/instance-manager/options.h
View file @
16d13fe5
...
@@ -91,6 +91,9 @@ struct Options
...
@@ -91,6 +91,9 @@ struct Options
#endif
#endif
public:
public:
/* Array of paths to be passed to my_search_option_files() later */
static
const
char
**
default_directories
;
static
int
load
(
int
argc
,
char
**
argv
);
static
int
load
(
int
argc
,
char
**
argv
);
static
void
cleanup
();
static
void
cleanup
();
...
...
sql-common/client.c
View file @
16d13fe5
...
@@ -1021,7 +1021,7 @@ void mysql_read_default_options(struct st_mysql_options *options,
...
@@ -1021,7 +1021,7 @@ void mysql_read_default_options(struct st_mysql_options *options,
argc
=
1
;
argv
=
argv_buff
;
argv_buff
[
0
]
=
(
char
*
)
"client"
;
argc
=
1
;
argv
=
argv_buff
;
argv_buff
[
0
]
=
(
char
*
)
"client"
;
groups
[
0
]
=
(
char
*
)
"client"
;
groups
[
1
]
=
(
char
*
)
group
;
groups
[
2
]
=
0
;
groups
[
0
]
=
(
char
*
)
"client"
;
groups
[
1
]
=
(
char
*
)
group
;
groups
[
2
]
=
0
;
load_defaults
(
filename
,
groups
,
&
argc
,
&
argv
);
my_load_defaults
(
filename
,
groups
,
&
argc
,
&
argv
,
NULL
);
if
(
argc
!=
1
)
/* If some default option */
if
(
argc
!=
1
)
/* If some default option */
{
{
char
**
option
=
argv
;
char
**
option
=
argv
;
...
...
sql/sql_plugin.cc
View file @
16d13fe5
...
@@ -1652,7 +1652,7 @@ bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl
...
@@ -1652,7 +1652,7 @@ bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl
pthread_mutex_lock
(
&
LOCK_plugin
);
pthread_mutex_lock
(
&
LOCK_plugin
);
rw_wrlock
(
&
LOCK_system_variables_hash
);
rw_wrlock
(
&
LOCK_system_variables_hash
);
load_defaults
(
MYSQL_CONFIG_NAME
,
load_default_groups
,
&
argc
,
&
argv
);
my_load_defaults
(
MYSQL_CONFIG_NAME
,
load_default_groups
,
&
argc
,
&
argv
,
NULL
);
error
=
plugin_add
(
thd
->
mem_root
,
name
,
dl
,
&
argc
,
argv
,
REPORT_TO_USER
);
error
=
plugin_add
(
thd
->
mem_root
,
name
,
dl
,
&
argc
,
argv
,
REPORT_TO_USER
);
if
(
argv
)
if
(
argv
)
free_defaults
(
argv
);
free_defaults
(
argv
);
...
...
sql/sql_select.cc
View file @
16d13fe5
...
@@ -7625,7 +7625,7 @@ static COND *build_equal_items_for_cond(THD *thd, COND *cond,
...
@@ -7625,7 +7625,7 @@ static COND *build_equal_items_for_cond(THD *thd, COND *cond,
if
(
and_level
)
if
(
and_level
)
{
{
/*
/*
Retrieve all conjucts of this level detecting the equality
Retrieve all conju
n
cts of this level detecting the equality
that are subject to substitution by multiple equality items and
that are subject to substitution by multiple equality items and
removing each such predicate from the conjunction after having
removing each such predicate from the conjunction after having
found/created a multiple equality whose inference the predicate is.
found/created a multiple equality whose inference the predicate is.
...
@@ -7641,6 +7641,13 @@ static COND *build_equal_items_for_cond(THD *thd, COND *cond,
...
@@ -7641,6 +7641,13 @@ static COND *build_equal_items_for_cond(THD *thd, COND *cond,
li
.
remove
();
li
.
remove
();
}
}
/*
Check if we eliminated all the predicates of the level, e.g.
(a=a AND b=b AND a=a)
*/
if
(
!
(
args
->
elements
+
cond_equal
.
current_level
.
elements
+
eq_list
.
elements
))
return
new
Item_int
((
longlong
)
1
,
1
);
List_iterator_fast
<
Item_equal
>
it
(
cond_equal
.
current_level
);
List_iterator_fast
<
Item_equal
>
it
(
cond_equal
.
current_level
);
while
((
item_equal
=
it
++
))
while
((
item_equal
=
it
++
))
{
{
...
...
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