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
df8e60ae
Commit
df8e60ae
authored
Nov 08, 2007
by
joerg@trift2
Browse files
Options
Browse Files
Download
Plain Diff
Merge trift2.:/MySQL/M50/mysql-5.0
into trift2.:/MySQL/M50/push-5.0
parents
00f1af47
30b56973
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
214 additions
and
70 deletions
+214
-70
CMakeLists.txt
CMakeLists.txt
+2
-0
include/my_sys.h
include/my_sys.h
+2
-0
libmysql/Makefile.shared
libmysql/Makefile.shared
+1
-1
mysql-test/t/type_datetime.test
mysql-test/t/type_datetime.test
+16
-3
mysys/CMakeLists.txt
mysys/CMakeLists.txt
+1
-1
mysys/Makefile.am
mysys/Makefile.am
+1
-1
mysys/default.c
mysys/default.c
+129
-63
mysys/mf_arr_appstr.c
mysys/mf_arr_appstr.c
+61
-0
support-files/mysql.server.sh
support-files/mysql.server.sh
+1
-1
No files found.
CMakeLists.txt
View file @
df8e60ae
...
@@ -13,6 +13,8 @@
...
@@ -13,6 +13,8 @@
# along with this program; if not, write to the Free Software
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
CMAKE_MINIMUM_REQUIRED
(
VERSION 2.4.7 FATAL_ERROR
)
PROJECT
(
MySql
)
PROJECT
(
MySql
)
# This reads user configuration, generated by configure.js.
# This reads user configuration, generated by configure.js.
...
...
include/my_sys.h
View file @
df8e60ae
...
@@ -691,6 +691,8 @@ extern WF_PACK *wf_comp(my_string str);
...
@@ -691,6 +691,8 @@ extern WF_PACK *wf_comp(my_string str);
extern
int
wf_test
(
struct
wild_file_pack
*
wf_pack
,
const
char
*
name
);
extern
int
wf_test
(
struct
wild_file_pack
*
wf_pack
,
const
char
*
name
);
extern
void
wf_end
(
struct
wild_file_pack
*
buffer
);
extern
void
wf_end
(
struct
wild_file_pack
*
buffer
);
extern
size_s
strip_sp
(
my_string
str
);
extern
size_s
strip_sp
(
my_string
str
);
extern
my_bool
array_append_string_unique
(
const
char
*
str
,
const
char
**
array
,
size_t
size
);
extern
void
get_date
(
my_string
to
,
int
timeflag
,
time_t
use_time
);
extern
void
get_date
(
my_string
to
,
int
timeflag
,
time_t
use_time
);
extern
void
soundex
(
CHARSET_INFO
*
,
my_string
out_pntr
,
my_string
in_pntr
,
pbool
remove_garbage
);
extern
void
soundex
(
CHARSET_INFO
*
,
my_string
out_pntr
,
my_string
in_pntr
,
pbool
remove_garbage
);
extern
int
init_record_cache
(
RECORD_CACHE
*
info
,
uint
cachesize
,
File
file
,
extern
int
init_record_cache
(
RECORD_CACHE
*
info
,
uint
cachesize
,
File
file
,
...
...
libmysql/Makefile.shared
View file @
df8e60ae
...
@@ -59,7 +59,7 @@ mysysobjects1 = my_init.lo my_static.lo my_malloc.lo my_realloc.lo \
...
@@ -59,7 +59,7 @@ mysysobjects1 = my_init.lo my_static.lo my_malloc.lo my_realloc.lo \
mf_pack.lo my_messnc.lo mf_dirname.lo mf_fn_ext.lo
\
mf_pack.lo my_messnc.lo mf_dirname.lo mf_fn_ext.lo
\
mf_wcomp.lo typelib.lo safemalloc.lo my_alloc.lo
\
mf_wcomp.lo typelib.lo safemalloc.lo my_alloc.lo
\
mf_format.lo mf_path.lo mf_unixpath.lo my_fopen.lo
\
mf_format.lo mf_path.lo mf_unixpath.lo my_fopen.lo
\
my_symlink.lo my_fstream.lo
\
my_symlink.lo my_fstream.lo
mf_arr_appstr.lo
\
mf_loadpath.lo my_pthread.lo my_thr_init.lo
\
mf_loadpath.lo my_pthread.lo my_thr_init.lo
\
thr_mutex.lo mulalloc.lo string.lo
\
thr_mutex.lo mulalloc.lo string.lo
\
default.lo default_modify.lo
\
default.lo default_modify.lo
\
...
...
mysql-test/t/type_datetime.test
View file @
df8e60ae
...
@@ -155,13 +155,13 @@ set @@sql_mode='ansi,traditional';
...
@@ -155,13 +155,13 @@ set @@sql_mode='ansi,traditional';
insert
into
t1
values
(
'2007-03-23 13:49:38'
,
'2007-03-23 13:49:38'
);
insert
into
t1
values
(
'2007-03-23 13:49:38'
,
'2007-03-23 13:49:38'
);
insert
into
t1
set
dt
=
'2007-03-23 13:49:38'
,
da
=
dt
;
insert
into
t1
set
dt
=
'2007-03-23 13:49:38'
,
da
=
dt
;
# Test error handling
# Test error handling
--
error
1292
--
error
ER_TRUNCATED_WRONG_VALUE
insert
into
t1
values
(
'2007-03-32'
,
'2007-03-23 13:49:38'
);
insert
into
t1
values
(
'2007-03-32'
,
'2007-03-23 13:49:38'
);
select
*
from
t1
;
select
*
from
t1
;
drop
table
t1
;
drop
table
t1
;
--
error
1067
--
error
ER_INVALID_DEFAULT
create
table
t1
(
da
date
default
'1962-03-32 23:33:34'
,
dt
datetime
default
'1962-03-03'
);
create
table
t1
(
da
date
default
'1962-03-32 23:33:34'
,
dt
datetime
default
'1962-03-03'
);
--
error
1067
--
error
ER_INVALID_DEFAULT
create
table
t1
(
t
time
default
'916:00:00 a'
);
create
table
t1
(
t
time
default
'916:00:00 a'
);
set
@@
sql_mode
=
@
org_mode
;
set
@@
sql_mode
=
@
org_mode
;
...
@@ -169,6 +169,19 @@ set @@sql_mode= @org_mode;
...
@@ -169,6 +169,19 @@ set @@sql_mode= @org_mode;
#
#
# Bug#27590: Wrong DATE/DATETIME comparison.
# Bug#27590: Wrong DATE/DATETIME comparison.
#
#
## The following sub test will fail (difference to expected result) if the
## select curdate() < now(), f1 < now(), cast(f1 as date) < now() from t1;
## runs exact at midnight ('00:00:00').
## ( Bug#29290 type_datetime.test failure in 5.1 )
## Therefore we sleep a bit if we are too close to midnight.
## The complete test itself needs around 1 second.
## Therefore a time_distance to midnight of 5 seconds should be sufficient.
if
(
`SELECT CURTIME() > SEC_TO_TIME(24 * 3600 - 5)`
)
{
# We are here when CURTIME() is between '23:59:56' and '23:59:59'.
# So a sleep time of 5 seconds brings us between '00:00:01' and '00:00:04'.
--
real_sleep
5
}
create
table
t1
(
f1
date
,
f2
datetime
,
f3
timestamp
);
create
table
t1
(
f1
date
,
f2
datetime
,
f3
timestamp
);
insert
into
t1
(
f1
)
values
(
curdate
());
insert
into
t1
(
f1
)
values
(
curdate
());
select
curdate
()
<
now
(),
f1
<
now
(),
cast
(
f1
as
date
)
<
now
()
from
t1
;
select
curdate
()
<
now
(),
f1
<
now
(),
cast
(
f1
as
date
)
<
now
()
from
t1
;
...
...
mysys/CMakeLists.txt
View file @
df8e60ae
...
@@ -26,7 +26,7 @@ ADD_LIBRARY(mysys array.c charset-def.c charset.c checksum.c default.c default_m
...
@@ -26,7 +26,7 @@ ADD_LIBRARY(mysys array.c charset-def.c charset.c checksum.c default.c default_m
errors.c hash.c list.c md5.c mf_brkhant.c mf_cache.c mf_dirname.c mf_fn_ext.c
errors.c hash.c list.c md5.c mf_brkhant.c mf_cache.c mf_dirname.c mf_fn_ext.c
mf_format.c mf_getdate.c mf_iocache.c mf_iocache2.c mf_keycache.c
mf_format.c mf_getdate.c mf_iocache.c mf_iocache2.c mf_keycache.c
mf_keycaches.c mf_loadpath.c mf_pack.c mf_path.c mf_qsort.c mf_qsort2.c
mf_keycaches.c mf_loadpath.c mf_pack.c mf_path.c mf_qsort.c mf_qsort2.c
mf_radix.c mf_same.c mf_sort.c mf_soundex.c mf_strip.c mf_tempdir.c
mf_radix.c mf_same.c mf_sort.c mf_soundex.c mf_strip.c mf_
arr_appstr.c mf_
tempdir.c
mf_tempfile.c mf_unixpath.c mf_wcomp.c mf_wfile.c mulalloc.c my_access.c
mf_tempfile.c mf_unixpath.c mf_wcomp.c mf_wfile.c mulalloc.c my_access.c
my_aes.c my_alarm.c my_alloc.c my_append.c my_bit.c my_bitmap.c my_chsize.c
my_aes.c my_alarm.c my_alloc.c my_append.c my_bit.c my_bitmap.c my_chsize.c
my_clock.c my_compress.c my_conio.c my_copy.c my_crc32.c my_create.c my_delete.c
my_clock.c my_compress.c my_conio.c my_copy.c my_crc32.c my_create.c my_delete.c
...
...
mysys/Makefile.am
View file @
df8e60ae
...
@@ -38,7 +38,7 @@ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c my_mmap.c \
...
@@ -38,7 +38,7 @@ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c my_mmap.c \
my_error.c errors.c my_div.c my_messnc.c
\
my_error.c errors.c my_div.c my_messnc.c
\
mf_format.c mf_same.c mf_dirname.c mf_fn_ext.c
\
mf_format.c mf_same.c mf_dirname.c mf_fn_ext.c
\
my_symlink.c my_symlink2.c
\
my_symlink.c my_symlink2.c
\
mf_pack.c mf_unixpath.c mf_strip.c
\
mf_pack.c mf_unixpath.c mf_strip.c
mf_arr_appstr.c
\
mf_wcomp.c mf_wfile.c my_gethwaddr.c
\
mf_wcomp.c mf_wfile.c my_gethwaddr.c
\
mf_qsort.c mf_qsort2.c mf_sort.c
\
mf_qsort.c mf_qsort2.c mf_sort.c
\
ptr_cmp.c mf_radix.c queues.c
\
ptr_cmp.c mf_radix.c queues.c
\
...
...
mysys/default.c
View file @
df8e60ae
...
@@ -47,7 +47,7 @@ char *my_defaults_extra_file=0;
...
@@ -47,7 +47,7 @@ char *my_defaults_extra_file=0;
/* Which directories are searched for options (and in which order) */
/* Which directories are searched for options (and in which order) */
#define MAX_DEFAULT_DIRS
7
#define MAX_DEFAULT_DIRS
6
const
char
*
default_directories
[
MAX_DEFAULT_DIRS
+
1
];
const
char
*
default_directories
[
MAX_DEFAULT_DIRS
+
1
];
#ifdef __WIN__
#ifdef __WIN__
...
@@ -83,7 +83,22 @@ static int search_default_file_with_ext(Process_option_func func,
...
@@ -83,7 +83,22 @@ static int search_default_file_with_ext(Process_option_func func,
void
*
func_ctx
,
void
*
func_ctx
,
const
char
*
dir
,
const
char
*
ext
,
const
char
*
dir
,
const
char
*
ext
,
const
char
*
config_file
,
int
recursion_level
);
const
char
*
config_file
,
int
recursion_level
);
static
void
init_default_directories
();
/**
Create the list of default directories.
@details
On all systems, if a directory is already in the list, it will be moved
to the end of the list. This avoids reading defaults files multiple times,
while ensuring the correct precedence.
@return void
*/
static
void
(
*
init_default_directories
)();
static
char
*
remove_end_comment
(
char
*
ptr
);
static
char
*
remove_end_comment
(
char
*
ptr
);
...
@@ -913,6 +928,25 @@ void print_defaults(const char *conf_file, const char **groups)
...
@@ -913,6 +928,25 @@ void print_defaults(const char *conf_file, const char **groups)
#include <help_end.h>
#include <help_end.h>
#define ADD_DIRECTORY(DIR) \
do { \
my_bool rc= \
array_append_string_unique((DIR), default_directories, \
array_elements(default_directories)); \
DBUG_ASSERT(rc == FALSE);
/* Success */
\
} while (0)
#define ADD_COMMON_DIRECTORIES() \
do { \
char *env; \
if ((env= getenv(STRINGIFY_ARG(DEFAULT_HOME_ENV)))) \
ADD_DIRECTORY(env); \
/* Placeholder for --defaults-extra-file=<path> */
\
ADD_DIRECTORY(""); \
} while (0)
#ifdef __WIN__
#ifdef __WIN__
/*
/*
This wrapper for GetSystemWindowsDirectory() will dynamically bind to the
This wrapper for GetSystemWindowsDirectory() will dynamically bind to the
...
@@ -947,73 +981,33 @@ static uint my_get_system_windows_directory(char *buffer, uint size)
...
@@ -947,73 +981,33 @@ static uint my_get_system_windows_directory(char *buffer, uint size)
}
}
return
count
;
return
count
;
}
}
#endif
/*
/*
*
Create the list of default directories.
Initialize default directories for Microsoft Windows
On Microsoft Windows, this is:
@details
1.
C:/
1.
GetSystemWindowsDirectory()
2. GetWindowsDirectory()
2. GetWindowsDirectory()
3. GetSystemWindowsDirectory()
3. C:/
4. getenv(DEFAULT_HOME_ENV)
4. Directory above where the executable is located
5. Directory above where the executable is located
5. getenv(DEFAULT_HOME_ENV)
6. ""
6. --defaults-extra-file=<path> (run-time option)
7. --sysconfdir=<path>
*/
On Novell NetWare, this is:
1. sys:/etc/
2. getenv(DEFAULT_HOME_ENV)
3. ""
4. --sysconfdir=<path>
On OS/2, this is:
1. getenv(ETC)
2. /etc/
3. getenv(DEFAULT_HOME_ENV)
4. ""
5. "~/"
6. --sysconfdir=<path>
Everywhere else, this is:
1. /etc/
2. getenv(DEFAULT_HOME_ENV)
3. ""
4. "~/"
5. --sysconfdir=<path>
*/
static
void
init_default_directories
()
static
void
init_default_directories
_win
()
{
{
const
char
*
env
,
**
ptr
=
default_directories
;
bzero
(
default_directories
,
sizeof
(
default_directories
))
;
#ifdef __WIN__
if
(
my_get_system_windows_directory
(
shared_system_dir
,
*
ptr
++=
"C:/"
;
sizeof
(
shared_system_dir
)))
ADD_DIRECTORY
(
&
shared_system_dir
);
if
(
GetWindowsDirectory
(
system_dir
,
sizeof
(
system_dir
)))
if
(
GetWindowsDirectory
(
system_dir
,
sizeof
(
system_dir
)))
*
ptr
++=
(
char
*
)
&
system_dir
;
ADD_DIRECTORY
(
&
system_dir
);
if
(
my_get_system_windows_directory
(
shared_system_dir
,
sizeof
(
shared_system_dir
))
&&
ADD_DIRECTORY
(
"C:/"
);
strcmp
(
system_dir
,
shared_system_dir
))
*
ptr
++=
(
char
*
)
&
shared_system_dir
;
#elif defined(__NETWARE__)
*
ptr
++=
"sys:/etc/"
;
#else
#if defined(__EMX__) || defined(OS2)
if
((
env
=
getenv
(
"ETC"
)))
*
ptr
++=
env
;
#endif
*
ptr
++=
"/etc/"
;
#endif
if
((
env
=
getenv
(
STRINGIFY_ARG
(
DEFAULT_HOME_ENV
))))
*
ptr
++=
env
;
*
ptr
++=
""
;
/* Place for defaults_extra_file */
#if !defined(__WIN__) && !defined(__NETWARE__)
*
ptr
++=
"~/"
;;
#elif defined(__WIN__)
if
(
GetModuleFileName
(
NULL
,
config_dir
,
sizeof
(
config_dir
)))
if
(
GetModuleFileName
(
NULL
,
config_dir
,
sizeof
(
config_dir
)))
{
{
char
*
last
=
NULL
,
*
end
=
strend
(
config_dir
);
char
*
last
=
NULL
,
*
end
=
strend
(
config_dir
);
...
@@ -1043,12 +1037,84 @@ static void init_default_directories()
...
@@ -1043,12 +1037,84 @@ static void init_default_directories()
last
=
end
;
last
=
end
;
}
}
}
}
*
ptr
++=
(
char
*
)
&
config_dir
;
ADD_DIRECTORY
(
&
config_dir
)
;
}
}
#endif
ADD_COMMON_DIRECTORIES
();
}
static
void
(
*
init_default_directories
)()
=
init_default_directories_win
;
#elif defined(__NETWARE__)
/**
Initialize default directories for Novell Netware
@details
1. sys:/etc/
2. getenv(DEFAULT_HOME_ENV)
3. --defaults-extra-file=<path> (run-time option)
*/
static
void
init_default_directories_netware
()
{
bzero
(
default_directories
,
sizeof
(
default_directories
));
ADD_DIRECTORY
(
"sys:/etc/"
);
ADD_COMMON_DIRECTORIES
();
}
static
void
(
*
init_default_directories
)()
=
init_default_directories_netware
;
#elif defined(__EMX__) || defined(OS2)
/**
Initialize default directories for OS/2
@details
1. /etc/
2. getenv(ETC)
3. getenv(DEFAULT_HOME_ENV)
4. --defaults-extra-file=<path> (run-time option)
*/
static
void
init_default_directories_os2
()
{
const
char
*
env
;
bzero
(
default_directories
,
sizeof
(
default_directories
));
ADD_DIRECTORY
(
"/etc/"
);
if
((
env
=
getenv
(
"ETC"
)))
ADD_DIRECTORY
(
env
);
ADD_COMMON_DIRECTORIES
();
}
static
void
(
*
init_default_directories
)()
=
init_default_directories_os2
;
#else
/**
Initialize default directories for Unix
@details
1. /etc/
2. --sysconfdir=<path> (compile-time option)
3. getenv(DEFAULT_HOME_ENV)
4. --defaults-extra-file=<path> (run-time option)
5. "~/"
*/
static
void
init_default_directories_unix
()
{
bzero
(
default_directories
,
sizeof
(
default_directories
));
ADD_DIRECTORY
(
"/etc/"
);
#ifdef DEFAULT_SYSCONFDIR
#ifdef DEFAULT_SYSCONFDIR
if
(
DEFAULT_SYSCONFDIR
!=
""
)
if
(
DEFAULT_SYSCONFDIR
!=
""
)
*
ptr
++=
DEFAULT_SYSCONFDIR
;
ADD_DIRECTORY
(
DEFAULT_SYSCONFDIR
)
;
#endif
#endif
*
ptr
=
0
;
/* end marker */
ADD_COMMON_DIRECTORIES
();
ADD_DIRECTORY
(
"~/"
);
}
}
static
void
(
*
init_default_directories
)()
=
init_default_directories_unix
;
#endif
mysys/mf_arr_appstr.c
0 → 100644
View file @
df8e60ae
/* Copyright (C) 2007 MySQL AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include "mysys_priv.h"
#include <m_string.h>
/* strcmp() */
/**
Append str to array, or move to the end if it already exists
@param str String to be appended
@param array The array, terminated by a NULL element, all unused elements
pre-initialized to NULL
@param size Size of the array; array must be terminated by a NULL
pointer, so can hold size - 1 elements
@retval FALSE Success
@retval TRUE Failure, array is full
*/
my_bool
array_append_string_unique
(
const
char
*
str
,
const
char
**
array
,
size_t
size
)
{
const
char
**
p
;
/* end points at the terminating NULL element */
const
char
**
end
=
array
+
size
-
1
;
DBUG_ASSERT
(
*
end
==
NULL
);
for
(
p
=
array
;
*
p
;
++
p
)
{
if
(
strcmp
(
*
p
,
str
)
==
0
)
break
;
}
if
(
p
>=
end
)
return
TRUE
;
/* Array is full */
DBUG_ASSERT
(
*
p
==
NULL
||
strcmp
(
*
p
,
str
)
==
0
);
while
(
*
(
p
+
1
))
{
*
p
=
*
(
p
+
1
);
++
p
;
}
DBUG_ASSERT
(
p
<
end
);
*
p
=
str
;
return
FALSE
;
/* Success */
}
support-files/mysql.server.sh
View file @
df8e60ae
...
@@ -311,7 +311,7 @@ case "$mode" in
...
@@ -311,7 +311,7 @@ case "$mode" in
fi
fi
exit
$return_value
exit
$return_value
else
else
log_failure_msg
"Couldn't find MySQL manager
or server
"
log_failure_msg
"Couldn't find MySQL manager
(
$manager
) or server (
$bindir
/mysqld_safe)
"
fi
fi
;;
;;
...
...
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