Commit 841be8fd authored by unknown's avatar unknown

Merge trift2.:/MySQL/M50/mysql-5.0

into  trift2.:/MySQL/M50/push-5.0
parents 72d70ff8 ad8b056a
......@@ -13,6 +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
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7 FATAL_ERROR)
PROJECT(MySql)
# This reads user configuration, generated by configure.js.
......
You can find information about how to install binary distributions at
http://dev.mysql.com/doc/refman/5.0/en/quick-standard-installation.html
The MySQL Reference Manual is also available in various formats on
http://dev.mysql.com/doc; if you're interested in the DocBook XML
sources go to http://svn.mysql.com.
......@@ -13,14 +13,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
noinst_SCRIPTS = Support/generate-text-files.pl
EXTRA_DIST = $(noinst_SCRIPTS) manual.chm mysql.info INSTALL-BINARY
TXT_FILES= ../INSTALL-SOURCE ../INSTALL-WIN-SOURCE \
INSTALL-BINARY ../support-files/MacOSX/ReadMe.txt
all-local: $(TXT_FILES)
EXTRA_DIST = mysql.info INSTALL-BINARY
# make sure that "make install" installs the info page, too
# automake only seems to take care of this automatically,
......@@ -32,31 +25,5 @@ install-data-hook: $(srcdir)/mysql.info
uninstall-local:
@RM@ -f $(DESTDIR)$(infodir)/mysql.info
# Problems with "make distclean", works differently for make files
# generated by different versions of the automake. Some require the
# generated files explicitly in DISTCLEANFILES.
DISTCLEANFILES = $(TXT_FILES)
# This target is not used in builds, just for convinience
CLEAN_FILES: $(TXT_FILES)
touch $(TXT_FILES)
GT = $(srcdir)/Support/generate-text-files.pl
../INSTALL-SOURCE: $(srcdir)/mysql.info $(GT)
perl -w $(GT) $(srcdir)/mysql.info "installing-source" "windows-source-build" > $@
../INSTALL-WIN-SOURCE: $(srcdir)/mysql.info $(GT)
perl -w $(GT) $(srcdir)/mysql.info "windows-source-build" "post-installation" > $@
# We put the description for the binary installation here so that
# people who download source wont have to see it. It is moved up to
# the toplevel by the script that makes the binary tar files.
INSTALL-BINARY: $(srcdir)/mysql.info $(GT)
perl -w $(GT) $(srcdir)/mysql.info "installing-binary" "installing-source" > $@
../support-files/MacOSX/ReadMe.txt: $(srcdir)/mysql.info $(GT)
perl -w $(GT) $(srcdir)/mysql.info "mac-os-x-installation" "netware-installation" > $@
# Don't update the files from bitkeeper
%::SCCS/s.%
#!/usr/bin/perl -w -*- perl -*-
# Copyright (C) 2000, 2003, 2005 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Generate text files from top directory from the manual.
$from = shift(@ARGV);
$fnode = shift(@ARGV);
$tnode = shift(@ARGV);
open(IN, "$from") || die "Cannot open $from: $!";
$in = 0;
while (<IN>)
{
if ($in)
{
if (/Node: $tnode,/ || /\[index/)
{
$in = 0;
}
elsif (/^File: mysql.info/ || (/^/))
{
# Just Skip node beginnings
}
else
{
print;
}
}
else
{
if (/Node: $fnode,/)
{
$in = 1;
# Skip first empty line
<IN>;
}
}
}
close(IN);
die "Could not find node \"$tnode\"" if ($in == 1);
exit 0;
*********************************************************
This is a dummy placeholder file for "manual.chm" in the
MySQL source trees.
Note, that the documentation has been moved into a separate
BitKeeper source tree named "mysqldoc" - do not attempt to edit this
file! All changes to it should be done in the mysqldoc tree.
This dummy file is being replaced with the actual file from the
mysqldoc tree when building the official source distribution.
*********************************************************
This is mysql.info, produced by makeinfo version 4.8 from manual.texi.
START-INFO-DIR-ENTRY
* mysql: (mysql). MySQL documentation.
END-INFO-DIR-ENTRY

File: mysql.info, Node: Top, Next: (dir), Prev: (dir), Up: (dir)
This is an empty placeholder file for the MySQL manual.
The MySQL manual is now maintained in a separate BitKeeper source tree!
Please see `http://www.mysql.com/doc/en/Installing_source_tree.html'
for more info on how to work with BitKeeper.
This file will be replaced with the current `mysql.info' when building
the official source distribution.
You can find a specific manual for any older version of MySQL in the
binary or source distribution for that version.

Tag Table:
Node: Top166

End Tag Table
The MySQL Reference Manual is available in various formats on
http://dev.mysql.com/doc; if you're interested in the DocBook XML
sources go to http://svn.mysql.com.
You can find information about how to install from a source distributions at
http://dev.mysql.com/doc/refman/5.0/en/installing-source.html
The MySQL Reference Manual is also available in various formats on
http://dev.mysql.com/doc; if you're interested in the DocBook XML
sources go to http://svn.mysql.com.
You can find information about how to install from a Windows source
distributions at
http://dev.mysql.com/doc/refman/5.0/en/windows-source-build.html
The MySQL Reference Manual is also available in various formats on
http://dev.mysql.com/doc; if you're interested in the DocBook XML
sources go to http://svn.mysql.com.
......@@ -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 void wf_end(struct wild_file_pack *buffer);
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 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,
......
......@@ -74,7 +74,7 @@ SET(CLIENT_SOURCES ../mysys/array.c ../strings/bchange.c ../strings/bmove.c
../mysys/hash.c ../mysys/my_sleep.c ../mysys/default_modify.c
get_password.c ../strings/int2str.c ../strings/is_prefix.c
libmysql.c ../mysys/list.c ../strings/llstr.c
../strings/longlong2str.c manager.c ../mysys/mf_cache.c
../strings/longlong2str.c manager.c ../mysys/mf_arr_appstr.c ../mysys/mf_cache.c
../mysys/mf_dirname.c ../mysys/mf_fn_ext.c ../mysys/mf_format.c
../mysys/mf_iocache.c ../mysys/mf_iocache2.c ../mysys/mf_loadpath.c
../mysys/mf_pack.c ../mysys/mf_path.c ../mysys/mf_tempfile.c ../mysys/mf_unixpath.c
......
......@@ -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_wcomp.lo typelib.lo safemalloc.lo my_alloc.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 \
thr_mutex.lo mulalloc.lo string.lo \
default.lo default_modify.lo \
......
......@@ -170,6 +170,12 @@ t2.value64=t1.value64;
value64 value32 value64 value32
9223372036854775807 2 9223372036854775807 4
drop table t1, t2;
create table t1 (sint64 bigint not null);
insert into t1 values (-9223372036854775808);
select * from t1;
sint64
-9223372036854775808
drop table t1;
create table t1 select 1 as 'a';
show create table t1;
Table Create Table
......
......@@ -113,6 +113,15 @@ t2.value64=t1.value64;
drop table t1, t2;
# Test for BUG#30069, can't handle bigint -9223372036854775808 on
# x86_64, with some GCC versions and optimizations.
create table t1 (sint64 bigint not null);
insert into t1 values (-9223372036854775808);
select * from t1;
drop table t1;
# End of 4.1 tests
#
......
......@@ -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 set dt='2007-03-23 13:49:38',da=dt;
# Test error handling
--error 1292
--error ER_TRUNCATED_WRONG_VALUE
insert into t1 values ('2007-03-32','2007-03-23 13:49:38');
select * from 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');
--error 1067
--error ER_INVALID_DEFAULT
create table t1 (t time default '916:00:00 a');
set @@sql_mode= @org_mode;
......@@ -169,6 +169,19 @@ set @@sql_mode= @org_mode;
#
# 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);
insert into t1(f1) values(curdate());
select curdate() < now(), f1 < now(), cast(f1 as date) < now() from t1;
......
......@@ -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
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_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
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
......
......@@ -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 \
mf_format.c mf_same.c mf_dirname.c mf_fn_ext.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_qsort.c mf_qsort2.c mf_sort.c \
ptr_cmp.c mf_radix.c queues.c \
......
......@@ -47,7 +47,7 @@ char *my_defaults_extra_file=0;
/* 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];
#ifdef __WIN__
......@@ -83,7 +83,22 @@ static int search_default_file_with_ext(Process_option_func func,
void *func_ctx,
const char *dir, const char *ext,
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);
......@@ -913,6 +928,25 @@ void print_defaults(const char *conf_file, const char **groups)
#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__
/*
This wrapper for GetSystemWindowsDirectory() will dynamically bind to the
......@@ -947,73 +981,33 @@ static uint my_get_system_windows_directory(char *buffer, uint size)
}
return count;
}
#endif
/*
Create the list of default directories.
/**
Initialize default directories for Microsoft Windows
On Microsoft Windows, this is:
1. C:/
@details
1. GetSystemWindowsDirectory()
2. GetWindowsDirectory()
3. GetSystemWindowsDirectory()
4. getenv(DEFAULT_HOME_ENV)
5. Directory above where the executable is located
6. ""
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>
*/
3. C:/
4. Directory above where the executable is located
5. getenv(DEFAULT_HOME_ENV)
6. --defaults-extra-file=<path> (run-time option)
*/
static void init_default_directories()
static void init_default_directories_win()
{
const char *env, **ptr= default_directories;
bzero((char *) default_directories, sizeof(default_directories));
#ifdef __WIN__
*ptr++= "C:/";
if (my_get_system_windows_directory(shared_system_dir,
sizeof(shared_system_dir)))
ADD_DIRECTORY(shared_system_dir);
if (GetWindowsDirectory(system_dir,sizeof(system_dir)))
*ptr++= (char*)&system_dir;
if (my_get_system_windows_directory(shared_system_dir,
sizeof(shared_system_dir)) &&
strcmp(system_dir, shared_system_dir))
*ptr++= (char *)&shared_system_dir;
ADD_DIRECTORY(system_dir);
ADD_DIRECTORY("C:/");
#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)))
{
char *last= NULL, *end= strend(config_dir);
......@@ -1043,12 +1037,84 @@ static void init_default_directories()
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((char *) 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((char *) 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((char *) default_directories, sizeof(default_directories));
ADD_DIRECTORY("/etc/");
#ifdef DEFAULT_SYSCONFDIR
if (DEFAULT_SYSCONFDIR != "")
*ptr++= DEFAULT_SYSCONFDIR;
ADD_DIRECTORY(DEFAULT_SYSCONFDIR);
#endif
*ptr= 0; /* end marker */
ADD_COMMON_DIRECTORIES();
ADD_DIRECTORY("~/");
}
static void (*init_default_directories)()= init_default_directories_unix;
#endif
/* 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 */
}
......@@ -845,7 +845,7 @@ int my_long10_to_str_8bit(CHARSET_INFO *cs __attribute__((unused)),
{
if (val < 0)
{
val= -val;
val= -(unsigned long int)val;
*dst++= '-';
len--;
sign= 1;
......@@ -881,7 +881,7 @@ int my_longlong10_to_str_8bit(CHARSET_INFO *cs __attribute__((unused)),
{
if (val < 0)
{
val = -val;
val = -(ulonglong)val;
*dst++= '-';
len--;
sign= 1;
......
You can find information about how to install on Mac OS X at
http://dev.mysql.com/doc/refman/5.0/en/mac-os-x-installation.html
The MySQL Reference Manual is also available in various formats on
http://dev.mysql.com/doc; if you're interested in the DocBook XML
sources go to http://svn.mysql.com.
......@@ -311,7 +311,7 @@ case "$mode" in
fi
exit $return_value
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
;;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment