mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Update for OS2 (patch from Yuri Dario).
Use LONG_TIMEOUT (one year) instead of ~0 for long timeouts Fixed error messages. Fixed problem with const propagation when comparing columns of different types
This commit is contained in:
@@ -46840,6 +46840,12 @@ not yet 100% confident in this code.
|
||||
@appendixsubsec Changes in release 3.23.44
|
||||
@itemize @bullet
|
||||
@item
|
||||
Fixed bug in const-propagation when comparing columns of different
|
||||
types. (@code{SELECT * FROM date_col="2001-01-01" and date_col=time_col})
|
||||
@item
|
||||
Fixed bug that caused error message @code{Can't write, because of unique
|
||||
constraint} with some @code{GROUP BY} queries.
|
||||
@item
|
||||
Fixed problem with sjis character strings used within quoted table names.
|
||||
@item
|
||||
Fixed coredump when using @code{CREATE ... FULLTEXT} keys with other table
|
||||
@@ -46847,6 +46853,8 @@ handlers than MyISAM.
|
||||
@item
|
||||
Add missing @code{InnoDB} variables to @code{SHOW VARIABLES}.
|
||||
@item
|
||||
Foreign keys checking is now done for @code{InnoDB} tables.
|
||||
@item
|
||||
Don't use @code{signal()} on windows because this appears to not be
|
||||
100 % reliable.
|
||||
@item
|
||||
@@ -46858,7 +46866,9 @@ Fixed bug when doing @code{LEFT JOIN ... ON (column_name = constant) WHERE colu
|
||||
When using replications, aborted queries that contained @code{%} could cause
|
||||
a core dump.
|
||||
@item
|
||||
TCP_NODELAY was not used on some systems. (Speed problem).
|
||||
@code{TCP_NODELAY} was not used on some systems. (Speed problem).
|
||||
@item
|
||||
Applied portability fixes for OS/2 (Patch by Yuri Dario).
|
||||
@end itemize
|
||||
|
||||
@node News-3.23.43, News-3.23.42, News-3.23.44, News-3.23.x
|
||||
|
||||
@@ -28,4 +28,5 @@
|
||||
enum options { OPT_CHARSETS_DIR=256, OPT_DEFAULT_CHARSET,
|
||||
OPT_PAGER, OPT_NOPAGER, OPT_TEE, OPT_NOTEE,
|
||||
OPT_LOW_PRIORITY, OPT_AUTO_REPAIR, OPT_COMPRESS,
|
||||
OPT_DROP, OPT_LOCKS, OPT_KEYWORDS, OPT_DELAYED, OPT_OPTIMIZE,
|
||||
OPT_FTB, OPT_LTB, OPT_ENC, OPT_O_ENC, OPT_ESC, OPT_TABLES};
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
#include <m_string.h>
|
||||
#include <m_ctype.h>
|
||||
|
||||
#include "client_priv.h"
|
||||
#include "mysql.h"
|
||||
#include "mysql_version.h"
|
||||
#include "mysqld_error.h"
|
||||
@@ -87,10 +88,6 @@ static DYNAMIC_STRING extended_row;
|
||||
#include "sslopt-vars.h"
|
||||
FILE *md_result_file;
|
||||
|
||||
enum md_options {OPT_FTB=256, OPT_LTB, OPT_ENC, OPT_O_ENC, OPT_ESC,
|
||||
OPT_KEYWORDS, OPT_LOCKS, OPT_DROP, OPT_OPTIMIZE, OPT_DELAYED,
|
||||
OPT_TABLES, MD_OPT_CHARSETS_DIR, MD_OPT_DEFAULT_CHARSET};
|
||||
|
||||
static struct option long_options[] =
|
||||
{
|
||||
{"all-databases", no_argument, 0, 'A'},
|
||||
@@ -98,12 +95,12 @@ static struct option long_options[] =
|
||||
{"add-drop-table", no_argument, 0, OPT_DROP},
|
||||
{"add-locks", no_argument, 0, OPT_LOCKS},
|
||||
{"allow-keywords", no_argument, 0, OPT_KEYWORDS},
|
||||
{"character-sets-dir",required_argument,0, MD_OPT_CHARSETS_DIR},
|
||||
{"character-sets-dir",required_argument,0, OPT_CHARSETS_DIR},
|
||||
{"complete-insert", no_argument, 0, 'c'},
|
||||
{"compress", no_argument, 0, 'C'},
|
||||
{"databases", no_argument, 0, 'B'},
|
||||
{"debug", optional_argument, 0, '#'},
|
||||
{"default-character-set", required_argument, 0, MD_OPT_DEFAULT_CHARSET},
|
||||
{"default-character-set", required_argument, 0, OPT_DEFAULT_CHARSET},
|
||||
{"delayed-insert", no_argument, 0, OPT_DELAYED},
|
||||
{"extended-insert", no_argument, 0, 'e'},
|
||||
{"fields-terminated-by", required_argument, 0, (int) OPT_FTB},
|
||||
@@ -307,10 +304,10 @@ static int get_options(int *argc,char ***argv)
|
||||
case 'A':
|
||||
opt_alldbs=1;
|
||||
break;
|
||||
case MD_OPT_DEFAULT_CHARSET:
|
||||
case OPT_DEFAULT_CHARSET:
|
||||
default_charset= optarg;
|
||||
break;
|
||||
case MD_OPT_CHARSETS_DIR:
|
||||
case OPT_CHARSETS_DIR:
|
||||
charsets_dir= optarg;
|
||||
break;
|
||||
case 'f':
|
||||
|
||||
@@ -214,16 +214,8 @@
|
||||
#define ER_NO_PERMISSON_TO_CREATE_USER 1211
|
||||
#define ER_UNION_TABLES_IN_DIFFERENT_DIR 1212
|
||||
#define ER_LOCK_DEADLOCK 1213
|
||||
#define ER_DUMMY1 1214
|
||||
#define ER_DUMMY2 1215
|
||||
#define ER_DUMMY3 1216
|
||||
#define ER_DUMMY4 1217
|
||||
#define ER_DUMMY5 1218
|
||||
#define ER_DUMMY6 1219
|
||||
#define ER_DUMMY7 1220
|
||||
#define ER_DUMMY8 1221
|
||||
#define ER_TABLE_CANT_HANDLE_FULLTEXT 1222
|
||||
#define ER_CANNOT_ADD_FOREIGN 1223
|
||||
#define ER_NO_REFERENCED_ROW 1224
|
||||
#define ER_ROW_IS_REFERENCED 1225
|
||||
#define ER_ERROR_MESSAGES 226
|
||||
#define ER_TABLE_CANT_HANDLE_FULLTEXT 1214
|
||||
#define ER_CANNOT_ADD_FOREIGN 1215
|
||||
#define ER_NO_REFERENCED_ROW 1216
|
||||
#define ER_ROW_IS_REFERENCED 1217
|
||||
#define ER_ERROR_MESSAGES 218
|
||||
|
||||
@@ -253,10 +253,10 @@ int nisam_create(const char *name,uint keys,N_KEYDEF *keyinfo,
|
||||
share.base.fields=fields;
|
||||
share.base.pack_fields=packed;
|
||||
share.base.sortkey= (ushort) ~0;
|
||||
share.base.max_data_file_length= (pointer == 4) ? ~0L :
|
||||
share.base.max_data_file_length= (pointer == 4) ? (ulong) ~0L :
|
||||
(options & (HA_OPTION_PACK_RECORD | HA_OPTION_COMPRESS_RECORD)) ?
|
||||
(1L << (pointer*8)) :
|
||||
(pointer == 3 && reclength >= 256L) ? NI_POS_ERROR :
|
||||
(ulong) (1L << (pointer*8)) :
|
||||
(pointer == 3 && reclength >= 256L) ? (ulong) NI_POS_ERROR :
|
||||
((ulong) reclength * (1L << (pointer*8)));
|
||||
share.base.max_key_file_length= (share.base.key_reflength == 3 ?
|
||||
NI_POS_ERROR :
|
||||
|
||||
@@ -35,6 +35,10 @@ SET_STACK_SIZE(9000) /* Minimum stack size for program */
|
||||
#define my_raid_delete(A,B,C) my_delete(A,B)
|
||||
#endif
|
||||
|
||||
#ifdef OS2
|
||||
#define _sanity(a,b)
|
||||
#endif
|
||||
|
||||
static uint decode_bits;
|
||||
static char **default_argv;
|
||||
static const char *load_default_groups[]= { "myisamchk", 0 };
|
||||
|
||||
@@ -229,7 +229,7 @@ int main(int argc, char **argv)
|
||||
#endif
|
||||
}
|
||||
|
||||
enum options {OPT_CHARSETS_DIR_MP=256};
|
||||
enum options_mp {OPT_CHARSETS_DIR_MP=256};
|
||||
|
||||
static struct option long_options[] =
|
||||
{
|
||||
|
||||
@@ -37,11 +37,11 @@ static my_bool cache_remove_open_tmp(IO_CACHE *cache, const char *name)
|
||||
#else
|
||||
int length;
|
||||
if (!(cache->file_name=
|
||||
(char*) my_malloc((length=strlen(name)+1),MYF(MY_WME)))
|
||||
(char*) my_malloc((length=strlen(name)+1),MYF(MY_WME))))
|
||||
{
|
||||
my_close(cache->file,MYF(0));
|
||||
cache->file = -1;
|
||||
errno=my_error=ENOMEM;
|
||||
errno=my_errno=ENOMEM;
|
||||
return 1;
|
||||
}
|
||||
memcpy(cache->file_name,name,length);
|
||||
|
||||
@@ -126,6 +126,9 @@ File create_temp_file(char *to, const char *dir, const char *prefix,
|
||||
// changing environ variable doesn't work with VACPP
|
||||
char buffer[256];
|
||||
sprintf( buffer, "TMP=%s", dir);
|
||||
// remove ending backslash
|
||||
if (buffer[strlen(buffer)-1] == '\\')
|
||||
buffer[strlen(buffer)-1] = '\0';
|
||||
putenv( buffer);
|
||||
#else
|
||||
old_env= (char**) environ;
|
||||
|
||||
@@ -22,7 +22,6 @@ void _OS2errno( APIRET rc);
|
||||
longlong _lseek64( int fd, longlong offset, int seektype);
|
||||
int _lock64( int fd, int locktype, my_off_t start,
|
||||
my_off_t length, myf MyFlags);
|
||||
int _sopen64( const char *name, int oflag, int shflag, int mask);
|
||||
|
||||
//
|
||||
// this class is used to define a global c++ variable, that
|
||||
@@ -255,7 +254,7 @@ int _lock64( int fd, int locktype, my_off_t start,
|
||||
return(-1);
|
||||
}
|
||||
|
||||
int _sopen64( const char *name, int oflag, int shflag, int mask)
|
||||
int _sopen( const char *name, int oflag, int shflag, int mask)
|
||||
{
|
||||
int fail_errno;
|
||||
APIRET rc = 0;
|
||||
@@ -325,17 +324,60 @@ int _sopen64( const char *name, int oflag, int shflag, int mask)
|
||||
return hf;
|
||||
}
|
||||
|
||||
int read( int fd, void *buffer, unsigned int count)
|
||||
{
|
||||
APIRET rc;
|
||||
ULONG actual;
|
||||
|
||||
rc = DosRead( fd, (PVOID) buffer, count, &actual);
|
||||
|
||||
if (!rc)
|
||||
return( actual);/* NO_ERROR */
|
||||
|
||||
// set errno
|
||||
_OS2errno( rc);
|
||||
// write failed
|
||||
return(-1);
|
||||
}
|
||||
|
||||
int write( int fd, const void *buffer, unsigned int count)
|
||||
{
|
||||
APIRET rc;
|
||||
ULONG actual;
|
||||
|
||||
rc = DosWrite( fd, (PVOID) buffer, count, &actual);
|
||||
|
||||
if (!rc)
|
||||
return( actual);/* NO_ERROR */
|
||||
|
||||
// set errno
|
||||
_OS2errno( rc);
|
||||
// write failed
|
||||
return(-1);
|
||||
}
|
||||
|
||||
int close( int fd)
|
||||
{
|
||||
APIRET rc;
|
||||
ULONG actual;
|
||||
|
||||
rc = DosClose( fd);
|
||||
|
||||
if (!rc)
|
||||
return( 0);/* NO_ERROR */
|
||||
|
||||
// set errno
|
||||
_OS2errno( rc);
|
||||
// write failed
|
||||
return(-1);
|
||||
}
|
||||
|
||||
inline int open( const char *name, int oflag)
|
||||
{
|
||||
return _sopen64( name, oflag, OPEN_SHARE_DENYNONE, S_IREAD | S_IWRITE);
|
||||
return sopen( name, oflag, OPEN_SHARE_DENYNONE, S_IREAD | S_IWRITE);
|
||||
}
|
||||
|
||||
inline int open( const char *name, int oflag, int mask)
|
||||
{
|
||||
return _sopen64( name, oflag, OPEN_SHARE_DENYNONE, mask);
|
||||
}
|
||||
|
||||
inline int sopen( const char *name, int oflag, int shflag, int mask)
|
||||
{
|
||||
return _sopen64( name, oflag, shflag, mask);
|
||||
return sopen( name, oflag, OPEN_SHARE_DENYNONE, mask);
|
||||
}
|
||||
|
||||
@@ -95,6 +95,9 @@ my_string my_tempnam(const char *dir, const char *pfx,
|
||||
// changing environ variable doesn't work with VACPP
|
||||
char buffer[256];
|
||||
sprintf( buffer, "TMP=%s", dir);
|
||||
// remove ending backslash
|
||||
if (buffer[strlen(buffer)-1] == '\\')
|
||||
buffer[strlen(buffer)-1] = '\0';
|
||||
putenv( buffer);
|
||||
#else
|
||||
old_env=(char**)environ;
|
||||
|
||||
10
os2/BldLevel.cmd
Normal file
10
os2/BldLevel.cmd
Normal file
@@ -0,0 +1,10 @@
|
||||
@echo off
|
||||
|
||||
REM I'm using resources for BLDLEVEL info, because VA4 linker has the bad
|
||||
REM feature of using versionstring content for padding files.
|
||||
|
||||
REM To set fixpak level: -P"fixpak level"
|
||||
SET MYSQL_VERSION=3.23.42
|
||||
SET MYSQL_BUILD=1
|
||||
|
||||
BldLevelInf -V%MYSQL_VERSION% -N"MySQL AB, Yuri Dario" -D"MySQL %MYSQL_VERSION% for OS/2 - Build %MYSQL_BUILD%" -Len BldLevel.rc
|
||||
1
os2/BldLevel.rc
Normal file
1
os2/BldLevel.rc
Normal file
@@ -0,0 +1 @@
|
||||
RCDATA 1 { "@#MySQL AB, Yuri Dario:3.23.42#@##1## 10 Sep 2001 11:57:17 paperino::en::::@@MySQL 3.23.42 for OS/2 - Build 1" }
|
||||
570
os2/BldLevelInf.cmd
Normal file
570
os2/BldLevelInf.cmd
Normal file
@@ -0,0 +1,570 @@
|
||||
/* $Id: BldLevelInf.cmd,v 1.5 2001/01/26 21:33:13 phaller Exp $
|
||||
*
|
||||
* Adds a Description string to the given .def-file.
|
||||
* Fills in default values; like build time and host.
|
||||
*
|
||||
*/
|
||||
|
||||
if RxFuncQuery('SysLoadFuncs') = 1 then
|
||||
do
|
||||
call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs';
|
||||
call SysLoadFuncs;
|
||||
end
|
||||
|
||||
|
||||
/*
|
||||
* Set default parameter values.
|
||||
*/
|
||||
sDefFileIn = '';
|
||||
sDefFileOut = '';
|
||||
sASDFeatureId = '';
|
||||
sCountryCode = '';
|
||||
sDateTime = left(' 'date()' 'time(), 26);
|
||||
sDescription = 'Odin32';
|
||||
sFixPakVer = '';
|
||||
sHostname = strip(substr(VALUE('HOSTNAME',,'OS2ENVIRONMENT'), 1, 11));
|
||||
sLanguageCode = '';
|
||||
sMiniVer = '';
|
||||
sVendor = 'Project Odin';
|
||||
sVersion = '0.5';
|
||||
|
||||
|
||||
/*
|
||||
* Parse parameters.
|
||||
*/
|
||||
parse arg sArgs
|
||||
if (sArgs = '') then
|
||||
do
|
||||
call syntax;
|
||||
exit(1);
|
||||
end
|
||||
|
||||
do while (sArgs <> '')
|
||||
sArgs = strip(sArgs);
|
||||
if (substr(sArgs, 1, 1) = '-' | substr(sArgs, 1, 1) = '/') then
|
||||
do /*
|
||||
* Option.
|
||||
*/
|
||||
ch = translate(substr(sArgs, 2, 1));
|
||||
if (pos(ch, 'ACDHLMNPRTV') < 1) then
|
||||
do
|
||||
say 'invalid option:' substr(sArgs, 1, 2);
|
||||
call syntax;
|
||||
exit(2);
|
||||
end
|
||||
|
||||
/* get value and advance sArgs to next or to end. */
|
||||
if (substr(sArgs, 3, 1) = '"') then
|
||||
do
|
||||
iNext = pos('"', sArgs, 4);
|
||||
fQuote = 1;
|
||||
end
|
||||
else
|
||||
do
|
||||
iNext = pos(' ', sArgs, 3);
|
||||
if (iNext <= 0) then
|
||||
iNext = length(sArgs);
|
||||
fQuote = 0;
|
||||
end
|
||||
|
||||
if (iNext > 3 | ch = 'R') then
|
||||
do
|
||||
sValue = substr(sArgs, 3 + fQuote, iNext - 3 - fQuote);
|
||||
sArgs = strip(substr(sArgs, iNext+1));
|
||||
/*say 'iNext:' iNext 'sValue:' sValue 'sArgs:' sArgs; */
|
||||
|
||||
/* check if we're gonna search for something in an file. */
|
||||
if (sValue <> '' & pos('#define=', sValue) > 0) then
|
||||
sValue = LookupDefine(sValue);
|
||||
end
|
||||
else
|
||||
do
|
||||
say 'syntax error near' substr(sArgs, 1, 2)'.';
|
||||
call syntax;
|
||||
exit(3);
|
||||
end
|
||||
|
||||
|
||||
/* set value */
|
||||
select
|
||||
when (ch = 'A') then /* ASD Feature Id */
|
||||
sASDFeatureId = sValue;
|
||||
|
||||
when (ch = 'C') then /* Country code */
|
||||
sCountryCode = sValue;
|
||||
|
||||
when (ch = 'D') then /* Description */
|
||||
sDescription = sValue;
|
||||
|
||||
when (ch = 'H') then /* Hostname */
|
||||
sHostname = sValue;
|
||||
|
||||
when (ch = 'L') then /* Language code */
|
||||
sLanguageCode = sValue;
|
||||
|
||||
when (ch = 'M') then /* MiniVer */
|
||||
sMiniVer = sValue;
|
||||
|
||||
when (ch = 'N') then /* Vendor */
|
||||
sVendor = sValue;
|
||||
|
||||
when (ch = 'R') then /* Vendor */
|
||||
sDescription = ReadDescription(sValue, sDefFile);
|
||||
|
||||
when (ch = 'P') then /* Fixpak version */
|
||||
sFixPakVer = sValue;
|
||||
|
||||
when (ch = 'T') then /* Date Time */
|
||||
sDateTime = sValue;
|
||||
|
||||
when (ch = 'V') then /* Version */
|
||||
sVersion = sValue;
|
||||
|
||||
/* Otherwise it's an illegal option */
|
||||
otherwise
|
||||
say 'invalid option:' substr(sArgs, 1, 2);
|
||||
call syntax;
|
||||
exit(2);
|
||||
end /* select */
|
||||
end
|
||||
else
|
||||
do /*
|
||||
* Defition file...
|
||||
*/
|
||||
if (sDefFileOut <> '') then
|
||||
do
|
||||
say 'Syntax error: Can''t specify more than two defintion files!';
|
||||
exit(4);
|
||||
end
|
||||
if (sDefFileIn = '') then
|
||||
parse value sArgs with sDefFileIn' 'sArgs
|
||||
else
|
||||
parse value sArgs with sDefFileOut' 'sArgs
|
||||
sArgs = strip(sArgs);
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
/* check that a defintion file was specified. */
|
||||
if (sDefFileIn = '') then
|
||||
do
|
||||
say 'Syntax error: Will have to specify a .def-file to update.';
|
||||
call syntax;
|
||||
exit(5);
|
||||
end
|
||||
|
||||
|
||||
/*
|
||||
* Trim strings to correct lengths.
|
||||
*/
|
||||
sVendor = strip(substr(sVendor, 1, 31));
|
||||
if (substr(sDateTime, 1, 1) <> ' ') then
|
||||
sDateTime = ' ' || sDateTime;
|
||||
sDateTime = left(sDateTime, 26);
|
||||
sHostname = strip(substr(sHostname, 1, 11));
|
||||
sMiniVer = strip(substr(sMiniVer, 1, 11));
|
||||
sDescription = strip(substr(sDescription, 1, 80));
|
||||
sCountryCode = strip(substr(sCountryCode, 1, 4));
|
||||
sLanguageCode = strip(substr(sLanguageCode, 1, 4));
|
||||
sASDFeatureId = strip(substr(sASDFeatureId, 1, 11));
|
||||
sFixPakVer = strip(substr(sFixPakVer, 1, 11));
|
||||
|
||||
|
||||
/*
|
||||
* Signature
|
||||
*/
|
||||
sEnhSign = '##1##'
|
||||
|
||||
/*
|
||||
* Build description string.
|
||||
*/
|
||||
sDescription = '@#'sVendor':'sVersion'#@'sEnhSign||,
|
||||
sDateTime||sHostname||,
|
||||
':'sASDFeatureId':'sLanguageCode':'sCountryCode':'sMiniVer||,
|
||||
'::'sFixPakVer'@@'sDescription;
|
||||
|
||||
/*
|
||||
* Update .def-file.
|
||||
*/
|
||||
call SysFileDelete(sDefFileIn);
|
||||
rc = lineout( sDefFileIn, 'RCDATA 1 { "' || sDescription || '" }');
|
||||
|
||||
/*rc = UpdateDefFile(sDefFileIn, sDefFileOut, sDescription);*/
|
||||
exit(rc);
|
||||
|
||||
|
||||
/**
|
||||
* Display script syntax.
|
||||
*/
|
||||
syntax: procedure
|
||||
say 'Syntax: MakeDesc.cmd [options] <deffile in> <deffile out> [options]'
|
||||
say ' <deffile> Defitionfile which will have an DESCRIPTION appended.'
|
||||
say 'Options:'
|
||||
say ' -A<string> ASD Feature Id.'
|
||||
say ' -C<string> Country code.'
|
||||
say ' -D<string> Description.'
|
||||
say ' -R[deffile] Read description from .def file.'
|
||||
say ' -H<string> Hostname.'
|
||||
say ' -L<string> Language code.'
|
||||
say ' -M<string> MiniVer.'
|
||||
say ' -N<string> Vendor.'
|
||||
say ' -P<string> Fixpak version.'
|
||||
say ' -T<string> Date Time.'
|
||||
say ' -V<string> Version.'
|
||||
say '<string> could be a double qoute qouted string or a single word.'
|
||||
say ' You could also reference #defines in C/C++ include files.'
|
||||
say ' The string should then have this form:'
|
||||
say ' "#define=<DEFINE_NAME>,<includefile.h>"'
|
||||
say '';
|
||||
|
||||
return;
|
||||
|
||||
|
||||
/**
|
||||
* Search for a #define in an C/C++ header or source file.
|
||||
*
|
||||
* @returns String containing the defined value
|
||||
* found for the define in the header file.
|
||||
* Quits on fatal errors.
|
||||
* @param A string on the form: "#define=DEFINETOFIND,includefile.h"
|
||||
* @remark Write only code... - let's hope it works.
|
||||
*/
|
||||
LookupDefine: procedure
|
||||
parse arg '#'sDefine'='sMacro','sIncludeFile
|
||||
|
||||
/*
|
||||
* Validate parameters.
|
||||
*/
|
||||
sMacro = strip(sMacro);
|
||||
sIncludeFile = strip(sIncludeFile);
|
||||
if (sMacro = '') then
|
||||
do
|
||||
say 'syntax error: #define=<DEFINE_NAME>,<includefile.h>.';
|
||||
say ' <DEFINE_NAME> was empty.';
|
||||
exit(-20);
|
||||
end
|
||||
if (sIncludeFile = '') then
|
||||
do
|
||||
say 'syntax error: #define=<DEFINE_NAME>,<includefile.h>.';
|
||||
say ' <includefile.h> was empty.';
|
||||
exit(-20);
|
||||
end
|
||||
|
||||
|
||||
sIllegal = translate(translate(sMacro),,
|
||||
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!',,
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_');
|
||||
|
||||
if (strip(translate(sIllegal, ' ', '!')) <> '') then
|
||||
do
|
||||
say 'syntax error: #define=<DEFINE_NAME>,<includefile.h>.';
|
||||
say ' <DEFINE_NAME> contains illegal charater(s).'
|
||||
say ' 'sMacro;
|
||||
say ' 'translate(sIllegal, ' ', '!');
|
||||
exit(-20);
|
||||
end
|
||||
|
||||
/*
|
||||
* Open include file.
|
||||
*/
|
||||
sRc = stream(sIncludeFile, 'c', 'open read');
|
||||
if (pos('READY', sRc) <> 1) then
|
||||
do /* search INCLUDE variable */
|
||||
sFile = SysSearchPath('INCLUDE', sIncludeFile);
|
||||
if (sFile = '') then
|
||||
do
|
||||
say 'Can''t find include file 'sIncludeFile'.';
|
||||
exit(-20);
|
||||
end
|
||||
sIncludeFile = sFile;
|
||||
|
||||
sRc = stream(sIncludeFile, 'c', 'open read');
|
||||
if (pos('READY', sRc) <> 1) then
|
||||
do
|
||||
say 'Failed to open include file' sIncludeFile'.';
|
||||
exit(-20);
|
||||
end
|
||||
end
|
||||
|
||||
/*
|
||||
* Search the file line by line.
|
||||
* We'll check for lines starting with a hash (#) char.
|
||||
* Then check that the word after the hash is 'define'.
|
||||
* Then match the next word with the macro name.
|
||||
* Then then get the next rest of the line to comment or continuation char.
|
||||
* (continuation is not supported)
|
||||
* Finally strip quotes.
|
||||
*/
|
||||
sValue = '';
|
||||
do while (lines(sIncludeFile) > 0)
|
||||
sLine = strip(linein(sIncludeFile));
|
||||
if (sLine = '') then
|
||||
iterate;
|
||||
if (substr(sLine, 1, 1) <> '#') then
|
||||
iterate;
|
||||
sLine = substr(sLine, 2);
|
||||
if (word(sLine, 1) <> 'define') then
|
||||
iterate;
|
||||
sLine = strip(substr(sLine, wordpos(sLine, 1) + length('define')+1));
|
||||
if ( substr(sLine, 1, length(sMacro)) <> sMacro,
|
||||
| substr(sLine, length(sMacro)+1, 1) <> ' ') then
|
||||
iterate;
|
||||
sLine = strip(substr(sLine, length(sMacro) + 1));
|
||||
if (sLine = '') then
|
||||
do
|
||||
say 'error: #define' sMacro' is empty.';
|
||||
call stream sIncludeFile, 'c', 'close';
|
||||
exit(-20);
|
||||
end
|
||||
|
||||
chQuote = substr(sLine, 1, 1);
|
||||
if (chQuote = '"' | chQuote = "'") then
|
||||
do /* quoted string */
|
||||
iLastQuote = 0;
|
||||
do forever
|
||||
iLast = pos(chQuote, sLine, 2);
|
||||
if (iLast <= 0) then
|
||||
leave;
|
||||
if (substr(sLine, iLast, 1) = '\') then
|
||||
iterate;
|
||||
iLastQuote = iLast;
|
||||
leave;
|
||||
end
|
||||
|
||||
if (iLastQuote <= 0) then
|
||||
do
|
||||
say 'C/C++ syntax error in 'sIncludefile': didn''t find end quote.';
|
||||
call stream sIncludeFile, 'c', 'close';
|
||||
exit(-20);
|
||||
end
|
||||
|
||||
call stream sIncludeFile, 'c', 'close';
|
||||
sValue = substr(sLine, 2, iLastQuote - 2);
|
||||
say 'Found 'sMacro'='sValue;
|
||||
return sValue;
|
||||
end
|
||||
else
|
||||
do
|
||||
iCommentCPP = pos('//',sLine);
|
||||
iCommentC = pos('/*',sLine);
|
||||
if (iCommentC > 0 & iCommentCPP > 0 & iCommentC > iCommentCPP) then
|
||||
iComment = iCommentCPP;
|
||||
else if (iCommentC > 0 & iCommentCPP > 0 & iCommentC < iCommentCPP) then
|
||||
iComment = iCommentC;
|
||||
else if (iCommentCPP > 0) then
|
||||
iComment = iCommentCPP;
|
||||
else if (iCommentC > 0) then
|
||||
iComment = iCommentC;
|
||||
else
|
||||
iComment = 0;
|
||||
|
||||
if (iComment > 0) then
|
||||
sValue = strip(substr(sLine, 1, iComment-1));
|
||||
else
|
||||
sValue = strip(sLine);
|
||||
|
||||
if (sValue <> '') then
|
||||
do
|
||||
if (substr(sValue, length(sValue)) = '\') then
|
||||
do
|
||||
say 'Found continuation char: Multiline definitions are not supported!\n';
|
||||
call stream sIncludeFile, 'c', 'close';
|
||||
exit(-20);
|
||||
end
|
||||
end
|
||||
|
||||
if (sValue = '') then
|
||||
say 'warning: The #define has no value.';
|
||||
|
||||
call stream sIncludeFile, 'c', 'close';
|
||||
say 'Found 'sMacro'='sValue;
|
||||
return sValue;
|
||||
end
|
||||
end
|
||||
|
||||
call stream sIncludeFile, 'c', 'close';
|
||||
say 'error: didn''t find #define' sMacro'.';
|
||||
exit(-20);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Reads the description line for a .def-file.
|
||||
* @returns The Description string, with quotes removed.
|
||||
* Empty string is acceptable.
|
||||
* On error we'll terminate the script.
|
||||
* @param sDefFile Filaname of .def-file to read the description from.
|
||||
* @param sDefFile2 Used if sDefFile is empty.
|
||||
* @author knut st. osmundsen (knut.stange.osmundsen@mynd.no)
|
||||
*/
|
||||
ReadDescription: procedure;
|
||||
parse arg sDefFile, sDefFile2
|
||||
|
||||
/*
|
||||
* Validate parameters.
|
||||
*/
|
||||
if (sDefFile = '') then
|
||||
sDefFile = sDefFile2;
|
||||
if (sDefFile = '') then
|
||||
do
|
||||
say 'error: no definition file to get description from.'
|
||||
exit(-1);
|
||||
end
|
||||
|
||||
/*
|
||||
* Open file
|
||||
*/
|
||||
rc = stream(sDefFile, 'c', 'open read');
|
||||
if (pos('READY', rc) <> 1) then
|
||||
do
|
||||
say 'error: failed to open deffile file.';
|
||||
exit(-1);
|
||||
end
|
||||
|
||||
|
||||
/*
|
||||
* Search for the 'DESCRIPTION' line.
|
||||
*/
|
||||
do while (lines(sDefFile) > 0)
|
||||
sLine = strip(linein(sDefFile));
|
||||
if (sLine = '') then
|
||||
iterate;
|
||||
if (translate(word(sLine, 1)) <> 'DESCRIPTION') then
|
||||
iterate;
|
||||
sLine = strip(substr(sLine, wordpos(sLine, 1) + length('DESCRIPTION')+1));
|
||||
|
||||
ch = substr(sLine, 1, 1);
|
||||
if (ch <> "'" & ch <> '"') then
|
||||
do
|
||||
say 'syntax error: description line in' sDefFile 'is misformed.';
|
||||
call stream sDefFile, 'c', 'close';
|
||||
exit(-10);
|
||||
end
|
||||
|
||||
iEnd = pos(ch, sLine, 2);
|
||||
if (iEnd <= 0) then
|
||||
do
|
||||
say 'syntax error: description line in' sDefFile 'is misformed.';
|
||||
call stream sDefFile, 'c', 'close';
|
||||
exit(-10);
|
||||
end
|
||||
|
||||
call stream sDefFile, 'c', 'close';
|
||||
sValue = substr(sLine, 2, iEnd - 2);
|
||||
say 'Found Description:' sValue;
|
||||
return sValue;
|
||||
end
|
||||
|
||||
call stream sDefFile, 'c', 'close';
|
||||
say 'info: Didn''t find description line in' sDefFile'.';
|
||||
return '';
|
||||
|
||||
|
||||
/**
|
||||
* This is a function which reads sDefFileIn into and
|
||||
* internal array and changes the DESCRIPTION text if found.
|
||||
* If DESCRIPTION isn't found, it is added at the end.
|
||||
* The array is written to sDefFileOut.
|
||||
* @returns 0 on succes.
|
||||
* Errorcode on error.
|
||||
* @param sDefFileIn Input .def-file.
|
||||
* @param sDefFileOut Output .def-file. Overwritten.
|
||||
* @param sDescription New description string.
|
||||
* @author knut st. osmundsen (knut.stange.osmundsen@mynd.no)
|
||||
*/
|
||||
UpdateDefFile: procedure;
|
||||
parse arg sDefFileIn, sDefFileOut, sDescription
|
||||
|
||||
/*
|
||||
* Validate parameters.
|
||||
*/
|
||||
if (sDefFileOut = '') then
|
||||
sDefFileOut = sDefFileIn;
|
||||
|
||||
/*
|
||||
* Open file input file.
|
||||
*/
|
||||
rc = stream(sDefFileIn, 'c', 'open read');
|
||||
if (pos('READY', rc) <> 1) then
|
||||
do
|
||||
say 'error: failed to open' sDefFileIn 'file.';
|
||||
return 110;
|
||||
end
|
||||
|
||||
|
||||
/*
|
||||
* Search for the 'BLDLEVEL' line.
|
||||
*/
|
||||
i = 0;
|
||||
fDescription = 0;
|
||||
do while (lines(sDefFileIn) > 0)
|
||||
/*
|
||||
* Read line.
|
||||
*/
|
||||
i = i + 1;
|
||||
asFile.i = linein(sDefFileIn);
|
||||
|
||||
/*
|
||||
* Look for BLDLEVEL;
|
||||
*/
|
||||
if (asFile.i = '') then
|
||||
iterate;
|
||||
if (translate(word(strip(asFile.i), 1)) <> 'BLDLEVEL') then
|
||||
iterate;
|
||||
if (fDescription) then
|
||||
do
|
||||
say 'warning: multiple descriptions lines. Line' i 'removed';
|
||||
i = i - 1;
|
||||
iterate;
|
||||
end
|
||||
|
||||
/*
|
||||
* Found description - replace with new description.
|
||||
*/
|
||||
asFile.i = "BldLevel = '"||sDescription||"'";
|
||||
fDescription = 1;
|
||||
end
|
||||
|
||||
/*
|
||||
* Add description is none was found.
|
||||
*/
|
||||
if (\fDescription) then
|
||||
do
|
||||
i = i + 1;
|
||||
asFile.i = "BldLevel = '"||sDescription||"'";
|
||||
end
|
||||
asFile.0 = i;
|
||||
|
||||
|
||||
/*
|
||||
* Close input file and open output file.
|
||||
*/
|
||||
call stream sDefFileIn, 'c', 'close';
|
||||
call SysFileDelete(sDefFileOut);
|
||||
rc = stream(sDefFileOut, 'c', 'open write');
|
||||
if (pos('READY', rc) <> 1) then
|
||||
do
|
||||
say 'error: failed to open outputfile' sDefFileOut 'file.';
|
||||
return 110;
|
||||
end
|
||||
|
||||
/*
|
||||
* Make firstline and write all the lines to the output file.
|
||||
*/
|
||||
/*call lineout sDefFileOut, '; Updated by makedesc.cmd', 1;*/
|
||||
do i = 1 to asFile.0
|
||||
rc = lineout(sDefFileOut, asFile.i);
|
||||
if (rc > 0) then
|
||||
do
|
||||
say 'error: failed to write line' i 'to' sDefFileOut'.'
|
||||
call stream sDefFileOut, 'c', 'close';
|
||||
return 5;
|
||||
end
|
||||
end
|
||||
|
||||
/*
|
||||
* Close output file and return succesfully.
|
||||
*/
|
||||
call stream sDefFileOut, 'c', 'close';
|
||||
return 0;
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
|
||||
2001/09/16
|
||||
- fixed creation directory of temporary files
|
||||
- enabled cached list file for deleting temp open files
|
||||
|
||||
2001/09/10
|
||||
- Build source 3.23.42, released
|
||||
|
||||
2001/09/08
|
||||
- fixed file api
|
||||
|
||||
2001/06/12
|
||||
- fixed support for > 2GB file size, needs also DosOpenL
|
||||
- mixed 64bit/32bit file size support, dinamic loading of
|
||||
|
||||
@@ -6,7 +6,6 @@ include "MySQL-Opt.icc"
|
||||
include "MySQL-Source.icc"
|
||||
|
||||
option ProjectOptions = MySQLOptions
|
||||
//, link(defaultlibsname, "readline.lib")
|
||||
{
|
||||
|
||||
option file(genobject, "..\\OBJ\\ZLIB\\")
|
||||
@@ -16,7 +15,7 @@ option ProjectOptions = MySQLOptions
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
source type('cpp') client_pch
|
||||
source type('cpp') client_global_pch
|
||||
}
|
||||
// target source files
|
||||
source zlib
|
||||
@@ -27,6 +26,8 @@ option ProjectOptions = MySQLOptions
|
||||
source type('cpp') my_sys_cli
|
||||
source type('cpp') strings
|
||||
source type('cpp') mysqlclientlib
|
||||
source type('cpp') '..\libmysql\dll.c'
|
||||
source BldLevelInfo
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,51 +38,84 @@ option ProjectOptions = MySQLOptions
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
source type('cpp') client_pch //, 'sql_string.h'
|
||||
source type('cpp') client_global_pch
|
||||
}
|
||||
// target source files
|
||||
//source readline
|
||||
source type('cpp') "..\\client\\mysql.cc"
|
||||
source BldLevelInfo
|
||||
}
|
||||
}
|
||||
|
||||
option file(genobject, "..\\OBJ\\READLINE\\")
|
||||
{
|
||||
target "..\\bin\\mysqladmin.exe"
|
||||
{
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
source type('cpp') client_pch //, 'sql_string.h'
|
||||
source type('cpp') client_global_pch
|
||||
}
|
||||
// target source files
|
||||
source type('cpp') "..\\client\\mysqladmin.c"
|
||||
source BldLevelInfo
|
||||
}
|
||||
}
|
||||
|
||||
target "..\\bin\\mysqldump.exe"
|
||||
{
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
source type('cpp') client_pch
|
||||
source type('cpp') client_global_pch
|
||||
}
|
||||
// target source files
|
||||
source type('cpp') "..\\client\\mysqldump.c"
|
||||
source BldLevelInfo
|
||||
}
|
||||
|
||||
target "..\\bin\\mysqlshow.exe"
|
||||
{
|
||||
// target source files
|
||||
source type('cpp') "..\\client\\mysqlshow.c"
|
||||
source BldLevelInfo
|
||||
}
|
||||
|
||||
target "..\\bin\\mysqlimport.exe"
|
||||
{
|
||||
// target source files
|
||||
source type('cpp') "..\\client\\mysqlimport.c"
|
||||
source BldLevelInfo
|
||||
}
|
||||
|
||||
target "..\\bin\\mysqltest.exe"
|
||||
{
|
||||
source type('cpp') "..\\client\\mysqltest.c"
|
||||
source BldLevelInfo
|
||||
}
|
||||
|
||||
target "..\\bin\\mysqlbinlog.exe"
|
||||
{
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
source type('cpp') client_global_pch
|
||||
}
|
||||
// target source files
|
||||
source type('cpp') "..\\client\\mysqlbinlog.cc"
|
||||
source BldLevelInfo
|
||||
}
|
||||
|
||||
target "..\\bin\\mysqlcheck.exe"
|
||||
{
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
source type('cpp') client_global_pch
|
||||
}
|
||||
|
||||
// target source files
|
||||
source type('cpp') "..\\client\\mysqlcheck.c"
|
||||
source BldLevelInfo
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,29 +2,30 @@
|
||||
debug_build = 0
|
||||
|
||||
// common options
|
||||
option BaseOptions = link(defaultlibsname, "tcpip32.lib")
|
||||
,link(libsearchpath, "..\\lib\\")
|
||||
,link(libsearchpath, "..\\bin\\")
|
||||
,link(pmtype, vio)
|
||||
,link(linkwithmultithreadlib, "yes")
|
||||
,link(linkwithsharedlib, "no")
|
||||
,gen(initauto, "yes")
|
||||
,define("__MT__", )
|
||||
,define("HAVE_BSD_SIGNALS", )
|
||||
,define("INCL_DOS", )
|
||||
,define("INCL_DOSERRORS", )
|
||||
,define("INCL_LONGLONG", )
|
||||
,define("OS2", )
|
||||
,define("USE_TLS", )
|
||||
,lang(signedchars, yes)
|
||||
,incl(searchpath, "..")
|
||||
,incl(searchpath, "..\\include")
|
||||
,incl(searchpath, "..\\my_sys")
|
||||
,incl(searchpath, "..\\regex")
|
||||
,incl(searchpath, "..\\sql")
|
||||
,incl(searchpath, "\\rd\\mysql\\zlib-1.1.3")
|
||||
,incl(searchpath, "\\rd\\mysql\\ufc")
|
||||
,incl(searchpath, "..\\os2")
|
||||
option BaseOptions = link(defaultlibsname, "tcpip32.lib")
|
||||
, link(libsearchpath, "..\\lib\\")
|
||||
, link(libsearchpath, "..\\bin\\")
|
||||
, link(pmtype, vio)
|
||||
, link(padding, no)
|
||||
, link(linkwithmultithreadlib, "yes")
|
||||
, link(linkwithsharedlib, "no")
|
||||
, gen(initauto, "yes")
|
||||
, define("__MT__", )
|
||||
, define("HAVE_BSD_SIGNALS", )
|
||||
, define("INCL_DOS", )
|
||||
, define("INCL_DOSERRORS", )
|
||||
, define("INCL_LONGLONG", )
|
||||
, define("OS2", )
|
||||
, define("USE_TLS", )
|
||||
, lang(signedchars, yes)
|
||||
, incl(searchpath, "..")
|
||||
, incl(searchpath, "..\\include")
|
||||
, incl(searchpath, "..\\my_sys")
|
||||
, incl(searchpath, "..\\regex")
|
||||
, incl(searchpath, "..\\sql")
|
||||
, incl(searchpath, "..\\..\\zlib-1.1.3")
|
||||
, incl(searchpath, "..\\..\\ufc")
|
||||
, incl(searchpath, "..\\os2")
|
||||
|
||||
option ReleaseOptions = link(debug, "no")
|
||||
, define("DBUG_OFF", )
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
group client_pch =
|
||||
group client_global_pch =
|
||||
'os2.h',
|
||||
'assert.h', 'direct.h', 'errno.h', 'nerrno.h',
|
||||
'limits.h', 'io.h', 'math.h',
|
||||
@@ -9,17 +9,46 @@ group client_pch =
|
||||
'my_base.h', 'config-os2.h', 'my_dir.h',
|
||||
'global.h', 'thr_alarm.h', 'm_string.h',
|
||||
'mysql.h', 'zconf.h', 'zlib.h', 'mysys_err.h',
|
||||
//'my_os2dirsrch.h',
|
||||
'm_ctype.h',
|
||||
'mysqld_error.h',
|
||||
'm_ctype.h', 'mysqld_error.h',
|
||||
'my_list.h', 'my_sys.h', 'my_net.h',
|
||||
'myisam.h', 'myisampack.h', '.\myisam\myisamdef.h'
|
||||
'myisam.h', 'myisampack.h', '.\myisam\myisamdef.h',
|
||||
'.\regex\regex.h'
|
||||
|
||||
group server_global_pch =
|
||||
'os2.h',
|
||||
'string.h', 'assert.h', 'share.h', 'stdarg.h', 'stdio.h',
|
||||
'stdlib.h', 'stddef.h', 'math.h', 'io.h', 'limits.h',
|
||||
'process.h', 'errno.h', 'nerrno.h', 'sys/types.h',
|
||||
'sys/time.h', 'sys/stat.h', 'sys/param.h', 'sys/ioccom.h',
|
||||
'sys/filio.h', 'sys/sockio.h', 'sys/ioctlos2.h','sys/ioctl.h', 'types.h',
|
||||
'sys/utime.h', 'sys/select.h', 'sys/un.h',
|
||||
'netinet/in_systm.h', 'netinet/tcp.h',
|
||||
|
||||
'global.h', 'my_base.h', 'config-os2.h',
|
||||
'my_dir.h', 'my_sys.h', 'mysql.h',
|
||||
'my_bitmap.h', 'violite.h', 'mysql_priv.h',
|
||||
'm_string.h', 'm_ctype.h',
|
||||
'myisam.h', 'myisampack.h', '.\myisam\myisamdef.h',
|
||||
'sql_string.h', 'item.h', 'unireg.h',
|
||||
'field.h', 'sql_lex.h', 'sql_list.h',
|
||||
'md5.h', 'sql_acl.h', 'slave.h',
|
||||
'ha_myisam.h', 'procedure.h', 'sql_select.h',
|
||||
'errmsg.h', 't_ctype.h', 'direct.h',
|
||||
'mysys_err.h', 'zconf.h', 'zlib.h',
|
||||
'my_tree.h', '..\mysys\my_static.h', 'netdb.h',
|
||||
'thr_alarm.h', 'heap.h', '..\myisam\fulltext.h',
|
||||
'..\myisam\ftdefs.h', 'myisammrg.h',
|
||||
'.\regex\regex.h'
|
||||
|
||||
group server_pch =
|
||||
'ha_heap.h', 'ha_myisammrg.h', 'opt_ft.h',
|
||||
'hash_filo.h', 'mini_client.h', 'sql_repl.h',
|
||||
'sql_analyse.h', 'item_create.h', '..\mysys\mysys_priv.h'
|
||||
|
||||
group mysqlclientlib =
|
||||
"..\\client\\readline.cc",
|
||||
"..\\client\\sql_string.cc",
|
||||
"..\\client\\completion_hash.cc",
|
||||
//"..\\libmysql\\dll.c",
|
||||
"..\\libmysql\\libmysql.c",
|
||||
"..\\libmysql\\errmsg.c",
|
||||
"..\\libmysql\\get_password.c",
|
||||
@@ -28,17 +57,17 @@ group mysqlclientlib =
|
||||
"..\\libmysql\\violite.c"
|
||||
|
||||
group zlib =
|
||||
"\\rd\\mysql\\zlib-1.1.3\\compress.c", "\\rd\\mysql\\zlib-1.1.3\\crc32.c",
|
||||
"\\rd\\mysql\\zlib-1.1.3\\deflate.c", "\\rd\\mysql\\zlib-1.1.3\\gzio.c", "\\rd\\mysql\\zlib-1.1.3\\infblock.c",
|
||||
"\\rd\\mysql\\zlib-1.1.3\\infcodes.c", "\\rd\\mysql\\zlib-1.1.3\\inffast.c",
|
||||
"\\rd\\mysql\\zlib-1.1.3\\inflate.c", "\\rd\\mysql\\zlib-1.1.3\\inftrees.c",
|
||||
"\\rd\\mysql\\zlib-1.1.3\\infutil.c", "\\rd\\mysql\\zlib-1.1.3\\trees.c", "\\rd\\mysql\\zlib-1.1.3\\uncompr.c",
|
||||
"\\rd\\mysql\\zlib-1.1.3\\zutil.c", "\\rd\\mysql\\zlib-1.1.3\\adler32.c"
|
||||
"..\\..\\zlib-1.1.3\\compress.c", "..\\..\\zlib-1.1.3\\crc32.c",
|
||||
"..\\..\\zlib-1.1.3\\deflate.c", "..\\..\\zlib-1.1.3\\gzio.c", "..\\..\\zlib-1.1.3\\infblock.c",
|
||||
"..\\..\\zlib-1.1.3\\infcodes.c", "..\\..\\zlib-1.1.3\\inffast.c",
|
||||
"..\\..\\zlib-1.1.3\\inflate.c", "..\\..\\zlib-1.1.3\\inftrees.c",
|
||||
"..\\..\\zlib-1.1.3\\infutil.c", "..\\..\\zlib-1.1.3\\trees.c", "..\\..\\zlib-1.1.3\\uncompr.c",
|
||||
"..\\..\\zlib-1.1.3\\zutil.c", "..\\..\\zlib-1.1.3\\adler32.c"
|
||||
|
||||
group ufc =
|
||||
"\\rd\\mysql\\ufc\\crypt.c",
|
||||
"\\rd\\mysql\\ufc\\crypt_util.c",
|
||||
"\\rd\\mysql\\ufc\\crypt-entry.c"
|
||||
"..\\..\\ufc\\crypt.c",
|
||||
"..\\..\\ufc\\crypt_util.c",
|
||||
"..\\..\\ufc\\crypt-entry.c"
|
||||
|
||||
group sql =
|
||||
"..\\sql\\convert.cc",
|
||||
@@ -106,7 +135,7 @@ group sql =
|
||||
"..\\sql\\sql_test.cc",
|
||||
"..\\sql\\sql_update.cc",
|
||||
"..\\sql\\sql_udf.cc",
|
||||
"..\\sql\\sql_yacc.cc",
|
||||
"..\\sql\\sql_yacc.c",
|
||||
"..\\sql\\table.cc",
|
||||
"..\\sql\\thr_malloc.cc",
|
||||
"..\\sql\\time.cc",
|
||||
@@ -140,8 +169,6 @@ group strings =
|
||||
"..\\strings\\ctype-sjis.c",
|
||||
"..\\strings\\ctype-tis620.c",
|
||||
"..\\strings\\ctype-ujis.c",
|
||||
"..\\strings\\ctype_extra_sources.c",
|
||||
"..\\strings\\ctype_autoconf.c",
|
||||
"..\\strings\\ctype.c",
|
||||
"..\\strings\\int2str.c",
|
||||
"..\\strings\\is_prefix.c",
|
||||
@@ -162,6 +189,8 @@ group strings =
|
||||
"..\\strings\\strxmov.c",
|
||||
"..\\strings\\strxnmov.c"
|
||||
|
||||
/*
|
||||
*/
|
||||
|
||||
group heap = "..\\heap\\hp_block.c", "..\\heap\\hp_clear.c",
|
||||
"..\\heap\\hp_close.c", "..\\heap\\hp_create.c", "..\\heap\\hp_delete.c",
|
||||
@@ -242,7 +271,8 @@ group strings =
|
||||
"..\\mysys\\my_thr_init.c", "..\\mysys\\my_vsnprintf.c",
|
||||
"..\\mysys\\my_write.c", "..\\mysys\\ptr_cmp.c",
|
||||
"..\\mysys\\queues.c", "..\\mysys\\raid.cc",
|
||||
"..\\mysys\\safemalloc.c", "..\\mysys\\string.c",
|
||||
//"..\\mysys\\safemalloc.c",
|
||||
"..\\mysys\\string.c",
|
||||
"..\\mysys\\thr_alarm.c",
|
||||
"..\\mysys\\thr_mutex.c", "..\\mysys\\thr_rwlock.c",
|
||||
"..\\mysys\\tree.c", "..\\mysys\\typelib.c"
|
||||
@@ -254,11 +284,13 @@ group strings =
|
||||
"..\\myisam\\ft_search.c", "..\\myisam\\ft_static.c",
|
||||
"..\\myisam\\ft_stopwords.c", "..\\myisam\\ft_update.c",
|
||||
"..\\myisam\\mi_cache.c", "..\\myisam\\mi_changed.c",
|
||||
"..\\myisam\\mi_check.c", "..\\myisam\\mi_checksum.c",
|
||||
//"..\\myisam\\mi_check.c",
|
||||
"..\\myisam\\mi_checksum.c",
|
||||
"..\\myisam\\mi_close.c", "..\\myisam\\mi_create.c",
|
||||
"..\\myisam\\mi_dbug.c", "..\\myisam\\mi_delete.c",
|
||||
"..\\myisam\\mi_delete_all.c", "..\\myisam\\mi_delete_table.c",
|
||||
"..\\myisam\\mi_dynrec.c", "..\\myisam\\mi_extra.c",
|
||||
//"..\\myisam\\mi_error.c",
|
||||
"..\\myisam\\mi_info.c", "..\\myisam\\mi_key.c",
|
||||
"..\\myisam\\mi_locking.c", "..\\myisam\\mi_log.c",
|
||||
"..\\myisam\\mi_open.c", "..\\myisam\\mi_packrec.c",
|
||||
@@ -271,8 +303,8 @@ group strings =
|
||||
"..\\myisam\\mi_rsamepos.c", "..\\myisam\\mi_scan.c",
|
||||
"..\\myisam\\mi_search.c", "..\\myisam\\mi_static.c",
|
||||
"..\\myisam\\mi_statrec.c", "..\\myisam\\mi_unique.c",
|
||||
"..\\myisam\\mi_update.c", "..\\myisam\\mi_write.c",
|
||||
"..\\myisam\\sort.c"
|
||||
"..\\myisam\\mi_update.c", "..\\myisam\\mi_write.c"
|
||||
//"..\\myisam\\sort.c"
|
||||
|
||||
group dbug = "..\\dbug\\dbug.c", "..\\dbug\\factorial.c", "..\\dbug\\sanity.c"
|
||||
|
||||
@@ -293,6 +325,7 @@ group strings =
|
||||
//"..\\readline\\vi_keymap.c",
|
||||
"..\\readline\\vi_mode.c", "..\\readline\\xmalloc.c"
|
||||
|
||||
group regex = "..\\regex\\regcomp.c", "..\\regex\\regerror.c",
|
||||
"..\\regex\\regexec.c", "..\\regex\\regfree.c", "..\\regex\\reginit.c"
|
||||
group regex = "..\\regex\\regcomp.c", "..\\regex\\regerror.c",
|
||||
"..\\regex\\regexec.c", "..\\regex\\regfree.c", "..\\regex\\reginit.c"
|
||||
|
||||
group BldLevelInfo = 'os2\BldLevel.rc'
|
||||
|
||||
@@ -5,6 +5,9 @@ InlineCode = "no"
|
||||
include "MySQL-Opt.icc"
|
||||
include "MySQL-Source.icc"
|
||||
|
||||
run before sources('..\sql\sql_yacc.yy') targets('..\sql\sql_yacc.c')
|
||||
'bison -y -d -o ..\sql\sql_yacc.c ..\sql\sql_yacc.yy'
|
||||
|
||||
option ProjectOptions = MySQLOptions
|
||||
, define( "MYSQL_SERVER", "")
|
||||
{
|
||||
@@ -16,68 +19,9 @@ option ProjectOptions = MySQLOptions
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
//source type('cpp') gpch
|
||||
source type('cpp') 'os2.h'
|
||||
source type('cpp')
|
||||
//'ctype.h',
|
||||
'string.h', 'assert.h', 'share.h', 'stdarg.h', 'stdio.h',
|
||||
'stdlib.h', 'stddef.h', 'math.h', 'io.h', 'limits.h',
|
||||
'process.h', 'errno.h', 'nerrno.h', 'sys/types.h',
|
||||
'sys/time.h', 'sys/stat.h', 'sys/param.h', 'sys/ioccom.h',
|
||||
'sys/filio.h', 'sys/sockio.h', 'sys/ioctlos2.h','sys/ioctl.h', 'types.h'
|
||||
|
||||
source type('cpp')
|
||||
'global.h', 'my_base.h', 'config-os2.h',
|
||||
'my_dir.h', 'my_sys.h', 'mysql.h',
|
||||
'my_bitmap.h', 'violite.h', 'mysql_priv.h',
|
||||
'm_string.h', 'm_ctype.h'
|
||||
|
||||
source type('cpp') 'myisam.h'
|
||||
source type('cpp') 'myisampack.h'
|
||||
source type('cpp') '.\myisam\myisamdef.h'
|
||||
|
||||
source type('cpp') 'sql_string.h'
|
||||
source type('cpp') 'item.h'
|
||||
source type('cpp') 'unireg.h'
|
||||
source type('cpp') 'field.h'
|
||||
source type('cpp') 'sql_lex.h'
|
||||
source type('cpp') 'sql_list.h'
|
||||
source type('cpp') 'md5.h'
|
||||
source type('cpp') 'sql_acl.h'
|
||||
source type('cpp') 'slave.h'
|
||||
source type('cpp') 'ha_myisam.h'
|
||||
source type('cpp') 'procedure.h'
|
||||
source type('cpp') 'sql_select.h'
|
||||
source type('cpp') 'errmsg.h'
|
||||
source type('cpp') 't_ctype.h'
|
||||
source type('cpp') 'direct.h'
|
||||
source type('cpp') 'mysys_err.h'
|
||||
source type('cpp') 'zconf.h'
|
||||
source type('cpp') 'zlib.h'
|
||||
source type('cpp') 'my_tree.h'
|
||||
source type('cpp') '..\mysys\my_static.h'
|
||||
source type('cpp') 'netdb.h'
|
||||
source type('cpp') 'thr_alarm.h'
|
||||
source type('cpp') 'heap.h'
|
||||
source type('cpp') '..\myisam\fulltext.h'
|
||||
source type('cpp') '..\myisam\ftdefs.h'
|
||||
source type('cpp') 'myisammrg.h'
|
||||
|
||||
source type('cpp') server_global_pch
|
||||
}
|
||||
source type('cpp') 'sys/un.h'
|
||||
source type('cpp') 'ha_heap.h'
|
||||
source type('cpp') 'ha_myisammrg.h'
|
||||
source type('cpp') 'opt_ft.h'
|
||||
source type('cpp') 'hash_filo.h'
|
||||
source type('cpp') 'mini_client.h'
|
||||
source type('cpp') 'sql_repl.h'
|
||||
source type('cpp') 'netinet/in_systm.h'
|
||||
source type('cpp') 'netinet/tcp.h'
|
||||
source type('cpp') 'sql_analyse.h'
|
||||
source type('cpp') 'item_create.h'
|
||||
source type('cpp') '..\mysys\mysys_priv.h'
|
||||
source type('cpp') 'sys/utime.h'
|
||||
source type('cpp') 'sys/select.h'
|
||||
source type('cpp') server_pch
|
||||
|
||||
// target source files
|
||||
source "rint.obj"
|
||||
@@ -93,25 +37,10 @@ option ProjectOptions = MySQLOptions
|
||||
source type('cpp') my_sys
|
||||
source type('cpp') my_sys_sql
|
||||
source type('cpp') strings
|
||||
source type('cpp') sql
|
||||
source type('cpp') sql,
|
||||
"..\\myisam\\mi_check.c",
|
||||
"..\\myisam\\sort.c"
|
||||
source BldLevelInfo
|
||||
}
|
||||
}
|
||||
/*
|
||||
option define( "MYSQL_SERVER", "")
|
||||
{
|
||||
target "..\\bin\\mysqlbinlog.exe"
|
||||
{
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
//source type('cpp') client_pch //, 'sql_string.h'
|
||||
}
|
||||
// target source files
|
||||
source type('cpp')
|
||||
"..\\sql\\mysqlbinlog.cc",
|
||||
"..\\sql\\mini_client.cc",
|
||||
"..\\sql\\net_serv.cc"
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -6,20 +6,51 @@ include "MySQL-Opt.icc"
|
||||
include "MySQL-Source.icc"
|
||||
|
||||
option ProjectOptions = MySQLOptions
|
||||
, link(defaultlibsname, "common.lib")
|
||||
, link(defaultlibsname, "myisam.lib")
|
||||
, link(defaultlibsname, "isam.lib")
|
||||
, link(defaultlibsname, "mysql.lib")
|
||||
, link(defaultlibsname, "mysql.lib")
|
||||
{
|
||||
|
||||
option file(genobject, "..\\OBJ\\ZLIB\\")
|
||||
,link(exportAll)
|
||||
{
|
||||
target "..\\bin\\mysqlu.dll"
|
||||
{
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
source type('cpp') client_global_pch
|
||||
}
|
||||
// target source files
|
||||
source zlib, ufc, regex, 'strings\bmove_upp.c'
|
||||
if debug_build {
|
||||
source type('cpp') dbug
|
||||
}
|
||||
source type('cpp') heap
|
||||
source type('cpp') merge
|
||||
source type('cpp') myisam
|
||||
source type('cpp') myisammrg
|
||||
source type('cpp') isam
|
||||
source type('cpp') my_sys
|
||||
source type('cpp') my_sys_cli
|
||||
source type('cpp') my_sys_sql
|
||||
source type('cpp') strings
|
||||
source type('cpp') '..\libmysql\dll.c'
|
||||
source BldLevelInfo
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
target "..\\bin\\myisamchk.exe"
|
||||
{
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
source type('cpp') client_pch
|
||||
source type('cpp') client_global_pch
|
||||
}
|
||||
source type('cpp') "..\\myisam\\myisamchk.c"
|
||||
// target source files
|
||||
source type('cpp') "..\\myisam\\myisamchk.c",
|
||||
"..\\myisam\\mi_check.c",
|
||||
"..\\myisam\\sort.c"
|
||||
source BldLevelInfo
|
||||
}
|
||||
|
||||
target "..\\bin\\myisamlog.exe"
|
||||
@@ -27,11 +58,11 @@ option ProjectOptions = MySQLOptions
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
source type('cpp') client_pch
|
||||
source type('cpp') client_global_pch
|
||||
}
|
||||
|
||||
// target source files
|
||||
source type('cpp') "..\\myisam\\myisamlog.c"
|
||||
source BldLevelInfo
|
||||
}
|
||||
|
||||
target "..\\bin\\myisampack.exe"
|
||||
@@ -39,10 +70,23 @@ option ProjectOptions = MySQLOptions
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
source type('cpp') client_pch
|
||||
source type('cpp') client_global_pch
|
||||
}
|
||||
// target source files
|
||||
source type('cpp') "..\\myisam\\myisampack.c"
|
||||
source BldLevelInfo
|
||||
}
|
||||
|
||||
target "..\\bin\\test\\comp_err.exe"
|
||||
{
|
||||
// target source files
|
||||
source type('cpp') "..\\extra\\comp_err.c"
|
||||
}
|
||||
|
||||
target "..\\bin\\gen_lex_hash.exe"
|
||||
{
|
||||
// target source files
|
||||
source type('cpp') "..\\sql\\gen_lex_hash.cc"
|
||||
}
|
||||
|
||||
target "..\\bin\\test\\is_test1.exe"
|
||||
@@ -75,13 +119,13 @@ option ProjectOptions = MySQLOptions
|
||||
// target source files
|
||||
source type('cpp') "..\\myisam\\ft_test1.c"
|
||||
}
|
||||
|
||||
//target "..\\bin\\test\\testhash.exe"
|
||||
/*
|
||||
target "..\\bin\\test\\testhash.exe"
|
||||
{
|
||||
// target source files
|
||||
//source type('cpp') "..\\mysys\\testhash.c"
|
||||
source type('cpp') "..\\mysys\\testhash.c"
|
||||
}
|
||||
|
||||
*/
|
||||
target "..\\bin\\test\\test_charset.exe"
|
||||
{
|
||||
// target source files
|
||||
@@ -99,6 +143,7 @@ option ProjectOptions = MySQLOptions
|
||||
source type('cpp') "..\\heap\\hp_test2.c"
|
||||
}
|
||||
|
||||
/*
|
||||
option define( "MAIN", "")
|
||||
{
|
||||
target "..\\bin\\test\\thr_lock.exe"
|
||||
@@ -107,13 +152,13 @@ option ProjectOptions = MySQLOptions
|
||||
source type('cpp') "..\\mysys\\thr_lock.c"
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
target "..\\bin\\test\\insert_test.exe"
|
||||
{
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
source type('cpp') client_pch
|
||||
source type('cpp') client_global_pch
|
||||
}
|
||||
source type('cpp') "..\\client\\insert_test.c"
|
||||
}
|
||||
@@ -126,9 +171,12 @@ option ProjectOptions = MySQLOptions
|
||||
// optimized precompiled headers
|
||||
option macros('global', 'yes')
|
||||
{
|
||||
source type('cpp') client_pch
|
||||
source type('cpp') client_global_pch
|
||||
}
|
||||
source type('cpp') "..\\client\\thread_test.c"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
run after sources('..\bin\gen_lex_hash.exe') targets('..\sql\lex_hash.h')
|
||||
'..\bin\gen_lex_has.exe > ..\sql\lex_hash.h'
|
||||
|
||||
177
os2/ReadMe.txt
Normal file
177
os2/ReadMe.txt
Normal file
@@ -0,0 +1,177 @@
|
||||
====================================================
|
||||
|
||||
Contents
|
||||
--------
|
||||
Welcome to the latest port of MySQL for OS/2 and eComStation.
|
||||
|
||||
Modules included in this build:
|
||||
- protocol data compression
|
||||
- transaction support
|
||||
- perl BDB/BDI support (not in this package)
|
||||
- Library and header files for C/CPP developers included
|
||||
|
||||
This package has been built using IBM VAC++ 4.0
|
||||
|
||||
The MySQL server is distributed under the GPL license. Please refer to
|
||||
the file COPYING for the license information.
|
||||
|
||||
The MySQL client library is distributed under the LGPL license.
|
||||
Please refer to the file COPYING for the license information.
|
||||
|
||||
Most of the MySQL clients are distributed under the GPL license, but
|
||||
some files may be in the public domain.
|
||||
|
||||
The latest information about MySQL can be found at: http://www.mysql.com
|
||||
|
||||
To get the latest information about this port please subscribe to our
|
||||
newsgroup/mailinglist mysql2 at www.egroups.com.
|
||||
|
||||
To see what MySQL can do, take a look at the features section in the
|
||||
manual. For future plans see the TODO appendix in the manual.
|
||||
|
||||
New features/bug fixes history is in the news appendix in the manual.
|
||||
|
||||
For the currently known bugs/misfeatures (known errors) see the bugs
|
||||
appendix in the manual. The OS/2 section contains notes that are
|
||||
specific to the MySQL OS/2 and eComStation version.
|
||||
|
||||
Please note that MySQL is a constantly moving target. New builds for
|
||||
Linux are made available every week. This port may therefore be a few
|
||||
minor versions after the latest Linux/Win32 builds but its generally
|
||||
more stable than the "latest and greates" port.
|
||||
|
||||
MySQL is brought to you by: TcX DataKonsult AB & MySQL Finland AB
|
||||
|
||||
This port is brought to you by:
|
||||
|
||||
Yuri Dario <mc6530@mclink.it>, development, porting
|
||||
Timo Maier <tam@gmx.de>, documentation, testing
|
||||
John M Alfredsson <jma@jmast.se>, documentation, testing
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
Prerequisite:
|
||||
|
||||
- OS/2 Warp 3 with FP ?? or later,
|
||||
OS/2 Warp 4 with FP ?? or later,
|
||||
OS/2 Warp Server for e-Business,
|
||||
eComStation 1.0 (prev 1/2 OK)
|
||||
- TCPIP 4.x installed (requires 32-bit tcpip stack)
|
||||
- WarpIN installer 0.9.14 (ftp://ftp.os2.org/xworkplace/warpin-0-9-14.exe)
|
||||
|
||||
Note: probably some fixpak level is required on both Warp3&Warp4 to
|
||||
support >2GB file sizes.
|
||||
|
||||
Save the installation archives into a temporary folder and double click
|
||||
on the main package; otherwise you can drop the mysql package in your
|
||||
WarpIN object or type
|
||||
|
||||
WARPIN MYSQL-3-23-??-BLD1.WPI
|
||||
|
||||
from the command line.
|
||||
The configuration file for MySQL is named my.cnf and it is placed into
|
||||
your %ETC% directory. Usually it located into the boot driver under
|
||||
|
||||
x:\MPTN\ETC
|
||||
|
||||
If the installation detect an existing configuration file, this will be
|
||||
renamed to my.cnf.bak; your current settings aren't migrated to current
|
||||
installation. This file is not deleted by uninstall process.
|
||||
Startup options for MySQL daemon could be added there.
|
||||
|
||||
As default, client connections uses data compression: if you don't like it,
|
||||
remove the following from your %ETC%\my.cnf
|
||||
|
||||
[client]
|
||||
compress
|
||||
|
||||
The server switches automatically compression mode on client request.
|
||||
|
||||
This release comes with DLL client library MYSQL.DLL: it is installed by
|
||||
default into mysql\bin together with client applications. Copy it to your
|
||||
x:\OS2\DLL or another directory in your LIBPATH to run command line
|
||||
utilities from every place.
|
||||
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
Documentation is provided in separate files. You can use either
|
||||
the PDF documentation (requires Adobe Acrobat Reader) or the
|
||||
INF documentation (requires OS/2 view or NewView).
|
||||
|
||||
The PDF documentation is found in
|
||||
|
||||
MYSQL-3-23-42-PDF.WPI
|
||||
|
||||
and the INF documentation is found in
|
||||
|
||||
MYSQL-3-23-28-INF.WPI
|
||||
|
||||
The latest documentation in other formats can always be downloaded from
|
||||
http://www.mysql.com. However this documentation may not fully apply to
|
||||
this port.
|
||||
The INF documentation could contain errors because of semi-automatic
|
||||
translation from texi original. Also it is not updated as the latest PDF
|
||||
manual (sorry, but conversion from texi to ipf requires quite a lot of
|
||||
work).
|
||||
|
||||
|
||||
Support
|
||||
-------
|
||||
Since MySQL is a OpenSource freeware product there are no
|
||||
formal support options available.
|
||||
|
||||
Please subscribe to mysql2 at www.yahoogroups.com to get in contact
|
||||
with other users using this port.
|
||||
|
||||
http://www.yahoogroups.com/group/mysql2
|
||||
|
||||
This newsgroup/mailinglist is the official "home" of this port.
|
||||
|
||||
|
||||
Donations
|
||||
---------
|
||||
Since this software is ported for free, donations are welcome!
|
||||
You can get also an extended support, which is not free and subject to
|
||||
custom rates.
|
||||
Ask in the mailing list for details.
|
||||
|
||||
|
||||
Know problems
|
||||
-------------
|
||||
alter_table.test and show_check are failing, reporting a different status
|
||||
message: actually seems only a different text, no bugs in table checking.
|
||||
|
||||
|
||||
Apache/2 + PHP
|
||||
--------------
|
||||
To avoid problems with different socket when you use PHP and Apache
|
||||
webserver, get the PHP4 module from the Apache Server for OS/2 homepage
|
||||
http://silk.apana.org.au/apache/
|
||||
|
||||
|
||||
Developing MySQL
|
||||
----------------
|
||||
If you want to help us develop MySQL for OS2/eComStation please join
|
||||
the mysql2 mailinglist at www.egroups.com and ask for help to set up
|
||||
your environment!
|
||||
|
||||
All questions that are specific to the OS2/eComStation version should
|
||||
be posted to this list! Please remember to include all relevant
|
||||
information that may help solve your problem.
|
||||
|
||||
Building MySQL (VAC++ 4)
|
||||
------------------------
|
||||
Apply file and patches found in the src\ directory (if exists).
|
||||
Create the following subdirectories
|
||||
|
||||
bin\
|
||||
bin\test
|
||||
lib\
|
||||
obj\
|
||||
obj\zlib
|
||||
|
||||
Build os2\MySQL-Client.icc project first.
|
||||
Then os2\MySQL-Util.icc; last is os2\MySQL-Sql.icc
|
||||
|
||||
15
os2/mysql-inf.wis
Normal file
15
os2/mysql-inf.wis
Normal file
@@ -0,0 +1,15 @@
|
||||
#include "mysql.ih"
|
||||
|
||||
<WARPIN VERSION <$WARPIN_VERSION>>
|
||||
<HEAD>
|
||||
<MSG>
|
||||
This is not an installable archive.
|
||||
|
||||
Please download and install the main archive:
|
||||
|
||||
mysql-<$MySQL-Ver>-bld1.wpi
|
||||
|
||||
</MSG>
|
||||
</HEAD>
|
||||
</WARPIN>
|
||||
|
||||
127
os2/mysql.wis
Normal file
127
os2/mysql.wis
Normal file
@@ -0,0 +1,127 @@
|
||||
#include "mysql.ih"
|
||||
|
||||
<WARPIN VERSION <$WARPIN_VERSION>>
|
||||
<HEAD>
|
||||
|
||||
<PCK INDEX=1
|
||||
PACKAGEID="TCX Datakonsult AB\MySQL for OS/2\SQL Database Engine\<$MySQL\Ver>"
|
||||
TARGET="?:\usr\local\mysql" BASE
|
||||
TITLE="SQL Database Engine"
|
||||
EXECUTE="$(1)\bootstrap.cmd [bootstrap]"
|
||||
CONFIG.SYS="SET EMXOPT=-h1024 | UNIQUE(-h)"
|
||||
CREATEOBJECT="WPFolder|MySQL <$MySQL.Ver>|<WP_DESKTOP>|OBJECTID=<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_FOLDER>"
|
||||
CREATEOBJECT="WPProgram|Console|<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_FOLDER>|EXENAME=$(1)\bin\mysql.exe;STARTUPDIR=$(1)\bin;ICONFILE=$(1)\bin\icons\mysql-client.ico;OBJECTID=<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_CONSOLE>;"
|
||||
CREATEOBJECT="WPProgram|Start server|<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_FOLDER>|EXENAME=$(1)\bin\mysqld.exe;ICONFILE=$(1)\bin\icons\mysql-startserver.ico;OBJECTID=<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_START>;"
|
||||
CREATEOBJECT="WPProgram|Shutdown server|<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_FOLDER>|EXENAME=$(1)\bin\mysqladmin.exe;STARTUPDIR=$(1)\bin;PARAMETERS=-u root shutdown;ICONFILE=$(1)\bin\icons\mysql-shutdownserver.ico;OBJECTID=<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_SHUTDOWN>;"
|
||||
CREATEOBJECT="WPProgram|Readme first|<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_FOLDER>|EXENAME=e.exe;PARAMETERS=$(1)\ReadMe.txt;OBJECTID=<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_README>;"
|
||||
SELECT
|
||||
>This package will install MySQL for OS/2 SQL engine
|
||||
</PCK>
|
||||
|
||||
<PCK INDEX=2
|
||||
PACKAGEID="TCX Datakonsult AB\MySQL for OS/2\Developement Kit\<$MySQL\Ver>"
|
||||
TARGET="?:\usr\local\mysql"
|
||||
TITLE="Developement Kit"
|
||||
SELECT
|
||||
>This package will install MySQL for OS/2 sdk
|
||||
</PCK>
|
||||
|
||||
<PCK INDEX=3
|
||||
PACKAGEID="TCX Datakonsult AB\MySQL for OS/2\PDF manual\<$MySQL\Ver>"
|
||||
TARGET="?:\usr\local\mysql"
|
||||
TITLE="PDF manual"
|
||||
EXTERNAL="mysql-<$MySQL-Ver>-pdf.wpi"
|
||||
CREATEOBJECT="WPShadow|PDF Manual|<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_FOLDER>|SHADOWID=$(1)\docs\manual.pdf"
|
||||
SELECT
|
||||
>This package will install MySQL for OS/2 documentation
|
||||
</PCK>
|
||||
|
||||
<PCK INDEX=4
|
||||
PACKAGEID="TCX Datakonsult AB\MySQL for OS/2\INF manual\3\23\28"
|
||||
TARGET="?:\usr\local\mysql"
|
||||
TITLE="INF manual"
|
||||
EXTERNAL="mysql-3-23-28-gamma-inf.wpi"
|
||||
CREATEOBJECT="WPProgram|MySQL Manual|<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_FOLDER>|EXENAME=view.exe;PARAMETERS=$(1)\docs\manual.inf;ICONFILE=$(1)\bin\icons\mysql-manual.ico;OBJECTID=<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_INFMANUAL>;"
|
||||
SELECT
|
||||
>This package will install MySQL for OS/2 documentation
|
||||
</PCK>
|
||||
|
||||
<PCK INDEX=5
|
||||
PACKAGEID="TCX Datakonsult AB\MySQL for OS/2\Test suite\<$MySQL\Ver>"
|
||||
TARGET="?:\usr\local\mysql"
|
||||
TITLE="Test suite"
|
||||
EXTERNAL="mysql-<$MySQL-Ver>-test.wpi"
|
||||
CREATEOBJECT="WPProgram|Run MySQL Test Suite|<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_FOLDER>|EXENAME=$(5)\mysql-test\mysql-test.cmd;PARAMETERS=$(1)\docs\manual.inf;ICONFILE=$(1)\bin\icons\mysql-manual.ico;OBJECTID=<MYSQL_<$MySQL.Major>_<$MySQL.Minor>_TESTSUITE>;"
|
||||
SELECT
|
||||
>This package will install MySQL for OS/2 test suite
|
||||
</PCK>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<!-- Here come the different pages. They are linked by
|
||||
the <NEXTBUTTON> tags, which must have a target.
|
||||
Each page must have a TYPE= attribute, which tells
|
||||
WarpIn what will be visible on that page. -->
|
||||
|
||||
<BODY>
|
||||
|
||||
<!-- page1: introduction ->>
|
||||
<PAGE INDEX=1 TYPE=README>
|
||||
<TEXT>
|
||||
</TEXT>
|
||||
<NEXTBUTTON TARGET=2>~Next</NEXTBUTTON>
|
||||
<README FORMAT=HTML>
|
||||
|
||||
<P>Welcome to the latest port of <B>MySQL for OS/2 and eComStation</B>.
|
||||
<BR>
|
||||
<P>You are about to install <B>MySQL <$MySQL.Ver></B>
|
||||
|
||||
<BR>
|
||||
<BR>
|
||||
<P>Select "Next" to continue.
|
||||
|
||||
<P>Select "Cancel" to abort installation.
|
||||
</README>
|
||||
</PAGE>
|
||||
|
||||
<!-- show ReadMe.txt -->
|
||||
<PAGE INDEX=2 TYPE=README>
|
||||
<NEXTBUTTON TARGET=3>~Next</NEXTBUTTON>
|
||||
<TEXT>
|
||||
</TEXT>
|
||||
<README FORMAT=PLAIN EXTRACTFROMPCK="1">ReadMe.txt</README>
|
||||
</PAGE>
|
||||
|
||||
<!-- show GPL license -->
|
||||
<PAGE INDEX=3 TYPE=README>
|
||||
<NEXTBUTTON TARGET=4>~I agree</NEXTBUTTON>
|
||||
<TEXT>
|
||||
By pressing the "I agree" button, you agree to all terms and conditions to the below licence agreement.
|
||||
</TEXT>
|
||||
<README FORMAT=HTML EXTRACTFROMPCK="1">license.htm</README>
|
||||
</PAGE>
|
||||
|
||||
|
||||
<!-- The TYPE=CONTAINER will list the packages which can be installed. -->
|
||||
|
||||
<PAGE INDEX=4 TYPE=CONTAINER>
|
||||
<NEXTBUTTON TARGET=5>~Next</NEXTBUTTON>
|
||||
<TEXT>
|
||||
Please select the packages which are to be installed. You may change the target paths for the packages.
|
||||
</TEXT>
|
||||
</PAGE>
|
||||
|
||||
<!-- Here's another TYPE=TEXT page before we install.
|
||||
The special target "0" indicates that after this page we
|
||||
should start installation.
|
||||
Note that the TYPE=INSTALL page (which we had in Alpha #3)
|
||||
is no longer supported. -->
|
||||
|
||||
<PAGE INDEX=5 TYPE=TEXT>
|
||||
<NEXTBUTTON TARGET=0>I~nstall</NEXTBUTTON>
|
||||
<TEXT>
|
||||
Press "Install" to begin installing this archive.</TEXT>
|
||||
</PAGE>
|
||||
|
||||
</BODY>
|
||||
</WARPIN>
|
||||
15
os2/mysqlalt.wis
Normal file
15
os2/mysqlalt.wis
Normal file
@@ -0,0 +1,15 @@
|
||||
#include "mysql.ih"
|
||||
|
||||
<WARPIN VERSION <$WARPIN_VERSION>>
|
||||
<HEAD>
|
||||
<MSG>
|
||||
This is not an installable archive.
|
||||
|
||||
Please download and install the main archive:
|
||||
|
||||
mysql-<$MySQL-Ver>-bld1.wpi
|
||||
|
||||
</MSG>
|
||||
</HEAD>
|
||||
</WARPIN>
|
||||
|
||||
@@ -1220,7 +1220,7 @@ the thread stack. Please read http://www.mysql.com/doc/L/i/Linux.html\n\n",
|
||||
Some pointers may be invalid and cause the dump to abort...\n");
|
||||
safe_print_str("thd->query", thd->query, 1024);
|
||||
fprintf(stderr, "thd->thread_id=%ld\n", thd->thread_id);
|
||||
fprintf(stderr, "\n
|
||||
fprintf(stderr, "\n\
|
||||
Successfully dumped variables, if you ran with --log, take a look at the\n\
|
||||
details of what thread %ld did to cause the crash. In some cases of really\n\
|
||||
bad corruption, the values shown above may be invalid\n\n",
|
||||
@@ -2721,6 +2721,8 @@ static struct option long_options[] = {
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
#define LONG_TIMEOUT ((ulong) 3600L*24L*365L)
|
||||
|
||||
CHANGEABLE_VAR changeable_vars[] = {
|
||||
{ "back_log", (long*) &back_log,
|
||||
50, 1, 65535, 0, 1 },
|
||||
@@ -2738,15 +2740,15 @@ CHANGEABLE_VAR changeable_vars[] = {
|
||||
{ "binlog_cache_size", (long*) &binlog_cache_size,
|
||||
32*1024L, IO_SIZE, ~0L, 0, IO_SIZE },
|
||||
{ "connect_timeout", (long*) &connect_timeout,
|
||||
CONNECT_TIMEOUT, 2, 65535, 0, 1 },
|
||||
CONNECT_TIMEOUT, 2, LONG_TIMEOUT, 0, 1 },
|
||||
{ "delayed_insert_timeout", (long*) &delayed_insert_timeout,
|
||||
DELAYED_WAIT_TIMEOUT, 1, ~0L, 0, 1 },
|
||||
DELAYED_WAIT_TIMEOUT, 1, LONG_TIMEOUT, 0, 1 },
|
||||
{ "delayed_insert_limit", (long*) &delayed_insert_limit,
|
||||
DELAYED_LIMIT, 1, ~0L, 0, 1 },
|
||||
{ "delayed_queue_size", (long*) &delayed_queue_size,
|
||||
DELAYED_QUEUE_SIZE, 1, ~0L, 0, 1 },
|
||||
{ "flush_time", (long*) &flush_time,
|
||||
FLUSH_TIME, 0, ~0L, 0, 1 },
|
||||
FLUSH_TIME, 0, LONG_TIMEOUT, 0, 1 },
|
||||
#ifdef HAVE_GEMINI_DB
|
||||
{ "gemini_buffer_cache", (long*) &gemini_buffer_cache,
|
||||
128 * 8192, 16, LONG_MAX, 0, 1 },
|
||||
@@ -2791,13 +2793,13 @@ CHANGEABLE_VAR changeable_vars[] = {
|
||||
(long*) &innobase_force_recovery, 0, 0, 6, 0, 1},
|
||||
#endif
|
||||
{ "interactive_timeout", (long*) &net_interactive_timeout,
|
||||
NET_WAIT_TIMEOUT, 1, 31*24*60*60, 0, 1 },
|
||||
NET_WAIT_TIMEOUT, 1, LONG_TIMEOUT, 0, 1 },
|
||||
{ "join_buffer_size", (long*) &join_buff_size,
|
||||
128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, ~0L, MALLOC_OVERHEAD, IO_SIZE },
|
||||
{ "key_buffer_size", (long*) &keybuff_size,
|
||||
KEY_CACHE_SIZE, MALLOC_OVERHEAD, (long) ~0, MALLOC_OVERHEAD, IO_SIZE },
|
||||
{ "long_query_time", (long*) &long_query_time,
|
||||
10, 1, ~0L, 0, 1 },
|
||||
10, 1, LONG_TIMEOUT, 0, 1 },
|
||||
{ "lower_case_table_names", (long*) &lower_case_table_names,
|
||||
IF_WIN(1,0), 0, 1, 0, 1 },
|
||||
{ "max_allowed_packet", (long*) &max_allowed_packet,
|
||||
@@ -2836,9 +2838,9 @@ CHANGEABLE_VAR changeable_vars[] = {
|
||||
{ "net_retry_count", (long*) &mysqld_net_retry_count,
|
||||
MYSQLD_NET_RETRY_COUNT, 1, ~0L, 0, 1 },
|
||||
{ "net_read_timeout", (long*) &net_read_timeout,
|
||||
NET_READ_TIMEOUT, 1, 65535, 0, 1 },
|
||||
NET_READ_TIMEOUT, 1, LONG_TIMEOUT, 0, 1 },
|
||||
{ "net_write_timeout", (long*) &net_write_timeout,
|
||||
NET_WRITE_TIMEOUT, 1, 65535, 0, 1 },
|
||||
NET_WRITE_TIMEOUT, 1, LONG_TIMEOUT, 0, 1 },
|
||||
{ "open_files_limit", (long*) &open_files_limit,
|
||||
0, 0, 65535, 0, 1},
|
||||
{ "query_buffer_size", (long*) &query_buff_size,
|
||||
@@ -2848,9 +2850,9 @@ CHANGEABLE_VAR changeable_vars[] = {
|
||||
{ "record_rnd_buffer", (long*) &record_rnd_cache_size,
|
||||
0, IO_SIZE*2+MALLOC_OVERHEAD, ~0L, MALLOC_OVERHEAD, IO_SIZE },
|
||||
{ "slave_net_timeout", (long*) &slave_net_timeout,
|
||||
SLAVE_NET_TIMEOUT, 1, 65535, 0, 1 },
|
||||
SLAVE_NET_TIMEOUT, 1, LONG_TIMEOUT, 0, 1 },
|
||||
{ "slow_launch_time", (long*) &slow_launch_time,
|
||||
2L, 0L, ~0L, 0, 1 },
|
||||
2L, 0L, LONG_TIMEOUT, 0, 1 },
|
||||
{ "sort_buffer", (long*) &sortbuff_size,
|
||||
MAX_SORT_MEMORY, MIN_SORT_MEMORY+MALLOC_OVERHEAD*2, ~0L, MALLOC_OVERHEAD, 1 },
|
||||
{ "table_cache", (long*) &table_cache_size,
|
||||
@@ -2864,7 +2866,7 @@ CHANGEABLE_VAR changeable_vars[] = {
|
||||
{ "thread_stack", (long*) &thread_stack,
|
||||
DEFAULT_THREAD_STACK, 1024*32, ~0L, 0, 1024 },
|
||||
{ "wait_timeout", (long*) &net_wait_timeout,
|
||||
NET_WAIT_TIMEOUT, 1, ~0L, 0, 1 },
|
||||
NET_WAIT_TIMEOUT, 1, LONG_TIMEOUT, 0, 1 },
|
||||
{ NullS, (long*) 0, 0, 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
||||
447
sql/nt_servc.cc
447
sql/nt_servc.cc
@@ -53,11 +53,12 @@ NTService::NTService()
|
||||
-------------------------------------------------------------------------- */
|
||||
NTService::~NTService()
|
||||
{
|
||||
if(ServiceName != NULL) delete[] ServiceName;
|
||||
if (ServiceName != NULL) delete[] ServiceName;
|
||||
}
|
||||
/* ------------------------------------------------------------------------
|
||||
|
||||
-------------------------------------------------------------------------- */
|
||||
|
||||
BOOL NTService::GetOS()
|
||||
{
|
||||
bOsNT = FALSE;
|
||||
@@ -71,12 +72,14 @@ BOOL NTService::GetOS()
|
||||
return bOsNT;
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
Init() Registers the main service thread with the service manager
|
||||
|
||||
ServiceThread - pointer to the main programs entry function
|
||||
when the service is started
|
||||
-------------------------------------------------------------------------- */
|
||||
|
||||
long NTService::Init(LPCSTR szInternName,void *ServiceThread)
|
||||
{
|
||||
|
||||
@@ -94,6 +97,8 @@ long NTService::Init(LPCSTR szInternName,void *ServiceThread)
|
||||
|
||||
return StartServiceCtrlDispatcher(stb); //register with the Service Manager
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
Install() - Installs the service with Service manager
|
||||
nError values:
|
||||
@@ -101,9 +106,13 @@ long NTService::Init(LPCSTR szInternName,void *ServiceThread)
|
||||
1 Can't open the Service manager
|
||||
2 Failed to create service
|
||||
-------------------------------------------------------------------------- */
|
||||
BOOL NTService::Install(int startType, LPCSTR szInternName,LPCSTR szDisplayName,
|
||||
LPCSTR szFullPath, LPCSTR szAccountName,LPCSTR szPassword)
|
||||
|
||||
BOOL NTService::Install(int startType, LPCSTR szInternName,
|
||||
LPCSTR szDisplayName,
|
||||
LPCSTR szFullPath, LPCSTR szAccountName,
|
||||
LPCSTR szPassword)
|
||||
{
|
||||
BOOL ret_val=FALSE;
|
||||
SC_HANDLE newService, scm;
|
||||
|
||||
if (!SeekStatus(szInternName,1))
|
||||
@@ -112,49 +121,40 @@ BOOL NTService::Install(int startType, LPCSTR szInternName,LPCSTR szDisplayName,
|
||||
char szFilePath[_MAX_PATH];
|
||||
GetModuleFileName(NULL, szFilePath, sizeof(szFilePath));
|
||||
|
||||
|
||||
// open a connection to the SCM
|
||||
scm = OpenSCManager(0, 0,SC_MANAGER_CREATE_SERVICE);
|
||||
|
||||
if (!scm)
|
||||
if (!(scm = OpenSCManager(0, 0,SC_MANAGER_CREATE_SERVICE)))
|
||||
printf("Failed to install the service (Couldn't open the SCM)\n");
|
||||
else // Install the new service
|
||||
{
|
||||
printf("Failed to install the service\n"
|
||||
"Problems to open the SCM");
|
||||
CloseServiceHandle(scm);
|
||||
return FALSE;
|
||||
}
|
||||
else // Install the new service
|
||||
{ newService = CreateService(
|
||||
scm,
|
||||
szInternName,
|
||||
szDisplayName,
|
||||
dwDesiredAccess, //default: SERVICE_ALL_ACCESS
|
||||
dwServiceType, //default: SERVICE_WIN32_OWN_PROCESS
|
||||
(startType == 1 ? SERVICE_AUTO_START : SERVICE_DEMAND_START), //default: SERVICE_AUTOSTART
|
||||
dwErrorControl, //default: SERVICE_ERROR_NORMAL
|
||||
szFullPath, //exec full path
|
||||
szLoadOrderGroup, //default: NULL
|
||||
lpdwTagID, //default: NULL
|
||||
szDependencies, //default: NULL
|
||||
szAccountName, //default: NULL
|
||||
szPassword); //default: NULL
|
||||
|
||||
if (!newService)
|
||||
{
|
||||
printf("Failed to install the service.\n"
|
||||
"Problems to create the service.");
|
||||
CloseServiceHandle(scm);
|
||||
CloseServiceHandle(newService);
|
||||
return FALSE;
|
||||
}
|
||||
if (!(newService=
|
||||
CreateService(scm,
|
||||
szInternName,
|
||||
szDisplayName,
|
||||
dwDesiredAccess,//default: SERVICE_ALL_ACCESS
|
||||
dwServiceType, //default: SERVICE_WIN32_OWN_PROCESS
|
||||
//default: SERVICE_AUTOSTART
|
||||
(startType == 1 ? SERVICE_AUTO_START :
|
||||
SERVICE_DEMAND_START),
|
||||
dwErrorControl, //default: SERVICE_ERROR_NORMAL
|
||||
szFullPath, //exec full path
|
||||
szLoadOrderGroup, //default: NULL
|
||||
lpdwTagID, //default: NULL
|
||||
szDependencies, //default: NULL
|
||||
szAccountName, //default: NULL
|
||||
szPassword))) //default: NULL
|
||||
printf("Failed to install the service (Couldn't create service)\n");
|
||||
else
|
||||
printf("Service successfully installed.\n");
|
||||
}
|
||||
CloseServiceHandle(scm);
|
||||
CloseServiceHandle(newService);
|
||||
return TRUE;
|
||||
|
||||
{
|
||||
printf("Service successfully installed.\n");
|
||||
CloseServiceHandle(newService);
|
||||
ret_val=TRUE; // Everything went ok
|
||||
}
|
||||
CloseServiceHandle(scm);
|
||||
}
|
||||
return ret_val;
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
Remove() - Removes the service
|
||||
nError values:
|
||||
@@ -163,9 +163,10 @@ BOOL NTService::Install(int startType, LPCSTR szInternName,LPCSTR szDisplayName,
|
||||
2 Failed to locate service
|
||||
3 Failed to delete service
|
||||
-------------------------------------------------------------------------- */
|
||||
|
||||
BOOL NTService::Remove(LPCSTR szInternName)
|
||||
{
|
||||
|
||||
BOOL ret_value=FALSE;
|
||||
SC_HANDLE service, scm;
|
||||
|
||||
if (!SeekStatus(szInternName,0))
|
||||
@@ -174,44 +175,28 @@ BOOL NTService::Remove(LPCSTR szInternName)
|
||||
nError=0;
|
||||
|
||||
// open a connection to the SCM
|
||||
scm = OpenSCManager(0, 0,SC_MANAGER_CREATE_SERVICE);
|
||||
|
||||
if (!scm)
|
||||
if (!(scm = OpenSCManager(0, 0,SC_MANAGER_CREATE_SERVICE)))
|
||||
{
|
||||
printf("Failed to remove the service\n"
|
||||
"Problems to open the SCM");
|
||||
CloseServiceHandle(scm);
|
||||
return FALSE;
|
||||
printf("Failed to remove the service (Couldn't open the SCM)\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
//open the service
|
||||
service = OpenService(scm,szInternName, DELETE );
|
||||
if(service)
|
||||
if ((service = OpenService(scm,szInternName, DELETE)))
|
||||
{
|
||||
if(!DeleteService(service))
|
||||
{
|
||||
if (!DeleteService(service))
|
||||
printf("Failed to remove the service\n");
|
||||
CloseServiceHandle(service);
|
||||
CloseServiceHandle(scm);
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Service successfully removed.\n");
|
||||
ret_value=TRUE; // everything went ok
|
||||
}
|
||||
CloseServiceHandle(service);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Failed to remove the service\n");
|
||||
printf("Problems to open the service\n");
|
||||
CloseServiceHandle(service);
|
||||
CloseServiceHandle(scm);
|
||||
return FALSE;
|
||||
}
|
||||
printf("Failed to remove the service (Couldn't open the service)\n");
|
||||
CloseServiceHandle(scm);
|
||||
}
|
||||
|
||||
CloseServiceHandle(service);
|
||||
CloseServiceHandle(scm);
|
||||
return TRUE;
|
||||
return ret_value;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
@@ -229,80 +214,66 @@ void NTService::Stop(void)
|
||||
ServiceMain() - This is the function that is called from the
|
||||
service manager to start the service
|
||||
-------------------------------------------------------------------------- */
|
||||
|
||||
void NTService::ServiceMain(DWORD argc, LPTSTR *argv)
|
||||
{
|
||||
|
||||
// registration function
|
||||
pService->hServiceStatusHandle =
|
||||
RegisterServiceCtrlHandler(pService->ServiceName,
|
||||
(LPHANDLER_FUNCTION )NTService::ServiceCtrlHandler);
|
||||
|
||||
if(!pService->hServiceStatusHandle)
|
||||
{
|
||||
pService->Exit(GetLastError());
|
||||
return;
|
||||
}
|
||||
if (!(pService->hServiceStatusHandle =
|
||||
RegisterServiceCtrlHandler(pService->ServiceName,
|
||||
(LPHANDLER_FUNCTION)
|
||||
NTService::ServiceCtrlHandler)))
|
||||
goto error;
|
||||
|
||||
// notify SCM of progress
|
||||
if(!pService->SetStatus(SERVICE_START_PENDING,NO_ERROR, 0, 1, 8000))
|
||||
{
|
||||
pService->Exit(GetLastError());
|
||||
return;
|
||||
}
|
||||
if (!pService->SetStatus(SERVICE_START_PENDING,NO_ERROR, 0, 1, 8000))
|
||||
goto error;
|
||||
|
||||
// create the exit event
|
||||
pService->hExitEvent = CreateEvent (0, TRUE, FALSE,0);
|
||||
if(!pService->hExitEvent)
|
||||
{
|
||||
pService->Exit(GetLastError());
|
||||
return;
|
||||
}
|
||||
if (!(pService->hExitEvent = CreateEvent (0, TRUE, FALSE,0)))
|
||||
goto error;
|
||||
|
||||
if(!pService->SetStatus(SERVICE_START_PENDING,NO_ERROR, 0, 3, pService->nStartTimeOut))
|
||||
{
|
||||
pService->Exit(GetLastError());
|
||||
return;
|
||||
}
|
||||
if (!pService->SetStatus(SERVICE_START_PENDING,NO_ERROR, 0, 3,
|
||||
pService->nStartTimeOut))
|
||||
goto error;
|
||||
|
||||
// save start arguments
|
||||
pService->my_argc=argc;
|
||||
pService->my_argv=argv;
|
||||
|
||||
// start the service
|
||||
if(!pService->StartService())
|
||||
{
|
||||
pService->Exit(GetLastError());
|
||||
return;
|
||||
}
|
||||
if (!pService->StartService())
|
||||
goto error;
|
||||
|
||||
// the service is now running.
|
||||
if(!pService->SetStatus(SERVICE_RUNNING,NO_ERROR, 0, 0, 0))
|
||||
{
|
||||
pService->Exit(GetLastError());
|
||||
return;
|
||||
}
|
||||
// Check that the service is now running.
|
||||
if (!pService->SetStatus(SERVICE_RUNNING,NO_ERROR, 0, 0, 0))
|
||||
goto error;
|
||||
|
||||
// wait for exit event
|
||||
WaitForSingleObject (pService->hExitEvent, INFINITE);
|
||||
|
||||
// wait for thread to exit
|
||||
if (WaitForSingleObject (pService->hThreadHandle, 1000)==WAIT_TIMEOUT)
|
||||
if (WaitForSingleObject (pService->hThreadHandle, 1000) == WAIT_TIMEOUT)
|
||||
CloseHandle(pService->hThreadHandle);
|
||||
|
||||
pService->Exit(0);
|
||||
return;
|
||||
|
||||
error:
|
||||
pService->Exit(GetLastError());
|
||||
return;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
StartService() - starts the appliaction thread
|
||||
-------------------------------------------------------------------------- */
|
||||
|
||||
BOOL NTService::StartService()
|
||||
{
|
||||
|
||||
// Start the real service's thread (application)
|
||||
hThreadHandle = (HANDLE) _beginthread((THREAD_FC)fpServiceThread,0,(void *)this);
|
||||
|
||||
if (hThreadHandle==0) return FALSE;
|
||||
|
||||
if (!(hThreadHandle = (HANDLE) _beginthread((THREAD_FC)fpServiceThread,0,
|
||||
(void *) this)))
|
||||
return FALSE;
|
||||
bRunning = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
@@ -314,7 +285,7 @@ void NTService::StopService()
|
||||
bRunning=FALSE;
|
||||
|
||||
// Set the event for application
|
||||
if(hShutdownEvent)
|
||||
if (hShutdownEvent)
|
||||
SetEvent(hShutdownEvent);
|
||||
|
||||
// Set the event for ServiceMain
|
||||
@@ -325,113 +296,119 @@ void NTService::StopService()
|
||||
-------------------------------------------------------------------------- */
|
||||
void NTService::PauseService()
|
||||
{
|
||||
bPause = TRUE;
|
||||
SuspendThread(hThreadHandle);
|
||||
bPause = TRUE;
|
||||
SuspendThread(hThreadHandle);
|
||||
}
|
||||
/* ------------------------------------------------------------------------
|
||||
|
||||
-------------------------------------------------------------------------- */
|
||||
void NTService::ResumeService()
|
||||
{
|
||||
bPause=FALSE;
|
||||
ResumeThread(hThreadHandle);
|
||||
bPause=FALSE;
|
||||
ResumeThread(hThreadHandle);
|
||||
}
|
||||
/* ------------------------------------------------------------------------
|
||||
|
||||
-------------------------------------------------------------------------- */
|
||||
BOOL NTService::SetStatus (DWORD dwCurrentState,DWORD dwWin32ExitCode,
|
||||
DWORD dwServiceSpecificExitCode,DWORD dwCheckPoint,DWORD dwWaitHint)
|
||||
DWORD dwServiceSpecificExitCode, DWORD dwCheckPoint,
|
||||
DWORD dwWaitHint)
|
||||
{
|
||||
BOOL bRet;
|
||||
SERVICE_STATUS serviceStatus;
|
||||
|
||||
dwState=dwCurrentState;
|
||||
dwState=dwCurrentState;
|
||||
|
||||
serviceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
|
||||
serviceStatus.dwCurrentState = dwCurrentState;
|
||||
serviceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
|
||||
serviceStatus.dwCurrentState = dwCurrentState;
|
||||
|
||||
if (dwCurrentState == SERVICE_START_PENDING)
|
||||
serviceStatus.dwControlsAccepted = 0; //don't accept conrol events
|
||||
else
|
||||
serviceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP |
|
||||
SERVICE_ACCEPT_PAUSE_CONTINUE | SERVICE_ACCEPT_SHUTDOWN;
|
||||
if (dwCurrentState == SERVICE_START_PENDING)
|
||||
serviceStatus.dwControlsAccepted = 0; //don't accept control events
|
||||
else
|
||||
serviceStatus.dwControlsAccepted = (SERVICE_ACCEPT_STOP |
|
||||
SERVICE_ACCEPT_PAUSE_CONTINUE |
|
||||
SERVICE_ACCEPT_SHUTDOWN);
|
||||
|
||||
// if a specific exit code is defined,set up the win32 exit code properly
|
||||
if (dwServiceSpecificExitCode == 0)
|
||||
serviceStatus.dwWin32ExitCode = dwWin32ExitCode;
|
||||
else
|
||||
serviceStatus.dwWin32ExitCode = ERROR_SERVICE_SPECIFIC_ERROR;
|
||||
// if a specific exit code is defined,set up the win32 exit code properly
|
||||
if (dwServiceSpecificExitCode == 0)
|
||||
serviceStatus.dwWin32ExitCode = dwWin32ExitCode;
|
||||
else
|
||||
serviceStatus.dwWin32ExitCode = ERROR_SERVICE_SPECIFIC_ERROR;
|
||||
|
||||
serviceStatus.dwServiceSpecificExitCode = dwServiceSpecificExitCode;
|
||||
serviceStatus.dwServiceSpecificExitCode = dwServiceSpecificExitCode;
|
||||
|
||||
serviceStatus.dwCheckPoint = dwCheckPoint;
|
||||
serviceStatus.dwWaitHint = dwWaitHint;
|
||||
serviceStatus.dwCheckPoint = dwCheckPoint;
|
||||
serviceStatus.dwWaitHint = dwWaitHint;
|
||||
|
||||
// Pass the status to the Service Manager
|
||||
bRet=SetServiceStatus (hServiceStatusHandle, &serviceStatus);
|
||||
// Pass the status to the Service Manager
|
||||
if (!(bRet=SetServiceStatus (hServiceStatusHandle, &serviceStatus)))
|
||||
StopService();
|
||||
|
||||
if(!bRet) StopService();
|
||||
|
||||
return bRet;
|
||||
return bRet;
|
||||
}
|
||||
/* ------------------------------------------------------------------------
|
||||
|
||||
-------------------------------------------------------------------------- */
|
||||
void NTService::ServiceCtrlHandler(DWORD ctrlCode)
|
||||
{
|
||||
DWORD dwState;
|
||||
|
||||
DWORD dwState = 0;
|
||||
|
||||
if(!pService) return;
|
||||
if (!pService)
|
||||
return;
|
||||
|
||||
dwState=pService->dwState; // get current state
|
||||
|
||||
switch(ctrlCode)
|
||||
{
|
||||
switch(ctrlCode) {
|
||||
|
||||
/*********** do we need this ? *******************************
|
||||
case SERVICE_CONTROL_PAUSE:
|
||||
if (pService->bRunning && ! pService->bPause)
|
||||
{
|
||||
dwState = SERVICE_PAUSED;
|
||||
pService->SetStatus(SERVICE_PAUSE_PENDING,NO_ERROR, 0, 1, pService->nPauseTimeOut);
|
||||
pService->PauseService();
|
||||
}
|
||||
break;
|
||||
#ifdef NOT_USED /* do we need this ? */
|
||||
case SERVICE_CONTROL_PAUSE:
|
||||
if (pService->bRunning && ! pService->bPause)
|
||||
{
|
||||
dwState = SERVICE_PAUSED;
|
||||
pService->SetStatus(SERVICE_PAUSE_PENDING,NO_ERROR, 0, 1,
|
||||
pService->nPauseTimeOut);
|
||||
pService->PauseService();
|
||||
}
|
||||
break;
|
||||
|
||||
case SERVICE_CONTROL_CONTINUE:
|
||||
if (pService->bRunning && pService->bPause)
|
||||
{
|
||||
dwState = SERVICE_RUNNING;
|
||||
pService->SetStatus(SERVICE_CONTINUE_PENDING,NO_ERROR, 0, 1, pService->nResumeTimeOut);
|
||||
pService->ResumeService();
|
||||
}
|
||||
break;
|
||||
****************************************************************/
|
||||
case SERVICE_CONTROL_CONTINUE:
|
||||
if (pService->bRunning && pService->bPause)
|
||||
{
|
||||
dwState = SERVICE_RUNNING;
|
||||
pService->SetStatus(SERVICE_CONTINUE_PENDING,NO_ERROR, 0, 1,
|
||||
pService->nResumeTimeOut);
|
||||
pService->ResumeService();
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
case SERVICE_CONTROL_SHUTDOWN:
|
||||
case SERVICE_CONTROL_STOP:
|
||||
dwState = SERVICE_STOP_PENDING;
|
||||
pService->SetStatus(SERVICE_STOP_PENDING,NO_ERROR, 0, 1, pService->nStopTimeOut);
|
||||
pService->StopService();
|
||||
break;
|
||||
case SERVICE_CONTROL_SHUTDOWN:
|
||||
case SERVICE_CONTROL_STOP:
|
||||
dwState = SERVICE_STOP_PENDING;
|
||||
pService->SetStatus(SERVICE_STOP_PENDING,NO_ERROR, 0, 1,
|
||||
pService->nStopTimeOut);
|
||||
pService->StopService();
|
||||
break;
|
||||
|
||||
default:
|
||||
pService->SetStatus(dwState, NO_ERROR,0, 0, 0);
|
||||
break;
|
||||
default:
|
||||
pService->SetStatus(dwState, NO_ERROR,0, 0, 0);
|
||||
break;
|
||||
}
|
||||
//pService->SetStatus(dwState, NO_ERROR,0, 0, 0);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
|
||||
-------------------------------------------------------------------------- */
|
||||
|
||||
void NTService::Exit(DWORD error)
|
||||
{
|
||||
if (hExitEvent) CloseHandle(hExitEvent);
|
||||
if (hExitEvent)
|
||||
CloseHandle(hExitEvent);
|
||||
|
||||
// Send a message to the scm to tell that we stop
|
||||
if (hServiceStatusHandle)
|
||||
SetStatus(SERVICE_STOPPED, error,0, 0, 0);
|
||||
SetStatus(SERVICE_STOPPED, error,0, 0, 0);
|
||||
|
||||
// If the thread has started kill it ???
|
||||
// if (hThreadHandle) CloseHandle(hThreadHandle);
|
||||
@@ -441,100 +418,64 @@ void NTService::Exit(DWORD error)
|
||||
/* ------------------------------------------------------------------------
|
||||
|
||||
-------------------------------------------------------------------------- */
|
||||
|
||||
BOOL NTService::SeekStatus(LPCSTR szInternName, int OperationType)
|
||||
{
|
||||
BOOL ret_value=FALSE;
|
||||
SC_HANDLE service, scm;
|
||||
LPQUERY_SERVICE_CONFIG ConfigBuf;
|
||||
DWORD dwSize;
|
||||
|
||||
SERVICE_STATUS ss;
|
||||
DWORD dwState = 0xFFFFFFFF;
|
||||
int k;
|
||||
// open a connection to the SCM
|
||||
scm = OpenSCManager(0, 0,SC_MANAGER_CREATE_SERVICE);
|
||||
|
||||
if (!scm) /* problems with the SCM */
|
||||
{
|
||||
if (!(scm = OpenSCManager(0, 0,SC_MANAGER_CREATE_SERVICE)))
|
||||
printf("There is a problem with the Service Control Manager!\n");
|
||||
CloseServiceHandle(scm);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (OperationType == 1) /* an install operation */
|
||||
else
|
||||
{
|
||||
service = OpenService(scm,szInternName, SERVICE_ALL_ACCESS );
|
||||
if(service)
|
||||
if (OperationType == 1)
|
||||
{
|
||||
ConfigBuf = (LPQUERY_SERVICE_CONFIG) LocalAlloc(LPTR, 4096);
|
||||
printf("The service already exists!\n");
|
||||
if ( QueryServiceConfig(service,ConfigBuf,4096,&dwSize) )
|
||||
/* an install operation */
|
||||
if ((service = OpenService(scm,szInternName, SERVICE_ALL_ACCESS )))
|
||||
{
|
||||
printf("The current server installed: %s\n", ConfigBuf->lpBinaryPathName);
|
||||
}
|
||||
LocalFree(ConfigBuf);
|
||||
CloseServiceHandle(scm);
|
||||
CloseServiceHandle(service);
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
CloseServiceHandle(scm);
|
||||
CloseServiceHandle(service);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else /* a remove operation */
|
||||
{
|
||||
service = OpenService(scm,szInternName, SERVICE_ALL_ACCESS );
|
||||
if(!service)
|
||||
{
|
||||
printf("The service doesn't exists!\n");
|
||||
CloseServiceHandle(scm);
|
||||
CloseServiceHandle(service);
|
||||
return FALSE;
|
||||
}
|
||||
LPQUERY_SERVICE_CONFIG ConfigBuf;
|
||||
DWORD dwSize;
|
||||
|
||||
memset(&ss, 0, sizeof(ss));
|
||||
k = QueryServiceStatus(service,&ss);
|
||||
if (k)
|
||||
{
|
||||
dwState = ss.dwCurrentState;
|
||||
if (dwState == SERVICE_RUNNING )
|
||||
{
|
||||
printf("Failed to remove the service:\n");
|
||||
printf("The service is running!\n"
|
||||
"Stop the server and try again.");
|
||||
CloseServiceHandle(service);
|
||||
CloseServiceHandle(scm);
|
||||
return FALSE;
|
||||
}
|
||||
else if (dwState == SERVICE_STOP_PENDING)
|
||||
{
|
||||
printf("Failed to remove the service:\n");
|
||||
printf("The service is in stop pending state!\n"
|
||||
"Wait 30 seconds and try again.\n"
|
||||
"If this condition persist, reboot the machine\n"
|
||||
"and try again");
|
||||
CloseServiceHandle(service);
|
||||
CloseServiceHandle(scm);
|
||||
return FALSE;
|
||||
ConfigBuf = (LPQUERY_SERVICE_CONFIG) LocalAlloc(LPTR, 4096);
|
||||
printf("The service already exists!\n");
|
||||
if (QueryServiceConfig(service,ConfigBuf,4096,&dwSize))
|
||||
printf("The current server installed: %s\n",
|
||||
ConfigBuf->lpBinaryPathName);
|
||||
LocalFree(ConfigBuf);
|
||||
CloseServiceHandle(service);
|
||||
}
|
||||
else
|
||||
ret_value=TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* a remove operation */
|
||||
if (!(service = OpenService(scm,szInternName, SERVICE_ALL_ACCESS )))
|
||||
printf("The service doesn't exists!\n");
|
||||
else
|
||||
{
|
||||
CloseServiceHandle(scm);
|
||||
SERVICE_STATUS ss;
|
||||
|
||||
memset(&ss, 0, sizeof(ss));
|
||||
if (QueryServiceStatus(service,&ss))
|
||||
{
|
||||
DWORD dwState = ss.dwCurrentState;
|
||||
if (dwState == SERVICE_RUNNING)
|
||||
printf("Failed to remove the service because the service is running\nStop the service and try again\n");
|
||||
else if (dwState == SERVICE_STOP_PENDING)
|
||||
printf("\
|
||||
Failed to remove the service because the service is in stop pending state!\n\
|
||||
Wait 30 seconds and try again.\n\
|
||||
If this condition persist, reboot the machine and try again\n");
|
||||
else
|
||||
ret_value= TRUE;
|
||||
}
|
||||
CloseServiceHandle(service);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CloseServiceHandle(scm);
|
||||
CloseServiceHandle(service);
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
CloseServiceHandle(scm);
|
||||
}
|
||||
|
||||
return ret_value;
|
||||
}
|
||||
/* ------------------------- the end -------------------------------------- */
|
||||
|
||||
@@ -224,14 +224,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -218,14 +218,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -167,6 +167,8 @@
|
||||
"Communicatiepakket kon niet worden gedecomprimeerd",
|
||||
"Fout bij het lezen van communicatiepakketten"
|
||||
"Timeout bij het lezen van communicatiepakketten",
|
||||
"Got an error writing communication packets",
|
||||
"Got timeout writing communication packets",
|
||||
"Resultaat string is langer dan max_allowed_packet",
|
||||
"Het gebruikte tabel type ondersteunt geen BLOB/TEXT kolommen",
|
||||
"Het gebruikte tabel type ondersteunt geen AUTO_INCREMENT kolommen",
|
||||
@@ -219,14 +221,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -215,15 +215,7 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
"Cannot delete a parent row: a foreign key constraint fails",
|
||||
"Cannot delete a parent row: a foreign key constraint fails",
|
||||
|
||||
@@ -219,14 +219,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -215,14 +215,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -218,14 +218,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -215,15 +215,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -217,15 +217,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -215,15 +215,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -217,15 +217,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -215,15 +215,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
errmsg.sys
|
||||
@@ -217,15 +217,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
errmsg.sys
|
||||
@@ -217,15 +217,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -219,15 +219,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -215,15 +215,6 @@
|
||||
"N<>o <20> permitido a %-.32s@%-.64s criar novos usu<73>rios",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -219,15 +219,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -207,26 +207,17 @@
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> slave, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CHANGE MASTER TO",
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> master info, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> persmissions <20><> <20><><EFBFBD><EFBFBD><EFBFBD> master.info",
|
||||
"<22><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SLAVE, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"User %-.64s has already more than 'max_user_connections' active connections",
|
||||
"You may only use constant expressions with SET",
|
||||
"Lock wait timeout exceeded",
|
||||
"The total number of locks exceeds the lock table size",
|
||||
"Update locks cannot be acquired during a READ UNCOMMITTED transaction",
|
||||
"DROP DATABASE not allowed while thread is holding global read lock",
|
||||
"CREATE DATABASE not allowed while thread is holding global read lock",
|
||||
"Wrong arguments to %s",
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> %-.64s <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 'max_user_connections' <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> SET",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> READ UNCOMMITTED <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"DROP DATABASE <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"CREATE DATABASE <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> %s",
|
||||
"%-.32s@%-.64s <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; <20><><EFBFBD> MERGE-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> deadlock <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> FULLTEXT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -223,15 +223,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -216,15 +216,6 @@
|
||||
"%-.32s@%-.64s is not allowed to create new users",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -215,16 +215,7 @@
|
||||
"%-.32s@%-.64s har inte r<>ttigheter att skapa nya anv<6E>ndare",
|
||||
"Felaktig tabell definition: Alla tabeller i en MERGE tabell m<>ste vara i samma databas",
|
||||
"Fick 'DEADLOCK' vid l<>sf<73>rs<72>k av block/rad; F<>rs<72>k att starta om transaktionen",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"The used table type doesn't support FULLTEXT indexes",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
"Cannot delete a parent row: a foreign key constraint fails",
|
||||
"Tabelltypen har inte hantering av FULLTEXT index",
|
||||
"Kan inte l<>gga till 'FOREIGN KEY constraint'",
|
||||
"FOREIGN KEY konflikt: Kan inte skriva barn",
|
||||
"FOREIGN KEY konflikt: Kan inte radera fader",
|
||||
|
||||
@@ -220,15 +220,6 @@
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> %-.32s@%-.64s <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ަ<EFBFBD>",
|
||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"Dummy error message: this error number should only occur in MySQL-4",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>æ <20><> Ц<><D0A6><EFBFBD><EFBFBD><EFBFBD>դ FULLTEXT <20><><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>",
|
||||
"Cannot add foreign key constraint",
|
||||
"Cannot add a child row: a foreign key constraint fails",
|
||||
|
||||
@@ -2942,7 +2942,9 @@ propagate_cond_constants(I_List<COND_CMP> *save_list,COND *and_level,
|
||||
Item_func_eq *func=(Item_func_eq*) cond;
|
||||
bool left_const= func->arguments()[0]->const_item();
|
||||
bool right_const=func->arguments()[1]->const_item();
|
||||
if (!(left_const && right_const))
|
||||
if (!(left_const && right_const) &&
|
||||
(func->arguments()[0]->result_type() ==
|
||||
(func->arguments()[1]->result_type())))
|
||||
{
|
||||
if (right_const)
|
||||
{
|
||||
@@ -3986,14 +3988,17 @@ do_select(JOIN *join,List<Item> *fields,TABLE *table,Procedure *procedure)
|
||||
{
|
||||
if (table->group && join->tmp_table_param.sum_func_count)
|
||||
{
|
||||
DBUG_PRINT("info",("Using end_update"));
|
||||
if (table->keys)
|
||||
{
|
||||
DBUG_PRINT("info",("Using end_update"));
|
||||
end_select=end_update;
|
||||
table->file->index_init(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
DBUG_PRINT("info",("Using end_unique_update"));
|
||||
end_select=end_unique_update;
|
||||
}
|
||||
}
|
||||
else if (join->sort_and_group)
|
||||
{
|
||||
@@ -4109,8 +4114,6 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records)
|
||||
int error;
|
||||
bool found=0;
|
||||
COND *on_expr=join_tab->on_expr, *select_cond=join_tab->select_cond;
|
||||
int (*next_select)(JOIN *,struct st_join_table *,bool)=
|
||||
join_tab->next_select;
|
||||
|
||||
if (!(error=(*join_tab->read_first_record)(join_tab)))
|
||||
{
|
||||
@@ -4134,7 +4137,7 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records)
|
||||
break; // Searching after not null columns
|
||||
if (!select_cond || select_cond->val_int())
|
||||
{
|
||||
if ((error=(*next_select)(join,join_tab+1,0)) < 0)
|
||||
if ((error=(*join_tab->next_select)(join,join_tab+1,0)) < 0)
|
||||
return error;
|
||||
if (not_used_in_distinct && found_records != join->found_records)
|
||||
return 0;
|
||||
@@ -4155,7 +4158,7 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records)
|
||||
mark_as_null_row(join_tab->table); // For group by without error
|
||||
if (!select_cond || select_cond->val_int())
|
||||
{
|
||||
if ((error=(*next_select)(join,join_tab+1,0)) < 0)
|
||||
if ((error=(*join_tab->next_select)(join,join_tab+1,0)) < 0)
|
||||
return error; /* purecov: inspected */
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user