merge
This commit is contained in:
commit
dd9cbce47b
@ -3,7 +3,7 @@
|
|||||||
path=`dirname $0`
|
path=`dirname $0`
|
||||||
. "$path/SETUP.sh"
|
. "$path/SETUP.sh"
|
||||||
|
|
||||||
extra_flags="$pentium_cflags $debug_cflags -DBIG_TABLES"
|
extra_flags="$pentium_cflags $debug_cflags"
|
||||||
c_warnings="$c_warnings $debug_extra_warnings"
|
c_warnings="$c_warnings $debug_extra_warnings"
|
||||||
cxx_warnings="$cxx_warnings $debug_extra_warnings"
|
cxx_warnings="$cxx_warnings $debug_extra_warnings"
|
||||||
extra_configs="$pentium_configs $debug_configs"
|
extra_configs="$pentium_configs $debug_configs"
|
||||||
|
13
BUILD/compile-pentium-maintainer
Executable file
13
BUILD/compile-pentium-maintainer
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
path=`dirname $0`
|
||||||
|
. "$path/SETUP.sh"
|
||||||
|
|
||||||
|
extra_flags="$pentium_cflags $debug_cflags"
|
||||||
|
c_warnings="$c_warnings $debug_extra_warnings"
|
||||||
|
cxx_warnings="$cxx_warnings $debug_extra_warnings"
|
||||||
|
extra_configs="$pentium_configs $debug_configs "
|
||||||
|
|
||||||
|
extra_configs="$extra_configs --enable-maintainer-mode"
|
||||||
|
|
||||||
|
. "$path/FINISH.sh"
|
@ -63,11 +63,13 @@ miguel@hegel.br
|
|||||||
miguel@hegel.local
|
miguel@hegel.local
|
||||||
miguel@light.
|
miguel@light.
|
||||||
miguel@light.local
|
miguel@light.local
|
||||||
|
miguel@sartre.local
|
||||||
mmatthew@markslaptop.
|
mmatthew@markslaptop.
|
||||||
monty@bitch.mysql.fi
|
monty@bitch.mysql.fi
|
||||||
monty@butch.
|
monty@butch.
|
||||||
monty@donna.mysql.fi
|
monty@donna.mysql.fi
|
||||||
monty@hundin.mysql.fi
|
monty@hundin.mysql.fi
|
||||||
|
monty@mashka.(none)
|
||||||
monty@mashka.mysql.fi
|
monty@mashka.mysql.fi
|
||||||
monty@narttu.
|
monty@narttu.
|
||||||
monty@narttu.mysql.fi
|
monty@narttu.mysql.fi
|
||||||
@ -85,6 +87,7 @@ nick@mysql.com
|
|||||||
nick@nick.leippe.com
|
nick@nick.leippe.com
|
||||||
papa@gbichot.local
|
papa@gbichot.local
|
||||||
paul@central.snake.net
|
paul@central.snake.net
|
||||||
|
paul@ice.local
|
||||||
paul@ice.snake.net
|
paul@ice.snake.net
|
||||||
paul@teton.kitebird.com
|
paul@teton.kitebird.com
|
||||||
pem@mysql.com
|
pem@mysql.com
|
||||||
|
@ -38,12 +38,14 @@ $opt_export_only= undef;
|
|||||||
$opt_help= $opt_verbose= 0;
|
$opt_help= $opt_verbose= 0;
|
||||||
$opt_log= undef;
|
$opt_log= undef;
|
||||||
$opt_mail= "";
|
$opt_mail= "";
|
||||||
|
$opt_revision= undef;
|
||||||
$opt_suffix= "";
|
$opt_suffix= "";
|
||||||
$opt_test= undef;
|
$opt_test= undef;
|
||||||
$opt_skip_check= undef;
|
$opt_skip_check= undef;
|
||||||
$opt_skip_manual= undef;
|
$opt_skip_manual= undef;
|
||||||
$opt_win_dist= undef;
|
$opt_win_dist= undef;
|
||||||
$version= "unknown";
|
$version= "unknown";
|
||||||
|
$major=$minor=$release=0;
|
||||||
|
|
||||||
GetOptions(
|
GetOptions(
|
||||||
"build-command|b=s",
|
"build-command|b=s",
|
||||||
@ -151,6 +153,7 @@ if (!$opt_dry_run)
|
|||||||
{
|
{
|
||||||
m/^AM_INIT_AUTOMAKE\(mysql, ([1-9]\.[0-9]{1,2}\.[0-9]{1,2}.*)\)/;
|
m/^AM_INIT_AUTOMAKE\(mysql, ([1-9]\.[0-9]{1,2}\.[0-9]{1,2}.*)\)/;
|
||||||
$version= $1;
|
$version= $1;
|
||||||
|
($major, $minor, $release) = split(/\./,$version);
|
||||||
}
|
}
|
||||||
&logger("Found version string: $version");
|
&logger("Found version string: $version");
|
||||||
|
|
||||||
@ -220,7 +223,7 @@ if (defined $opt_changelog)
|
|||||||
{
|
{
|
||||||
if (!$opt_revision)
|
if (!$opt_revision)
|
||||||
{
|
{
|
||||||
$revision= `bk changes -t -d':REV:' -n $REPO | head -1`;
|
$revision= `bk changes -t -d':REV:::TAG:' -n $REPO | grep mysql-$major.$minor | head -1 | cut -f1 -d ":"`;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -248,7 +248,8 @@ if ($opt_stage <= 1)
|
|||||||
$opt_config_options.= $opt_with_other_libc;
|
$opt_config_options.= $opt_with_other_libc;
|
||||||
}
|
}
|
||||||
|
|
||||||
check_system("$opt_config_env ./configure --prefix=/usr/local/mysql --with-comment=\"Official MySQL$opt_version_suffix binary\" --with-extra-charsets=complex --with-server-suffix=\"$opt_version_suffix\" --enable-thread-safe-client --enable-local-infile $opt_config_options","Thank you for choosing MySQL");
|
$prefix="/usr/local/mysql";
|
||||||
|
check_system("$opt_config_env ./configure --prefix=$prefix --localstatedir=$prefix/data --libexecdir=$prefix/bin --with-comment=\"Official MySQL$opt_version_suffix binary\" --with-extra-charsets=complex --with-server-suffix=\"$opt_version_suffix\" --enable-thread-safe-client --enable-local-infile $opt_config_options","Thank you for choosing MySQL");
|
||||||
if (-d "$pwd/$host/include-mysql")
|
if (-d "$pwd/$host/include-mysql")
|
||||||
{
|
{
|
||||||
safe_system("cp -r $pwd/$host/include-mysql/* $pwd/$host/$ver/include");
|
safe_system("cp -r $pwd/$host/include-mysql/* $pwd/$host/$ver/include");
|
||||||
|
@ -41,10 +41,10 @@ paper: manual_a4.ps manual_letter.ps $(PDFMANUAL)
|
|||||||
# The Makefile contains the previous version so we can not use that
|
# The Makefile contains the previous version so we can not use that
|
||||||
include.texi: ../configure.in
|
include.texi: ../configure.in
|
||||||
echo "@c This file is autogenerated by the Makefile" > $@
|
echo "@c This file is autogenerated by the Makefile" > $@
|
||||||
echo -n "@set mysql_version " >> $@
|
echo -n "@set mysqlversion " >> $@
|
||||||
grep "AM_INIT_AUTOMAKE(mysql, " ../configure.in | \
|
grep "AM_INIT_AUTOMAKE(mysql, " ../configure.in | \
|
||||||
sed -e 's;AM_INIT_AUTOMAKE(mysql, ;;' -e 's;);;' >> $@
|
sed -e 's;AM_INIT_AUTOMAKE(mysql, ;;' -e 's;);;' >> $@
|
||||||
echo -n "@set default_port " >> $@
|
echo -n "@set defaultport " >> $@
|
||||||
grep "MYSQL_TCP_PORT_DEFAULT=" ../configure.in | \
|
grep "MYSQL_TCP_PORT_DEFAULT=" ../configure.in | \
|
||||||
sed -e 's;MYSQL_TCP_PORT_DEFAULT=;;' >> $@
|
sed -e 's;MYSQL_TCP_PORT_DEFAULT=;;' >> $@
|
||||||
|
|
||||||
@ -207,7 +207,7 @@ INSTALL-BINARY: mysql.info $(GT)
|
|||||||
perl -w $(GT) mysql.info "LGPL license" "Function Index" > $@
|
perl -w $(GT) mysql.info "LGPL license" "Function Index" > $@
|
||||||
|
|
||||||
../support-files/MacOSX/ReadMe.txt: mysql.info $(GT)
|
../support-files/MacOSX/ReadMe.txt: mysql.info $(GT)
|
||||||
perl -w $(GT) mysql.info "Mac OS X installation" "Netware installation" > $@
|
perl -w $(GT) mysql.info "Mac OS X installation" "NetWare installation" > $@
|
||||||
|
|
||||||
# Don't update the files from bitkeeper
|
# Don't update the files from bitkeeper
|
||||||
%::SCCS/s.%
|
%::SCCS/s.%
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
#!/my/gnu/bin/perl -w -*- perl -*-
|
#!/usr/bin/perl -w -*- perl -*-
|
||||||
# Generate text files from top directory from the manual.
|
# Generate text files from top directory from the manual.
|
||||||
|
|
||||||
$from = shift(@ARGV);
|
$from = shift(@ARGV);
|
||||||
$fnode = shift(@ARGV);
|
$fnode = shift(@ARGV);
|
||||||
$tnode = shift(@ARGV);
|
$tnode = shift(@ARGV);
|
||||||
|
|
||||||
open(IN, "$from") || die;
|
open(IN, "$from") || die "Cannot open $from: $!";
|
||||||
|
|
||||||
$in = 0;
|
$in = 0;
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ while (<IN>)
|
|||||||
}
|
}
|
||||||
elsif (/^File: mysql.info/ || (/^/))
|
elsif (/^File: mysql.info/ || (/^/))
|
||||||
{
|
{
|
||||||
# Just Skip node begginigs
|
# Just Skip node beginnings
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -38,3 +38,6 @@ while (<IN>)
|
|||||||
}
|
}
|
||||||
|
|
||||||
close(IN);
|
close(IN);
|
||||||
|
|
||||||
|
die "Could not find node \"$tnode\"" if ($in == 1);
|
||||||
|
exit 0;
|
||||||
|
@ -0,0 +1,37 @@
|
|||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
||||||
|
[topdir]
|
||||||
|
subdir0=<WINDIR>
|
||||||
|
subdir1=<PROGRAMFILES>
|
||||||
|
subdir2=<TARGETDIR>
|
||||||
|
subdir3=USERDEFINED
|
||||||
|
|
||||||
|
[<WINDIR>]
|
||||||
|
DISPLAYTEXT=Windows Operating System
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
subdir0=<WINDIR>\<WINSYSDIR>
|
||||||
|
|
||||||
|
[<WINDIR>\<WINSYSDIR>]
|
||||||
|
DISPLAYTEXT=Windows System Folder
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
|
||||||
|
[<PROGRAMFILES>]
|
||||||
|
DISPLAYTEXT=Program Files Folder
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
subdir0=<PROGRAMFILES>\<COMMONFILES>
|
||||||
|
|
||||||
|
[<PROGRAMFILES>\<COMMONFILES>]
|
||||||
|
DISPLAYTEXT=Common Files Folder
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
|
||||||
|
[<TARGETDIR>]
|
||||||
|
DISPLAYTEXT=General Application Destination
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
|
||||||
|
[USERDEFINED]
|
||||||
|
DISPLAYTEXT=Script-defined Folders
|
||||||
|
TYPE=USERSTART
|
||||||
|
|
||||||
|
|
@ -0,0 +1,192 @@
|
|||||||
|
[Development]
|
||||||
|
required0=Servers
|
||||||
|
SELECTED=Yes
|
||||||
|
FILENEED=STANDARD
|
||||||
|
required1=Grant Tables
|
||||||
|
HTTPLOCATION=
|
||||||
|
STATUS=Examples, Libraries, Includes and Script files
|
||||||
|
UNINSTALLABLE=Yes
|
||||||
|
TARGET=<TARGETDIR>
|
||||||
|
FTPLOCATION=
|
||||||
|
VISIBLE=Yes
|
||||||
|
DESCRIPTION=Examples, Libraries, Includes and Script files
|
||||||
|
DISPLAYTEXT=Examples, Libraries, Includes and Script files
|
||||||
|
IMAGE=
|
||||||
|
DEFSELECTION=Yes
|
||||||
|
filegroup0=Development
|
||||||
|
COMMENT=
|
||||||
|
INCLUDEINBUILD=Yes
|
||||||
|
INSTALLATION=ALWAYSOVERWRITE
|
||||||
|
COMPRESSIFSEPARATE=No
|
||||||
|
MISC=
|
||||||
|
ENCRYPT=No
|
||||||
|
DISK=ANYDISK
|
||||||
|
TARGETDIRCDROM=
|
||||||
|
PASSWORD=
|
||||||
|
TARGETHIDDEN=General Application Destination
|
||||||
|
|
||||||
|
[Grant Tables]
|
||||||
|
required0=Servers
|
||||||
|
SELECTED=Yes
|
||||||
|
FILENEED=CRITICAL
|
||||||
|
HTTPLOCATION=
|
||||||
|
STATUS=The Grant Tables and Core Files
|
||||||
|
UNINSTALLABLE=Yes
|
||||||
|
TARGET=<TARGETDIR>
|
||||||
|
FTPLOCATION=
|
||||||
|
VISIBLE=Yes
|
||||||
|
DESCRIPTION=The Grant Tables and Core Files
|
||||||
|
DISPLAYTEXT=The Grant Tables and Core Files
|
||||||
|
IMAGE=
|
||||||
|
DEFSELECTION=Yes
|
||||||
|
filegroup0=Grant Tables
|
||||||
|
requiredby0=Development
|
||||||
|
COMMENT=
|
||||||
|
INCLUDEINBUILD=Yes
|
||||||
|
requiredby1=Clients and Tools
|
||||||
|
INSTALLATION=NEVEROVERWRITE
|
||||||
|
requiredby2=Documentation
|
||||||
|
COMPRESSIFSEPARATE=No
|
||||||
|
MISC=
|
||||||
|
ENCRYPT=No
|
||||||
|
DISK=ANYDISK
|
||||||
|
TARGETDIRCDROM=
|
||||||
|
PASSWORD=
|
||||||
|
TARGETHIDDEN=General Application Destination
|
||||||
|
|
||||||
|
[Components]
|
||||||
|
component0=Development
|
||||||
|
component1=Grant Tables
|
||||||
|
component2=Servers
|
||||||
|
component3=Clients and Tools
|
||||||
|
component4=Documentation
|
||||||
|
|
||||||
|
[TopComponents]
|
||||||
|
component0=Servers
|
||||||
|
component1=Clients and Tools
|
||||||
|
component2=Documentation
|
||||||
|
component3=Development
|
||||||
|
component4=Grant Tables
|
||||||
|
|
||||||
|
[SetupType]
|
||||||
|
setuptype0=Compact
|
||||||
|
setuptype1=Typical
|
||||||
|
setuptype2=Custom
|
||||||
|
|
||||||
|
[Clients and Tools]
|
||||||
|
required0=Servers
|
||||||
|
SELECTED=Yes
|
||||||
|
FILENEED=HIGHLYRECOMMENDED
|
||||||
|
required1=Grant Tables
|
||||||
|
HTTPLOCATION=
|
||||||
|
STATUS=The MySQL clients and Maintenance Tools
|
||||||
|
UNINSTALLABLE=Yes
|
||||||
|
TARGET=<TARGETDIR>
|
||||||
|
FTPLOCATION=
|
||||||
|
VISIBLE=Yes
|
||||||
|
DESCRIPTION=The MySQL clients and Maintenance Tools
|
||||||
|
DISPLAYTEXT=The MySQL clients and Maintenance Tools
|
||||||
|
IMAGE=
|
||||||
|
DEFSELECTION=Yes
|
||||||
|
filegroup0=Clients and Tools
|
||||||
|
COMMENT=
|
||||||
|
INCLUDEINBUILD=Yes
|
||||||
|
INSTALLATION=NEWERDATE
|
||||||
|
COMPRESSIFSEPARATE=No
|
||||||
|
MISC=
|
||||||
|
ENCRYPT=No
|
||||||
|
DISK=ANYDISK
|
||||||
|
TARGETDIRCDROM=
|
||||||
|
PASSWORD=
|
||||||
|
TARGETHIDDEN=General Application Destination
|
||||||
|
|
||||||
|
[Servers]
|
||||||
|
SELECTED=Yes
|
||||||
|
FILENEED=CRITICAL
|
||||||
|
HTTPLOCATION=
|
||||||
|
STATUS=The MySQL Servers
|
||||||
|
UNINSTALLABLE=Yes
|
||||||
|
TARGET=<TARGETDIR>
|
||||||
|
FTPLOCATION=
|
||||||
|
VISIBLE=Yes
|
||||||
|
DESCRIPTION=The MySQL Servers
|
||||||
|
DISPLAYTEXT=The MySQL Servers
|
||||||
|
IMAGE=
|
||||||
|
DEFSELECTION=Yes
|
||||||
|
filegroup0=Servers
|
||||||
|
requiredby0=Development
|
||||||
|
COMMENT=
|
||||||
|
INCLUDEINBUILD=Yes
|
||||||
|
requiredby1=Grant Tables
|
||||||
|
INSTALLATION=ALWAYSOVERWRITE
|
||||||
|
requiredby2=Clients and Tools
|
||||||
|
requiredby3=Documentation
|
||||||
|
COMPRESSIFSEPARATE=No
|
||||||
|
MISC=
|
||||||
|
ENCRYPT=No
|
||||||
|
DISK=ANYDISK
|
||||||
|
TARGETDIRCDROM=
|
||||||
|
PASSWORD=
|
||||||
|
TARGETHIDDEN=General Application Destination
|
||||||
|
|
||||||
|
[SetupTypeItem-Compact]
|
||||||
|
Comment=
|
||||||
|
item0=Grant Tables
|
||||||
|
item1=Servers
|
||||||
|
item2=Clients and Tools
|
||||||
|
item3=Documentation
|
||||||
|
Descrip=
|
||||||
|
DisplayText=
|
||||||
|
|
||||||
|
[SetupTypeItem-Custom]
|
||||||
|
Comment=
|
||||||
|
item0=Development
|
||||||
|
item1=Grant Tables
|
||||||
|
item2=Servers
|
||||||
|
item3=Clients and Tools
|
||||||
|
Descrip=
|
||||||
|
item4=Documentation
|
||||||
|
DisplayText=
|
||||||
|
|
||||||
|
[Info]
|
||||||
|
Type=CompDef
|
||||||
|
Version=1.00.000
|
||||||
|
Name=
|
||||||
|
|
||||||
|
[SetupTypeItem-Typical]
|
||||||
|
Comment=
|
||||||
|
item0=Development
|
||||||
|
item1=Grant Tables
|
||||||
|
item2=Servers
|
||||||
|
item3=Clients and Tools
|
||||||
|
Descrip=
|
||||||
|
item4=Documentation
|
||||||
|
DisplayText=
|
||||||
|
|
||||||
|
[Documentation]
|
||||||
|
required0=Servers
|
||||||
|
SELECTED=Yes
|
||||||
|
FILENEED=HIGHLYRECOMMENDED
|
||||||
|
required1=Grant Tables
|
||||||
|
HTTPLOCATION=
|
||||||
|
STATUS=The MySQL Documentation with different formats
|
||||||
|
UNINSTALLABLE=Yes
|
||||||
|
TARGET=<TARGETDIR>
|
||||||
|
FTPLOCATION=
|
||||||
|
VISIBLE=Yes
|
||||||
|
DESCRIPTION=The MySQL Documentation with different formats
|
||||||
|
DISPLAYTEXT=The MySQL Documentation with different formats
|
||||||
|
IMAGE=
|
||||||
|
DEFSELECTION=Yes
|
||||||
|
filegroup0=Documentation
|
||||||
|
COMMENT=
|
||||||
|
INCLUDEINBUILD=Yes
|
||||||
|
INSTALLATION=ALWAYSOVERWRITE
|
||||||
|
COMPRESSIFSEPARATE=No
|
||||||
|
MISC=
|
||||||
|
ENCRYPT=No
|
||||||
|
DISK=ANYDISK
|
||||||
|
TARGETDIRCDROM=
|
||||||
|
PASSWORD=
|
||||||
|
TARGETHIDDEN=General Application Destination
|
||||||
|
|
@ -0,0 +1,42 @@
|
|||||||
|
[<PROGRAMFILES>\<COMMONFILES>]
|
||||||
|
DISPLAYTEXT=Common Files Folder
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[<WINDIR>\<WINSYSDIR>]
|
||||||
|
DISPLAYTEXT=Windows System Folder
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[USERDEFINED]
|
||||||
|
DISPLAYTEXT=Script-defined Folders
|
||||||
|
TYPE=USERSTART
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[<PROGRAMFILES>]
|
||||||
|
DISPLAYTEXT=Program Files Folder
|
||||||
|
SubDir0=<PROGRAMFILES>\<COMMONFILES>
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[<TARGETDIR>]
|
||||||
|
DISPLAYTEXT=General Application Destination
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[<WINDIR>]
|
||||||
|
DISPLAYTEXT=Windows Operating System
|
||||||
|
SubDir0=<WINDIR>\<WINSYSDIR>
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[TopDir]
|
||||||
|
SubDir0=<WINDIR>
|
||||||
|
SubDir1=<PROGRAMFILES>
|
||||||
|
SubDir2=<TARGETDIR>
|
||||||
|
SubDir3=USERDEFINED
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
@ -0,0 +1,35 @@
|
|||||||
|
[bin]
|
||||||
|
file15=C:\mysql\bin\pack_isam.exe
|
||||||
|
file16=C:\mysql\bin\perror.exe
|
||||||
|
file0=C:\mysql\bin\isamchk.exe
|
||||||
|
file17=C:\mysql\bin\replace.exe
|
||||||
|
file1=C:\mysql\bin\myisamchk.exe
|
||||||
|
file18=C:\mysql\bin\winmysqladmin.cnt
|
||||||
|
file2=C:\mysql\bin\myisamlog.exe
|
||||||
|
file19=C:\mysql\bin\winmysqladmin.exe
|
||||||
|
file3=C:\mysql\bin\myisampack.exe
|
||||||
|
file4=C:\mysql\bin\mysql.exe
|
||||||
|
file5=C:\mysql\bin\mysqladmin.exe
|
||||||
|
file6=C:\mysql\bin\mysqlbinlog.exe
|
||||||
|
file7=C:\mysql\bin\mysqlc.exe
|
||||||
|
file8=C:\mysql\bin\mysqlcheck.exe
|
||||||
|
file9=C:\mysql\bin\mysqldump.exe
|
||||||
|
file20=C:\mysql\bin\WINMYSQLADMIN.HLP
|
||||||
|
file21=C:\mysql\bin\cygwinb19.dll
|
||||||
|
file10=C:\mysql\bin\mysqlimport.exe
|
||||||
|
fulldirectory=
|
||||||
|
file22=C:\mysql\bin\libmySQL.dll
|
||||||
|
file11=C:\mysql\bin\MySqlManager.exe
|
||||||
|
file23=C:\mysql\bin\my_print_defaults.exe
|
||||||
|
file12=C:\mysql\bin\mysqlshow.exe
|
||||||
|
file24=C:\mysql\bin\comp-err.exe
|
||||||
|
file13=C:\mysql\bin\mysqlshutdown.exe
|
||||||
|
file14=C:\mysql\bin\mysqlwatch.exe
|
||||||
|
|
||||||
|
[TopDir]
|
||||||
|
SubDir0=bin
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
82
VC++Files/InstallShield/3.23.XX-gpl/File Groups/Default.fdf
Normal file
82
VC++Files/InstallShield/3.23.XX-gpl/File Groups/Default.fdf
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
[FileGroups]
|
||||||
|
group0=Development
|
||||||
|
group1=Grant Tables
|
||||||
|
group2=Servers
|
||||||
|
group3=Clients and Tools
|
||||||
|
group4=Documentation
|
||||||
|
|
||||||
|
[Development]
|
||||||
|
SELFREGISTERING=No
|
||||||
|
HTTPLOCATION=
|
||||||
|
LANGUAGE=
|
||||||
|
OPERATINGSYSTEM=
|
||||||
|
FTPLOCATION=
|
||||||
|
FILETYPE=No
|
||||||
|
INFOTYPE=Standard
|
||||||
|
COMMENT=
|
||||||
|
COMPRESS=Yes
|
||||||
|
COMPRESSDLL=
|
||||||
|
POTENTIALLY=No
|
||||||
|
MISC=
|
||||||
|
|
||||||
|
[Grant Tables]
|
||||||
|
SELFREGISTERING=No
|
||||||
|
HTTPLOCATION=
|
||||||
|
LANGUAGE=
|
||||||
|
OPERATINGSYSTEM=
|
||||||
|
FTPLOCATION=
|
||||||
|
FILETYPE=No
|
||||||
|
INFOTYPE=Standard
|
||||||
|
COMMENT=
|
||||||
|
COMPRESS=Yes
|
||||||
|
COMPRESSDLL=
|
||||||
|
POTENTIALLY=No
|
||||||
|
MISC=
|
||||||
|
|
||||||
|
[Clients and Tools]
|
||||||
|
SELFREGISTERING=No
|
||||||
|
HTTPLOCATION=
|
||||||
|
LANGUAGE=
|
||||||
|
OPERATINGSYSTEM=0000000000000000
|
||||||
|
FTPLOCATION=
|
||||||
|
FILETYPE=No
|
||||||
|
INFOTYPE=Standard
|
||||||
|
COMMENT=
|
||||||
|
COMPRESS=Yes
|
||||||
|
COMPRESSDLL=
|
||||||
|
POTENTIALLY=No
|
||||||
|
MISC=
|
||||||
|
|
||||||
|
[Servers]
|
||||||
|
SELFREGISTERING=No
|
||||||
|
HTTPLOCATION=
|
||||||
|
LANGUAGE=
|
||||||
|
OPERATINGSYSTEM=
|
||||||
|
FTPLOCATION=
|
||||||
|
FILETYPE=No
|
||||||
|
INFOTYPE=Standard
|
||||||
|
COMMENT=
|
||||||
|
COMPRESS=Yes
|
||||||
|
COMPRESSDLL=
|
||||||
|
POTENTIALLY=No
|
||||||
|
MISC=
|
||||||
|
|
||||||
|
[Info]
|
||||||
|
Type=FileGrp
|
||||||
|
Version=1.00.000
|
||||||
|
Name=
|
||||||
|
|
||||||
|
[Documentation]
|
||||||
|
SELFREGISTERING=No
|
||||||
|
HTTPLOCATION=
|
||||||
|
LANGUAGE=
|
||||||
|
OPERATINGSYSTEM=
|
||||||
|
FTPLOCATION=
|
||||||
|
FILETYPE=No
|
||||||
|
INFOTYPE=Standard
|
||||||
|
COMMENT=
|
||||||
|
COMPRESS=Yes
|
||||||
|
COMPRESSDLL=
|
||||||
|
POTENTIALLY=No
|
||||||
|
MISC=
|
||||||
|
|
@ -0,0 +1,4 @@
|
|||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
191
VC++Files/InstallShield/3.23.XX-gpl/File Groups/Development.fgl
Normal file
191
VC++Files/InstallShield/3.23.XX-gpl/File Groups/Development.fgl
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
[bench\Data\Wisconsin]
|
||||||
|
file0=C:\mysql\bench\Data\Wisconsin\onek.data
|
||||||
|
file1=C:\mysql\bench\Data\Wisconsin\tenk.data
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[lib\debug]
|
||||||
|
file0=C:\mysql\lib\debug\libmySQL.dll
|
||||||
|
file1=C:\mysql\lib\debug\libmySQL.lib
|
||||||
|
file2=C:\mysql\lib\debug\mysqlclient.lib
|
||||||
|
file3=C:\mysql\lib\debug\zlib.lib
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[bench\output]
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[examples\libmysqltest]
|
||||||
|
file0=C:\mysql\examples\libmysqltest\myTest.c
|
||||||
|
file1=C:\mysql\examples\libmysqltest\myTest.dsp
|
||||||
|
file2=C:\mysql\examples\libmysqltest\myTest.dsw
|
||||||
|
file3=C:\mysql\examples\libmysqltest\myTest.exe
|
||||||
|
file4=C:\mysql\examples\libmysqltest\myTest.mak
|
||||||
|
file5=C:\mysql\examples\libmysqltest\myTest.ncb
|
||||||
|
file6=C:\mysql\examples\libmysqltest\myTest.opt
|
||||||
|
file7=C:\mysql\examples\libmysqltest\readme
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[include]
|
||||||
|
file0=C:\mysql\include\raid.h
|
||||||
|
file1=C:\mysql\include\errmsg.h
|
||||||
|
file2=C:\mysql\include\Libmysql.def
|
||||||
|
file3=C:\mysql\include\m_ctype.h
|
||||||
|
file4=C:\mysql\include\m_string.h
|
||||||
|
file5=C:\mysql\include\my_list.h
|
||||||
|
file6=C:\mysql\include\my_pthread.h
|
||||||
|
file7=C:\mysql\include\my_sys.h
|
||||||
|
file8=C:\mysql\include\mysql.h
|
||||||
|
file9=C:\mysql\include\mysql_com.h
|
||||||
|
file10=C:\mysql\include\mysql_version.h
|
||||||
|
fulldirectory=
|
||||||
|
file11=C:\mysql\include\mysqld_error.h
|
||||||
|
file12=C:\mysql\include\dbug.h
|
||||||
|
file13=C:\mysql\include\my_global.h
|
||||||
|
file14=C:\mysql\include\config-win.h
|
||||||
|
|
||||||
|
[examples]
|
||||||
|
SubDir0=examples\libmysqltest
|
||||||
|
SubDir1=examples\tests
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[lib\opt]
|
||||||
|
file0=C:\mysql\lib\opt\libmySQL.dll
|
||||||
|
file1=C:\mysql\lib\opt\libmySQL.lib
|
||||||
|
file2=C:\mysql\lib\opt\mysqlclient.lib
|
||||||
|
file3=C:\mysql\lib\opt\zlib.lib
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[bench\Data]
|
||||||
|
SubDir0=bench\Data\ATIS
|
||||||
|
SubDir1=bench\Data\Wisconsin
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[bench\limits]
|
||||||
|
file15=C:\mysql\bench\limits\pg.comment
|
||||||
|
file16=C:\mysql\bench\limits\solid.cfg
|
||||||
|
file0=C:\mysql\bench\limits\access.cfg
|
||||||
|
file17=C:\mysql\bench\limits\solid-nt4.cfg
|
||||||
|
file1=C:\mysql\bench\limits\access.comment
|
||||||
|
file18=C:\mysql\bench\limits\sybase.cfg
|
||||||
|
file2=C:\mysql\bench\limits\Adabas.cfg
|
||||||
|
file3=C:\mysql\bench\limits\Adabas.comment
|
||||||
|
file4=C:\mysql\bench\limits\Db2.cfg
|
||||||
|
file5=C:\mysql\bench\limits\empress.cfg
|
||||||
|
file6=C:\mysql\bench\limits\empress.comment
|
||||||
|
file7=C:\mysql\bench\limits\Informix.cfg
|
||||||
|
file8=C:\mysql\bench\limits\Informix.comment
|
||||||
|
file9=C:\mysql\bench\limits\msql.cfg
|
||||||
|
file10=C:\mysql\bench\limits\ms-sql.cfg
|
||||||
|
fulldirectory=
|
||||||
|
file11=C:\mysql\bench\limits\Ms-sql65.cfg
|
||||||
|
file12=C:\mysql\bench\limits\mysql.cfg
|
||||||
|
file13=C:\mysql\bench\limits\oracle.cfg
|
||||||
|
file14=C:\mysql\bench\limits\pg.cfg
|
||||||
|
|
||||||
|
[TopDir]
|
||||||
|
SubDir0=bench
|
||||||
|
SubDir1=examples
|
||||||
|
SubDir2=include
|
||||||
|
SubDir3=lib
|
||||||
|
SubDir4=scripts
|
||||||
|
|
||||||
|
[bench]
|
||||||
|
file15=C:\mysql\bench\test-create
|
||||||
|
file16=C:\mysql\bench\test-insert
|
||||||
|
file0=C:\mysql\bench\uname.bat
|
||||||
|
file17=C:\mysql\bench\test-select
|
||||||
|
file1=C:\mysql\bench\compare-results
|
||||||
|
file18=C:\mysql\bench\test-wisconsin
|
||||||
|
file2=C:\mysql\bench\copy-db
|
||||||
|
file19=C:\mysql\bench\bench-init.pl
|
||||||
|
file3=C:\mysql\bench\crash-me
|
||||||
|
file4=C:\mysql\bench\example.bat
|
||||||
|
file5=C:\mysql\bench\print-limit-table
|
||||||
|
file6=C:\mysql\bench\pwd.bat
|
||||||
|
file7=C:\mysql\bench\Readme
|
||||||
|
SubDir0=bench\Data
|
||||||
|
file8=C:\mysql\bench\run.bat
|
||||||
|
SubDir1=bench\limits
|
||||||
|
file9=C:\mysql\bench\run-all-tests
|
||||||
|
SubDir2=bench\output
|
||||||
|
file10=C:\mysql\bench\server-cfg
|
||||||
|
fulldirectory=
|
||||||
|
file11=C:\mysql\bench\test-alter-table
|
||||||
|
file12=C:\mysql\bench\test-ATIS
|
||||||
|
file13=C:\mysql\bench\test-big-tables
|
||||||
|
file14=C:\mysql\bench\test-connect
|
||||||
|
|
||||||
|
[examples\tests]
|
||||||
|
file15=C:\mysql\examples\tests\lock_test.res
|
||||||
|
file16=C:\mysql\examples\tests\mail_to_db.pl
|
||||||
|
file0=C:\mysql\examples\tests\unique_users.tst
|
||||||
|
file17=C:\mysql\examples\tests\table_types.pl
|
||||||
|
file1=C:\mysql\examples\tests\auto_increment.tst
|
||||||
|
file18=C:\mysql\examples\tests\test_delayed_insert.pl
|
||||||
|
file2=C:\mysql\examples\tests\big_record.pl
|
||||||
|
file19=C:\mysql\examples\tests\udf_test
|
||||||
|
file3=C:\mysql\examples\tests\big_record.res
|
||||||
|
file4=C:\mysql\examples\tests\czech-sorting
|
||||||
|
file5=C:\mysql\examples\tests\deadlock-script.pl
|
||||||
|
file6=C:\mysql\examples\tests\export.pl
|
||||||
|
file7=C:\mysql\examples\tests\fork_test.pl
|
||||||
|
file8=C:\mysql\examples\tests\fork2_test.pl
|
||||||
|
file9=C:\mysql\examples\tests\fork3_test.pl
|
||||||
|
file20=C:\mysql\examples\tests\udf_test.res
|
||||||
|
file21=C:\mysql\examples\tests\auto_increment.res
|
||||||
|
file10=C:\mysql\examples\tests\function.res
|
||||||
|
fulldirectory=
|
||||||
|
file11=C:\mysql\examples\tests\function.tst
|
||||||
|
file12=C:\mysql\examples\tests\grant.pl
|
||||||
|
file13=C:\mysql\examples\tests\grant.res
|
||||||
|
file14=C:\mysql\examples\tests\lock_test.pl
|
||||||
|
|
||||||
|
[bench\Data\ATIS]
|
||||||
|
file26=C:\mysql\bench\Data\ATIS\stop1.txt
|
||||||
|
file15=C:\mysql\bench\Data\ATIS\flight_class.txt
|
||||||
|
file27=C:\mysql\bench\Data\ATIS\time_interval.txt
|
||||||
|
file16=C:\mysql\bench\Data\ATIS\flight_day.txt
|
||||||
|
file0=C:\mysql\bench\Data\ATIS\transport.txt
|
||||||
|
file28=C:\mysql\bench\Data\ATIS\time_zone.txt
|
||||||
|
file17=C:\mysql\bench\Data\ATIS\flight_fare.txt
|
||||||
|
file1=C:\mysql\bench\Data\ATIS\airline.txt
|
||||||
|
file29=C:\mysql\bench\Data\ATIS\aircraft.txt
|
||||||
|
file18=C:\mysql\bench\Data\ATIS\food_service.txt
|
||||||
|
file2=C:\mysql\bench\Data\ATIS\airport.txt
|
||||||
|
file19=C:\mysql\bench\Data\ATIS\ground_service.txt
|
||||||
|
file3=C:\mysql\bench\Data\ATIS\airport_service.txt
|
||||||
|
file4=C:\mysql\bench\Data\ATIS\city.txt
|
||||||
|
file5=C:\mysql\bench\Data\ATIS\class_of_service.txt
|
||||||
|
file6=C:\mysql\bench\Data\ATIS\code_description.txt
|
||||||
|
file7=C:\mysql\bench\Data\ATIS\compound_class.txt
|
||||||
|
file8=C:\mysql\bench\Data\ATIS\connect_leg.txt
|
||||||
|
file9=C:\mysql\bench\Data\ATIS\date_day.txt
|
||||||
|
file20=C:\mysql\bench\Data\ATIS\month_name.txt
|
||||||
|
file21=C:\mysql\bench\Data\ATIS\restrict_carrier.txt
|
||||||
|
file10=C:\mysql\bench\Data\ATIS\day_name.txt
|
||||||
|
fulldirectory=
|
||||||
|
file22=C:\mysql\bench\Data\ATIS\restrict_class.txt
|
||||||
|
file11=C:\mysql\bench\Data\ATIS\dual_carrier.txt
|
||||||
|
file23=C:\mysql\bench\Data\ATIS\restriction.txt
|
||||||
|
file12=C:\mysql\bench\Data\ATIS\fare.txt
|
||||||
|
file24=C:\mysql\bench\Data\ATIS\state.txt
|
||||||
|
file13=C:\mysql\bench\Data\ATIS\fconnection.txt
|
||||||
|
file25=C:\mysql\bench\Data\ATIS\stop.txt
|
||||||
|
file14=C:\mysql\bench\Data\ATIS\flight.txt
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
||||||
|
[scripts]
|
||||||
|
file0=C:\mysql\scripts\mysql_find_rows.pl
|
||||||
|
file1=C:\mysql\scripts\mysql_setpermission.pl
|
||||||
|
file2=C:\mysql\scripts\mysqlhotcopy.pl
|
||||||
|
file3=C:\mysql\scripts\Readme
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
file0=C:\mysql\lib\Readme
|
||||||
|
SubDir0=lib\debug
|
||||||
|
SubDir1=lib\opt
|
||||||
|
fulldirectory=
|
||||||
|
|
@ -0,0 +1,99 @@
|
|||||||
|
[Docs\Flags]
|
||||||
|
file59=C:\mysql\Docs\Flags\romania.gif
|
||||||
|
file48=C:\mysql\Docs\Flags\kroatia.eps
|
||||||
|
file37=C:\mysql\Docs\Flags\iceland.gif
|
||||||
|
file26=C:\mysql\Docs\Flags\france.eps
|
||||||
|
file15=C:\mysql\Docs\Flags\china.gif
|
||||||
|
file49=C:\mysql\Docs\Flags\kroatia.gif
|
||||||
|
file38=C:\mysql\Docs\Flags\ireland.eps
|
||||||
|
file27=C:\mysql\Docs\Flags\france.gif
|
||||||
|
file16=C:\mysql\Docs\Flags\croatia.eps
|
||||||
|
file0=C:\mysql\Docs\Flags\usa.gif
|
||||||
|
file39=C:\mysql\Docs\Flags\ireland.gif
|
||||||
|
file28=C:\mysql\Docs\Flags\germany.eps
|
||||||
|
file17=C:\mysql\Docs\Flags\croatia.gif
|
||||||
|
file1=C:\mysql\Docs\Flags\argentina.gif
|
||||||
|
file29=C:\mysql\Docs\Flags\germany.gif
|
||||||
|
file18=C:\mysql\Docs\Flags\czech-republic.eps
|
||||||
|
file2=C:\mysql\Docs\Flags\australia.eps
|
||||||
|
file19=C:\mysql\Docs\Flags\czech-republic.gif
|
||||||
|
file3=C:\mysql\Docs\Flags\australia.gif
|
||||||
|
file80=C:\mysql\Docs\Flags\usa.eps
|
||||||
|
file4=C:\mysql\Docs\Flags\austria.eps
|
||||||
|
file81=C:\mysql\Docs\Flags\argentina.eps
|
||||||
|
file70=C:\mysql\Docs\Flags\spain.eps
|
||||||
|
file5=C:\mysql\Docs\Flags\austria.gif
|
||||||
|
file71=C:\mysql\Docs\Flags\spain.gif
|
||||||
|
file60=C:\mysql\Docs\Flags\russia.eps
|
||||||
|
file6=C:\mysql\Docs\Flags\brazil.eps
|
||||||
|
file72=C:\mysql\Docs\Flags\sweden.eps
|
||||||
|
file61=C:\mysql\Docs\Flags\russia.gif
|
||||||
|
file50=C:\mysql\Docs\Flags\latvia.eps
|
||||||
|
file7=C:\mysql\Docs\Flags\brazil.gif
|
||||||
|
file73=C:\mysql\Docs\Flags\sweden.gif
|
||||||
|
file62=C:\mysql\Docs\Flags\singapore.eps
|
||||||
|
file51=C:\mysql\Docs\Flags\latvia.gif
|
||||||
|
file40=C:\mysql\Docs\Flags\island.eps
|
||||||
|
file8=C:\mysql\Docs\Flags\bulgaria.eps
|
||||||
|
file74=C:\mysql\Docs\Flags\switzerland.eps
|
||||||
|
file63=C:\mysql\Docs\Flags\singapore.gif
|
||||||
|
file52=C:\mysql\Docs\Flags\netherlands.eps
|
||||||
|
file41=C:\mysql\Docs\Flags\island.gif
|
||||||
|
file30=C:\mysql\Docs\Flags\great-britain.eps
|
||||||
|
file9=C:\mysql\Docs\Flags\bulgaria.gif
|
||||||
|
file75=C:\mysql\Docs\Flags\switzerland.gif
|
||||||
|
file64=C:\mysql\Docs\Flags\south-africa.eps
|
||||||
|
file53=C:\mysql\Docs\Flags\netherlands.gif
|
||||||
|
file42=C:\mysql\Docs\Flags\israel.eps
|
||||||
|
file31=C:\mysql\Docs\Flags\great-britain.gif
|
||||||
|
file20=C:\mysql\Docs\Flags\denmark.eps
|
||||||
|
file76=C:\mysql\Docs\Flags\taiwan.eps
|
||||||
|
file65=C:\mysql\Docs\Flags\south-africa.gif
|
||||||
|
file54=C:\mysql\Docs\Flags\poland.eps
|
||||||
|
file43=C:\mysql\Docs\Flags\israel.gif
|
||||||
|
file32=C:\mysql\Docs\Flags\greece.eps
|
||||||
|
file21=C:\mysql\Docs\Flags\denmark.gif
|
||||||
|
file10=C:\mysql\Docs\Flags\canada.eps
|
||||||
|
fulldirectory=
|
||||||
|
file77=C:\mysql\Docs\Flags\taiwan.gif
|
||||||
|
file66=C:\mysql\Docs\Flags\south-africa1.eps
|
||||||
|
file55=C:\mysql\Docs\Flags\poland.gif
|
||||||
|
file44=C:\mysql\Docs\Flags\italy.eps
|
||||||
|
file33=C:\mysql\Docs\Flags\greece.gif
|
||||||
|
file22=C:\mysql\Docs\Flags\estonia.eps
|
||||||
|
file11=C:\mysql\Docs\Flags\canada.gif
|
||||||
|
file78=C:\mysql\Docs\Flags\ukraine.eps
|
||||||
|
file67=C:\mysql\Docs\Flags\south-africa1.gif
|
||||||
|
file56=C:\mysql\Docs\Flags\portugal.eps
|
||||||
|
file45=C:\mysql\Docs\Flags\italy.gif
|
||||||
|
file34=C:\mysql\Docs\Flags\hungary.eps
|
||||||
|
file23=C:\mysql\Docs\Flags\estonia.gif
|
||||||
|
file12=C:\mysql\Docs\Flags\chile.eps
|
||||||
|
file79=C:\mysql\Docs\Flags\ukraine.gif
|
||||||
|
file68=C:\mysql\Docs\Flags\south-korea.eps
|
||||||
|
file57=C:\mysql\Docs\Flags\portugal.gif
|
||||||
|
file46=C:\mysql\Docs\Flags\japan.eps
|
||||||
|
file35=C:\mysql\Docs\Flags\hungary.gif
|
||||||
|
file24=C:\mysql\Docs\Flags\finland.eps
|
||||||
|
file13=C:\mysql\Docs\Flags\chile.gif
|
||||||
|
file69=C:\mysql\Docs\Flags\south-korea.gif
|
||||||
|
file58=C:\mysql\Docs\Flags\romania.eps
|
||||||
|
file47=C:\mysql\Docs\Flags\japan.gif
|
||||||
|
file36=C:\mysql\Docs\Flags\iceland.eps
|
||||||
|
file25=C:\mysql\Docs\Flags\finland.gif
|
||||||
|
file14=C:\mysql\Docs\Flags\china.eps
|
||||||
|
|
||||||
|
[Docs]
|
||||||
|
file0=C:\mysql\Docs\manual_toc.html
|
||||||
|
file1=C:\mysql\Docs\manual.html
|
||||||
|
file2=C:\mysql\Docs\manual.txt
|
||||||
|
SubDir0=Docs\Flags
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[TopDir]
|
||||||
|
SubDir0=Docs
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
@ -0,0 +1,36 @@
|
|||||||
|
[data\test]
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[data\mysql]
|
||||||
|
file15=C:\mysql\data\mysql\func.frm
|
||||||
|
file16=C:\mysql\data\mysql\func.MYD
|
||||||
|
file0=C:\mysql\data\mysql\columns_priv.frm
|
||||||
|
file17=C:\mysql\data\mysql\func.MYI
|
||||||
|
file1=C:\mysql\data\mysql\columns_priv.MYD
|
||||||
|
file2=C:\mysql\data\mysql\columns_priv.MYI
|
||||||
|
file3=C:\mysql\data\mysql\db.frm
|
||||||
|
file4=C:\mysql\data\mysql\db.MYD
|
||||||
|
file5=C:\mysql\data\mysql\db.MYI
|
||||||
|
file6=C:\mysql\data\mysql\host.frm
|
||||||
|
file7=C:\mysql\data\mysql\host.MYD
|
||||||
|
file8=C:\mysql\data\mysql\host.MYI
|
||||||
|
file9=C:\mysql\data\mysql\tables_priv.frm
|
||||||
|
file10=C:\mysql\data\mysql\tables_priv.MYD
|
||||||
|
fulldirectory=
|
||||||
|
file11=C:\mysql\data\mysql\tables_priv.MYI
|
||||||
|
file12=C:\mysql\data\mysql\user.frm
|
||||||
|
file13=C:\mysql\data\mysql\user.MYD
|
||||||
|
file14=C:\mysql\data\mysql\user.MYI
|
||||||
|
|
||||||
|
[TopDir]
|
||||||
|
SubDir0=data
|
||||||
|
|
||||||
|
[data]
|
||||||
|
SubDir0=data\mysql
|
||||||
|
SubDir1=data\test
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
184
VC++Files/InstallShield/3.23.XX-gpl/File Groups/Servers.fgl
Normal file
184
VC++Files/InstallShield/3.23.XX-gpl/File Groups/Servers.fgl
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
[share\polish]
|
||||||
|
file0=C:\mysql\share\polish\errmsg.sys
|
||||||
|
file1=C:\mysql\share\polish\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\dutch]
|
||||||
|
file0=C:\mysql\share\dutch\errmsg.sys
|
||||||
|
file1=C:\mysql\share\dutch\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\spanish]
|
||||||
|
file0=C:\mysql\share\spanish\errmsg.sys
|
||||||
|
file1=C:\mysql\share\spanish\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\english]
|
||||||
|
file0=C:\mysql\share\english\errmsg.sys
|
||||||
|
file1=C:\mysql\share\english\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[bin]
|
||||||
|
file0=C:\mysql\bin\mysqld-opt.exe
|
||||||
|
file1=C:\mysql\bin\mysqld-max.exe
|
||||||
|
file2=C:\mysql\bin\mysqld-max-nt.exe
|
||||||
|
file3=C:\mysql\bin\mysqld-nt.exe
|
||||||
|
file4=C:\mysql\bin\mysqld.exe
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\korean]
|
||||||
|
file0=C:\mysql\share\korean\errmsg.sys
|
||||||
|
file1=C:\mysql\share\korean\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\charsets]
|
||||||
|
file15=C:\mysql\share\charsets\latin1.conf
|
||||||
|
file16=C:\mysql\share\charsets\latin2.conf
|
||||||
|
file0=C:\mysql\share\charsets\win1251ukr.conf
|
||||||
|
file17=C:\mysql\share\charsets\latin5.conf
|
||||||
|
file1=C:\mysql\share\charsets\cp1257.conf
|
||||||
|
file18=C:\mysql\share\charsets\Readme
|
||||||
|
file2=C:\mysql\share\charsets\croat.conf
|
||||||
|
file19=C:\mysql\share\charsets\swe7.conf
|
||||||
|
file3=C:\mysql\share\charsets\danish.conf
|
||||||
|
file4=C:\mysql\share\charsets\dec8.conf
|
||||||
|
file5=C:\mysql\share\charsets\dos.conf
|
||||||
|
file6=C:\mysql\share\charsets\estonia.conf
|
||||||
|
file7=C:\mysql\share\charsets\german1.conf
|
||||||
|
file8=C:\mysql\share\charsets\greek.conf
|
||||||
|
file9=C:\mysql\share\charsets\hebrew.conf
|
||||||
|
file20=C:\mysql\share\charsets\usa7.conf
|
||||||
|
file21=C:\mysql\share\charsets\win1250.conf
|
||||||
|
file10=C:\mysql\share\charsets\hp8.conf
|
||||||
|
fulldirectory=
|
||||||
|
file22=C:\mysql\share\charsets\win1251.conf
|
||||||
|
file11=C:\mysql\share\charsets\hungarian.conf
|
||||||
|
file23=C:\mysql\share\charsets\cp1251.conf
|
||||||
|
file12=C:\mysql\share\charsets\Index
|
||||||
|
file13=C:\mysql\share\charsets\koi8_ru.conf
|
||||||
|
file14=C:\mysql\share\charsets\koi8_ukr.conf
|
||||||
|
|
||||||
|
[share\ukrainian]
|
||||||
|
file0=C:\mysql\share\ukrainian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\ukrainian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\hungarian]
|
||||||
|
file0=C:\mysql\share\hungarian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\hungarian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\german]
|
||||||
|
file0=C:\mysql\share\german\errmsg.sys
|
||||||
|
file1=C:\mysql\share\german\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\portuguese]
|
||||||
|
file0=C:\mysql\share\portuguese\errmsg.sys
|
||||||
|
file1=C:\mysql\share\portuguese\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\estonian]
|
||||||
|
file0=C:\mysql\share\estonian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\estonian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\romanian]
|
||||||
|
file0=C:\mysql\share\romanian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\romanian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\french]
|
||||||
|
file0=C:\mysql\share\french\errmsg.sys
|
||||||
|
file1=C:\mysql\share\french\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\swedish]
|
||||||
|
file0=C:\mysql\share\swedish\errmsg.sys
|
||||||
|
file1=C:\mysql\share\swedish\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\slovak]
|
||||||
|
file0=C:\mysql\share\slovak\errmsg.sys
|
||||||
|
file1=C:\mysql\share\slovak\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\greek]
|
||||||
|
file0=C:\mysql\share\greek\errmsg.sys
|
||||||
|
file1=C:\mysql\share\greek\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[TopDir]
|
||||||
|
file0=C:\mysql\mysqlbug.txt
|
||||||
|
file1=C:\mysql\my-small.cnf
|
||||||
|
file2=C:\mysql\my-large.cnf
|
||||||
|
file3=C:\mysql\my-medium.cnf
|
||||||
|
file4=C:\mysql\my-huge.cnf
|
||||||
|
SubDir0=bin
|
||||||
|
SubDir1=share
|
||||||
|
|
||||||
|
[share]
|
||||||
|
SubDir8=share\hungarian
|
||||||
|
SubDir9=share\charsets
|
||||||
|
SubDir20=share\spanish
|
||||||
|
SubDir21=share\swedish
|
||||||
|
SubDir10=share\italian
|
||||||
|
SubDir22=share\ukrainian
|
||||||
|
SubDir11=share\japanese
|
||||||
|
SubDir12=share\korean
|
||||||
|
SubDir13=share\norwegian
|
||||||
|
SubDir14=share\norwegian-ny
|
||||||
|
SubDir15=share\polish
|
||||||
|
SubDir16=share\portuguese
|
||||||
|
SubDir0=share\czech
|
||||||
|
SubDir17=share\romanian
|
||||||
|
SubDir1=share\danish
|
||||||
|
SubDir18=share\russian
|
||||||
|
SubDir2=share\dutch
|
||||||
|
SubDir19=share\slovak
|
||||||
|
SubDir3=share\english
|
||||||
|
fulldirectory=
|
||||||
|
SubDir4=share\estonian
|
||||||
|
SubDir5=share\french
|
||||||
|
SubDir6=share\german
|
||||||
|
SubDir7=share\greek
|
||||||
|
|
||||||
|
[share\norwegian-ny]
|
||||||
|
file0=C:\mysql\share\norwegian-ny\errmsg.sys
|
||||||
|
file1=C:\mysql\share\norwegian-ny\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\danish]
|
||||||
|
file0=C:\mysql\share\danish\errmsg.sys
|
||||||
|
file1=C:\mysql\share\danish\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\czech]
|
||||||
|
file0=C:\mysql\share\czech\errmsg.sys
|
||||||
|
file1=C:\mysql\share\czech\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
||||||
|
[share\russian]
|
||||||
|
file0=C:\mysql\share\russian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\russian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\norwegian]
|
||||||
|
file0=C:\mysql\share\norwegian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\norwegian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\japanese]
|
||||||
|
file0=C:\mysql\share\japanese\errmsg.sys
|
||||||
|
file1=C:\mysql\share\japanese\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\italian]
|
||||||
|
file0=C:\mysql\share\italian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\italian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
51
VC++Files/InstallShield/3.23.XX-gpl/MySQL 3.23.XX-GPL.ipr
Normal file
51
VC++Files/InstallShield/3.23.XX-gpl/MySQL 3.23.XX-GPL.ipr
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
[Language]
|
||||||
|
LanguageSupport0=0009
|
||||||
|
|
||||||
|
[OperatingSystem]
|
||||||
|
OSSupport=0000000000010010
|
||||||
|
|
||||||
|
[Data]
|
||||||
|
CurrentMedia=
|
||||||
|
CurrentComponentDef=Default.cdf
|
||||||
|
ProductName=MySQL Servers and Clients
|
||||||
|
set_mifserial=
|
||||||
|
DevEnvironment=Microsoft Visual C++ 6
|
||||||
|
AppExe=
|
||||||
|
set_dlldebug=No
|
||||||
|
EmailAddresss=
|
||||||
|
Instructions=Instructions.txt
|
||||||
|
set_testmode=No
|
||||||
|
set_mif=No
|
||||||
|
SummaryText=
|
||||||
|
Department=
|
||||||
|
HomeURL=
|
||||||
|
Author=
|
||||||
|
Type=Database Application
|
||||||
|
InstallRoot=C:\MySQL-Install\3.23.XX-gpl
|
||||||
|
Version=1.00.000
|
||||||
|
InstallationGUID=40744a4d-efed-4cff-84a9-9e6389550f5c
|
||||||
|
set_level=Level 3
|
||||||
|
CurrentFileGroupDef=Default.fdf
|
||||||
|
Notes=Notes.txt
|
||||||
|
set_maxerr=50
|
||||||
|
set_args=
|
||||||
|
set_miffile=Status.mif
|
||||||
|
set_dllcmdline=
|
||||||
|
Copyright=
|
||||||
|
set_warnaserr=No
|
||||||
|
CurrentPlatform=
|
||||||
|
Category=
|
||||||
|
set_preproc=
|
||||||
|
CurrentLanguage=English
|
||||||
|
CompanyName=MySQL
|
||||||
|
Description=Description.txt
|
||||||
|
set_maxwarn=50
|
||||||
|
set_crc=Yes
|
||||||
|
set_compileb4build=No
|
||||||
|
|
||||||
|
[MediaInfo]
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=INSTALLMAIN
|
||||||
|
Version=1.10.000
|
||||||
|
|
@ -0,0 +1,4 @@
|
|||||||
|
[General]
|
||||||
|
Type=REGISTRYDATA
|
||||||
|
Version=1.00.000
|
||||||
|
|
BIN
VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.dbg
Normal file
BIN
VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.dbg
Normal file
Binary file not shown.
BIN
VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.ino
Normal file
BIN
VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.ino
Normal file
Binary file not shown.
BIN
VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.ins
Normal file
BIN
VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.ins
Normal file
Binary file not shown.
BIN
VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.obs
Normal file
BIN
VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.obs
Normal file
Binary file not shown.
641
VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.rul
Normal file
641
VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.rul
Normal file
@ -0,0 +1,641 @@
|
|||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// IIIIIII SSSSSS
|
||||||
|
// II SS InstallShield (R)
|
||||||
|
// II SSSSSS (c) 1996-1997, InstallShield Software Corporation
|
||||||
|
// II SS (c) 1990-1996, InstallShield Corporation
|
||||||
|
// IIIIIII SSSSSS All Rights Reserved.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// This code is generated as a starting setup template. You should
|
||||||
|
// modify it to provide all necessary steps for your setup.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File Name: Setup.rul
|
||||||
|
//
|
||||||
|
// Description: InstallShield script
|
||||||
|
//
|
||||||
|
// Comments: This template script performs a basic setup on a
|
||||||
|
// Windows 95 or Windows NT 4.0 platform. With minor
|
||||||
|
// modifications, this template can be adapted to create
|
||||||
|
// new, customized setups.
|
||||||
|
//
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
// Include header file
|
||||||
|
#include "sdlang.h"
|
||||||
|
#include "sddialog.h"
|
||||||
|
|
||||||
|
////////////////////// string defines ////////////////////////////
|
||||||
|
|
||||||
|
#define UNINST_LOGFILE_NAME "Uninst.isu"
|
||||||
|
|
||||||
|
//////////////////// installation declarations ///////////////////
|
||||||
|
|
||||||
|
// ----- DLL prototypes -----
|
||||||
|
|
||||||
|
|
||||||
|
// your DLL prototypes
|
||||||
|
|
||||||
|
|
||||||
|
// ---- script prototypes -----
|
||||||
|
|
||||||
|
// generated
|
||||||
|
prototype ShowDialogs();
|
||||||
|
prototype MoveFileData();
|
||||||
|
prototype HandleMoveDataError( NUMBER );
|
||||||
|
prototype ProcessBeforeDataMove();
|
||||||
|
prototype ProcessAfterDataMove();
|
||||||
|
prototype SetupRegistry();
|
||||||
|
prototype SetupFolders();
|
||||||
|
prototype CleanUpInstall();
|
||||||
|
prototype SetupInstall();
|
||||||
|
prototype SetupScreen();
|
||||||
|
prototype CheckRequirements();
|
||||||
|
prototype DialogShowSdWelcome();
|
||||||
|
prototype DialogShowSdShowInfoList();
|
||||||
|
prototype DialogShowSdAskDestPath();
|
||||||
|
prototype DialogShowSdSetupType();
|
||||||
|
prototype DialogShowSdComponentDialog2();
|
||||||
|
prototype DialogShowSdFinishReboot();
|
||||||
|
|
||||||
|
// your prototypes
|
||||||
|
|
||||||
|
|
||||||
|
// ----- global variables ------
|
||||||
|
|
||||||
|
// generated
|
||||||
|
BOOL bWinNT, bIsShellExplorer, bInstallAborted, bIs32BitSetup;
|
||||||
|
STRING svDir;
|
||||||
|
STRING svName, svCompany, svSerial;
|
||||||
|
STRING szAppPath;
|
||||||
|
STRING svSetupType;
|
||||||
|
|
||||||
|
|
||||||
|
// your global variables
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// MAIN PROGRAM
|
||||||
|
//
|
||||||
|
// The setup begins here by hiding the visible setup
|
||||||
|
// window. This is done to allow all the titles, images, etc. to
|
||||||
|
// be established before showing the main window. The following
|
||||||
|
// logic then performs the setup in a series of steps.
|
||||||
|
//
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
program
|
||||||
|
Disable( BACKGROUND );
|
||||||
|
|
||||||
|
CheckRequirements();
|
||||||
|
|
||||||
|
SetupInstall();
|
||||||
|
|
||||||
|
SetupScreen();
|
||||||
|
|
||||||
|
if (ShowDialogs()<0) goto end_install;
|
||||||
|
|
||||||
|
if (ProcessBeforeDataMove()<0) goto end_install;
|
||||||
|
|
||||||
|
if (MoveFileData()<0) goto end_install;
|
||||||
|
|
||||||
|
if (ProcessAfterDataMove()<0) goto end_install;
|
||||||
|
|
||||||
|
if (SetupRegistry()<0) goto end_install;
|
||||||
|
|
||||||
|
if (SetupFolders()<0) goto end_install;
|
||||||
|
|
||||||
|
|
||||||
|
end_install:
|
||||||
|
|
||||||
|
CleanUpInstall();
|
||||||
|
|
||||||
|
// If an unrecoverable error occurred, clean up the partial installation.
|
||||||
|
// Otherwise, exit normally.
|
||||||
|
|
||||||
|
if (bInstallAborted) then
|
||||||
|
abort;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
endprogram
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: ShowDialogs //
|
||||||
|
// //
|
||||||
|
// Purpose: This function manages the display and navigation //
|
||||||
|
// the standard dialogs that exist in a setup. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function ShowDialogs()
|
||||||
|
NUMBER nResult;
|
||||||
|
begin
|
||||||
|
|
||||||
|
Dlg_Start:
|
||||||
|
// beginning of dialogs label
|
||||||
|
|
||||||
|
Dlg_SdWelcome:
|
||||||
|
nResult = DialogShowSdWelcome();
|
||||||
|
if (nResult = BACK) goto Dlg_Start;
|
||||||
|
|
||||||
|
Dlg_SdShowInfoList:
|
||||||
|
nResult = DialogShowSdShowInfoList();
|
||||||
|
if (nResult = BACK) goto Dlg_SdWelcome;
|
||||||
|
|
||||||
|
Dlg_SdAskDestPath:
|
||||||
|
nResult = DialogShowSdAskDestPath();
|
||||||
|
if (nResult = BACK) goto Dlg_SdShowInfoList;
|
||||||
|
|
||||||
|
Dlg_SdSetupType:
|
||||||
|
nResult = DialogShowSdSetupType();
|
||||||
|
if (nResult = BACK) goto Dlg_SdAskDestPath;
|
||||||
|
|
||||||
|
Dlg_SdComponentDialog2:
|
||||||
|
if ((nResult = BACK) && (svSetupType != "Custom") && (svSetupType != "")) then
|
||||||
|
goto Dlg_SdSetupType;
|
||||||
|
endif;
|
||||||
|
nResult = DialogShowSdComponentDialog2();
|
||||||
|
if (nResult = BACK) goto Dlg_SdSetupType;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: ProcessBeforeDataMove //
|
||||||
|
// //
|
||||||
|
// Purpose: This function performs any necessary operations prior to the //
|
||||||
|
// actual data move operation. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function ProcessBeforeDataMove()
|
||||||
|
STRING svLogFile;
|
||||||
|
NUMBER nResult;
|
||||||
|
begin
|
||||||
|
|
||||||
|
InstallationInfo( @COMPANY_NAME, @PRODUCT_NAME, @PRODUCT_VERSION, @PRODUCT_KEY );
|
||||||
|
|
||||||
|
svLogFile = UNINST_LOGFILE_NAME;
|
||||||
|
|
||||||
|
nResult = DeinstallStart( svDir, svLogFile, @UNINST_KEY, 0 );
|
||||||
|
if (nResult < 0) then
|
||||||
|
MessageBox( @ERROR_UNINSTSETUP, WARNING );
|
||||||
|
endif;
|
||||||
|
|
||||||
|
szAppPath = TARGETDIR; // TODO : if your application .exe is in a subdir of TARGETDIR then add subdir
|
||||||
|
|
||||||
|
if ((bIs32BitSetup) && (bIsShellExplorer)) then
|
||||||
|
RegDBSetItem( REGDB_APPPATH, szAppPath );
|
||||||
|
RegDBSetItem( REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY );
|
||||||
|
RegDBSetItem( REGDB_UNINSTALL_NAME, @UNINST_DISPLAY_NAME );
|
||||||
|
endif;
|
||||||
|
|
||||||
|
// TODO : update any items you want to process before moving the data
|
||||||
|
//
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: MoveFileData //
|
||||||
|
// //
|
||||||
|
// Purpose: This function handles the data movement for //
|
||||||
|
// the setup. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function MoveFileData()
|
||||||
|
NUMBER nResult, nDisk;
|
||||||
|
begin
|
||||||
|
|
||||||
|
nDisk = 1;
|
||||||
|
SetStatusWindow( 0, "" );
|
||||||
|
Disable( DIALOGCACHE );
|
||||||
|
Enable( STATUS );
|
||||||
|
StatusUpdate( ON, 100 );
|
||||||
|
nResult = ComponentMoveData( MEDIA, nDisk, 0 );
|
||||||
|
|
||||||
|
HandleMoveDataError( nResult );
|
||||||
|
|
||||||
|
Disable( STATUS );
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: HandleMoveDataError //
|
||||||
|
// //
|
||||||
|
// Purpose: This function handles the error (if any) during the move data //
|
||||||
|
// operation. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function HandleMoveDataError( nResult )
|
||||||
|
STRING szErrMsg, svComponent , svFileGroup , svFile;
|
||||||
|
begin
|
||||||
|
|
||||||
|
svComponent = "";
|
||||||
|
svFileGroup = "";
|
||||||
|
svFile = "";
|
||||||
|
|
||||||
|
switch (nResult)
|
||||||
|
case 0:
|
||||||
|
return 0;
|
||||||
|
default:
|
||||||
|
ComponentError ( MEDIA , svComponent , svFileGroup , svFile , nResult );
|
||||||
|
szErrMsg = @ERROR_MOVEDATA + "\n\n" +
|
||||||
|
@ERROR_COMPONENT + " " + svComponent + "\n" +
|
||||||
|
@ERROR_FILEGROUP + " " + svFileGroup + "\n" +
|
||||||
|
@ERROR_FILE + " " + svFile;
|
||||||
|
SprintfBox( SEVERE, @TITLE_CAPTIONBAR, szErrMsg, nResult );
|
||||||
|
bInstallAborted = TRUE;
|
||||||
|
return nResult;
|
||||||
|
endswitch;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: ProcessAfterDataMove //
|
||||||
|
// //
|
||||||
|
// Purpose: This function performs any necessary operations needed after //
|
||||||
|
// all data has been moved. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function ProcessAfterDataMove()
|
||||||
|
begin
|
||||||
|
|
||||||
|
// TODO : update self-registered files and other processes that
|
||||||
|
// should be performed after the data has been moved.
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: SetupRegistry //
|
||||||
|
// //
|
||||||
|
// Purpose: This function makes the registry entries for this setup. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function SetupRegistry()
|
||||||
|
NUMBER nResult;
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
// TODO : Add all your registry entry keys here
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// RegDBCreateKeyEx, RegDBSetKeyValueEx....
|
||||||
|
//
|
||||||
|
|
||||||
|
nResult = CreateRegistrySet( "" );
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Function: SetupFolders
|
||||||
|
//
|
||||||
|
// Purpose: This function creates all the folders and shortcuts for the
|
||||||
|
// setup. This includes program groups and items for Windows 3.1.
|
||||||
|
//
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function SetupFolders()
|
||||||
|
NUMBER nResult;
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
|
||||||
|
// TODO : Add all your folder (program group) along with shortcuts (program items)
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// CreateProgramFolder, AddFolderIcon....
|
||||||
|
//
|
||||||
|
|
||||||
|
nResult = CreateShellObjects( "" );
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: CleanUpInstall //
|
||||||
|
// //
|
||||||
|
// Purpose: This cleans up the setup. Anything that should //
|
||||||
|
// be released or deleted at the end of the setup should //
|
||||||
|
// be done here. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function CleanUpInstall()
|
||||||
|
begin
|
||||||
|
|
||||||
|
|
||||||
|
if (bInstallAborted) then
|
||||||
|
return 0;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
DialogShowSdFinishReboot();
|
||||||
|
|
||||||
|
if (BATCH_INSTALL) then // ensure locked files are properly written
|
||||||
|
CommitSharedFiles(0);
|
||||||
|
endif;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: SetupInstall //
|
||||||
|
// //
|
||||||
|
// Purpose: This will setup the installation. Any general initialization //
|
||||||
|
// needed for the installation should be performed here. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function SetupInstall()
|
||||||
|
begin
|
||||||
|
|
||||||
|
Enable( CORECOMPONENTHANDLING );
|
||||||
|
|
||||||
|
bInstallAborted = FALSE;
|
||||||
|
|
||||||
|
if (bIs32BitSetup) then
|
||||||
|
svDir = "C:\\mysql"; //PROGRAMFILES ^ @COMPANY_NAME ^ @PRODUCT_NAME;
|
||||||
|
else
|
||||||
|
svDir = "C:\\mysql"; //PROGRAMFILES ^ @COMPANY_NAME16 ^ @PRODUCT_NAME16; // use shorten names
|
||||||
|
endif;
|
||||||
|
|
||||||
|
TARGETDIR = svDir;
|
||||||
|
|
||||||
|
SdProductName( @PRODUCT_NAME );
|
||||||
|
|
||||||
|
Enable( DIALOGCACHE );
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: SetupScreen //
|
||||||
|
// //
|
||||||
|
// Purpose: This function establishes the screen look. This includes //
|
||||||
|
// colors, fonts, and text to be displayed. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function SetupScreen()
|
||||||
|
begin
|
||||||
|
|
||||||
|
Enable( FULLWINDOWMODE );
|
||||||
|
Enable( INDVFILESTATUS );
|
||||||
|
SetTitle( @TITLE_MAIN, 24, WHITE );
|
||||||
|
|
||||||
|
SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION ); // Caption bar text.
|
||||||
|
|
||||||
|
Enable( BACKGROUND );
|
||||||
|
|
||||||
|
Delay( 1 );
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: CheckRequirements //
|
||||||
|
// //
|
||||||
|
// Purpose: This function checks all minimum requirements for the //
|
||||||
|
// application being installed. If any fail, then the user //
|
||||||
|
// is informed and the setup is terminated. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function CheckRequirements()
|
||||||
|
NUMBER nvDx, nvDy, nvResult;
|
||||||
|
STRING svResult;
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
bWinNT = FALSE;
|
||||||
|
bIsShellExplorer = FALSE;
|
||||||
|
|
||||||
|
// Check screen resolution.
|
||||||
|
GetExtents( nvDx, nvDy );
|
||||||
|
|
||||||
|
if (nvDy < 480) then
|
||||||
|
MessageBox( @ERROR_VGARESOLUTION, WARNING );
|
||||||
|
abort;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
// set 'setup' operation mode
|
||||||
|
bIs32BitSetup = TRUE;
|
||||||
|
GetSystemInfo( ISTYPE, nvResult, svResult );
|
||||||
|
if (nvResult = 16) then
|
||||||
|
bIs32BitSetup = FALSE; // running 16-bit setup
|
||||||
|
return 0; // no additional information required
|
||||||
|
endif;
|
||||||
|
|
||||||
|
// --- 32-bit testing after this point ---
|
||||||
|
|
||||||
|
// Determine the target system's operating system.
|
||||||
|
GetSystemInfo( OS, nvResult, svResult );
|
||||||
|
|
||||||
|
if (nvResult = IS_WINDOWSNT) then
|
||||||
|
// Running Windows NT.
|
||||||
|
bWinNT = TRUE;
|
||||||
|
|
||||||
|
// Check to see if the shell being used is EXPLORER shell.
|
||||||
|
if (GetSystemInfo( OSMAJOR, nvResult, svResult ) = 0) then
|
||||||
|
if (nvResult >= 4) then
|
||||||
|
bIsShellExplorer = TRUE;
|
||||||
|
endif;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
elseif (nvResult = IS_WINDOWS95 ) then
|
||||||
|
bIsShellExplorer = TRUE;
|
||||||
|
|
||||||
|
endif;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: DialogShowSdWelcome //
|
||||||
|
// //
|
||||||
|
// Purpose: This function handles the standard welcome dialog. //
|
||||||
|
// //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function DialogShowSdWelcome()
|
||||||
|
NUMBER nResult;
|
||||||
|
STRING szTitle, szMsg;
|
||||||
|
begin
|
||||||
|
|
||||||
|
szTitle = "";
|
||||||
|
szMsg = "";
|
||||||
|
nResult = SdWelcome( szTitle, szMsg );
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: DialogShowSdShowInfoList //
|
||||||
|
// //
|
||||||
|
// Purpose: This function displays the general information list dialog. //
|
||||||
|
// //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function DialogShowSdShowInfoList()
|
||||||
|
NUMBER nResult;
|
||||||
|
LIST list;
|
||||||
|
STRING szTitle, szMsg, szFile;
|
||||||
|
begin
|
||||||
|
|
||||||
|
szFile = SUPPORTDIR ^ "infolist.txt";
|
||||||
|
|
||||||
|
list = ListCreate( STRINGLIST );
|
||||||
|
ListReadFromFile( list, szFile );
|
||||||
|
szTitle = "";
|
||||||
|
szMsg = " ";
|
||||||
|
nResult = SdShowInfoList( szTitle, szMsg, list );
|
||||||
|
|
||||||
|
ListDestroy( list );
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: DialogShowSdAskDestPath //
|
||||||
|
// //
|
||||||
|
// Purpose: This function asks the user for the destination directory. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function DialogShowSdAskDestPath()
|
||||||
|
NUMBER nResult;
|
||||||
|
STRING szTitle, szMsg;
|
||||||
|
begin
|
||||||
|
|
||||||
|
szTitle = "";
|
||||||
|
szMsg = "";
|
||||||
|
nResult = SdAskDestPath( szTitle, szMsg, svDir, 0 );
|
||||||
|
|
||||||
|
TARGETDIR = svDir;
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: DialogShowSdSetupType //
|
||||||
|
// //
|
||||||
|
// Purpose: This function displays the standard setup type dialog. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function DialogShowSdSetupType()
|
||||||
|
NUMBER nResult, nType;
|
||||||
|
STRING szTitle, szMsg;
|
||||||
|
begin
|
||||||
|
|
||||||
|
switch (svSetupType)
|
||||||
|
case "Typical":
|
||||||
|
nType = TYPICAL;
|
||||||
|
case "Custom":
|
||||||
|
nType = CUSTOM;
|
||||||
|
case "Compact":
|
||||||
|
nType = COMPACT;
|
||||||
|
case "":
|
||||||
|
svSetupType = "Typical";
|
||||||
|
nType = TYPICAL;
|
||||||
|
endswitch;
|
||||||
|
|
||||||
|
szTitle = "";
|
||||||
|
szMsg = "";
|
||||||
|
nResult = SetupType( szTitle, szMsg, "", nType, 0 );
|
||||||
|
|
||||||
|
switch (nResult)
|
||||||
|
case COMPACT:
|
||||||
|
svSetupType = "Compact";
|
||||||
|
case TYPICAL:
|
||||||
|
svSetupType = "Typical";
|
||||||
|
case CUSTOM:
|
||||||
|
svSetupType = "Custom";
|
||||||
|
endswitch;
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: DialogShowSdComponentDialog2 //
|
||||||
|
// //
|
||||||
|
// Purpose: This function displays the custom component dialog. //
|
||||||
|
// //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function DialogShowSdComponentDialog2()
|
||||||
|
NUMBER nResult;
|
||||||
|
STRING szTitle, szMsg;
|
||||||
|
begin
|
||||||
|
|
||||||
|
if ((svSetupType != "Custom") && (svSetupType != "")) then
|
||||||
|
return 0;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
szTitle = "";
|
||||||
|
szMsg = "";
|
||||||
|
nResult = SdComponentDialog2( szTitle, szMsg, svDir, "" );
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: DialogShowSdFinishReboot //
|
||||||
|
// //
|
||||||
|
// Purpose: This function will show the last dialog of the product. //
|
||||||
|
// It will allow the user to reboot and/or show some readme text. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function DialogShowSdFinishReboot()
|
||||||
|
NUMBER nResult, nDefOptions;
|
||||||
|
STRING szTitle, szMsg1, szMsg2, szOption1, szOption2;
|
||||||
|
NUMBER bOpt1, bOpt2;
|
||||||
|
begin
|
||||||
|
/*
|
||||||
|
if (!BATCH_INSTALL) then
|
||||||
|
bOpt1 = FALSE;
|
||||||
|
bOpt2 = FALSE;
|
||||||
|
szMsg1 = "";
|
||||||
|
szMsg2 = "";
|
||||||
|
szOption1 = "";
|
||||||
|
szOption2 = "";
|
||||||
|
nResult = SdFinish( szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2 );
|
||||||
|
return 0;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
nDefOptions = SYS_BOOTMACHINE;
|
||||||
|
szTitle = "";
|
||||||
|
szMsg1 = "";
|
||||||
|
szMsg2 = "";
|
||||||
|
nResult = SdFinishReboot( szTitle, szMsg1, nDefOptions, szMsg2, 0 );
|
||||||
|
*/
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// --- include script file section ---
|
||||||
|
|
||||||
|
#include "sddialog.rul"
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
|||||||
|
This is a release of MySQL 3.23.56 for Win32.
|
||||||
|
|
||||||
|
NOTE: If you install MySQL in a folder other than
|
||||||
|
C:\MYSQL or you intend to start MySQL on NT/Win2000
|
||||||
|
as a service, you must create a file named C:\MY.CNF
|
||||||
|
or \Windows\my.ini or \winnt\my.ini with the following
|
||||||
|
information::
|
||||||
|
|
||||||
|
[mysqld]
|
||||||
|
basedir=E:/installation-path/
|
||||||
|
datadir=E:/data-path/
|
||||||
|
|
||||||
|
After your have installed MySQL, the installation
|
||||||
|
directory which contains the files named 'my-size.cnf'.
|
||||||
|
You can use this as a starting point for your own
|
||||||
|
C:\my.cnf file.
|
||||||
|
|
||||||
|
If you have any problems, you can mail them to
|
||||||
|
win32@lists.mysql.com after you have consulted the
|
||||||
|
MySQL manual and the MySQL mailing list archive
|
||||||
|
(http://www.mysql.com/documentation/index.html)
|
||||||
|
|
||||||
|
On behalf of the MySQL AB gang,
|
||||||
|
Michael Widenius
|
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
@ -0,0 +1,12 @@
|
|||||||
|
[Data]
|
||||||
|
Folder3=<FOLDER_STARTUP>
|
||||||
|
Group0=Main
|
||||||
|
Group1=Startup
|
||||||
|
Folder0=<FOLDER_DESKTOP>
|
||||||
|
Folder1=<FOLDER_STARTMENU>
|
||||||
|
Folder2=<FOLDER_PROGRAMS>
|
||||||
|
|
||||||
|
[Info]
|
||||||
|
Type=ShellObject
|
||||||
|
Version=1.00.000
|
||||||
|
|
@ -0,0 +1,23 @@
|
|||||||
|
[Data]
|
||||||
|
TITLE_MAIN=MySQL Servers and Clients 3.23.56
|
||||||
|
COMPANY_NAME=MySQL AB
|
||||||
|
ERROR_COMPONENT=Component:
|
||||||
|
COMPANY_NAME16=Company
|
||||||
|
PRODUCT_VERSION=3.23.56
|
||||||
|
ERROR_MOVEDATA=An error occurred during the move data process: %d
|
||||||
|
ERROR_FILEGROUP=File Group:
|
||||||
|
UNINST_KEY=MySQL Servers and Clients 3.23.56
|
||||||
|
TITLE_CAPTIONBAR=MySQL Servers and Clients 3.23.56 Setup
|
||||||
|
PRODUCT_NAME16=Product
|
||||||
|
ERROR_VGARESOLUTION=This program requires VGA or better resolution.
|
||||||
|
ERROR_FILE=File:
|
||||||
|
UNINST_DISPLAY_NAME=MySQL Servers and Clients 3.23.56
|
||||||
|
PRODUCT_KEY=yourapp.Exe
|
||||||
|
PRODUCT_NAME=MySQL Servers and Clients 3.23.56
|
||||||
|
ERROR_UNINSTSETUP=unInstaller setup failed to initialize. You may not be able to uninstall this product.
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Language=0009
|
||||||
|
Type=STRINGTABLESPECIFIC
|
||||||
|
Version=1.00.000
|
||||||
|
|
@ -0,0 +1,74 @@
|
|||||||
|
[TITLE_MAIN]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[COMPANY_NAME]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[ERROR_COMPONENT]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[COMPANY_NAME16]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[PRODUCT_VERSION]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[ERROR_MOVEDATA]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[ERROR_FILEGROUP]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[Language]
|
||||||
|
Lang0=0009
|
||||||
|
CurrentLang=0
|
||||||
|
|
||||||
|
[UNINST_KEY]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[TITLE_CAPTIONBAR]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[Data]
|
||||||
|
Entry0=ERROR_VGARESOLUTION
|
||||||
|
Entry1=TITLE_MAIN
|
||||||
|
Entry2=TITLE_CAPTIONBAR
|
||||||
|
Entry3=UNINST_KEY
|
||||||
|
Entry4=UNINST_DISPLAY_NAME
|
||||||
|
Entry5=COMPANY_NAME
|
||||||
|
Entry6=PRODUCT_NAME
|
||||||
|
Entry7=PRODUCT_VERSION
|
||||||
|
Entry8=PRODUCT_KEY
|
||||||
|
Entry9=ERROR_MOVEDATA
|
||||||
|
Entry10=ERROR_UNINSTSETUP
|
||||||
|
Entry11=COMPANY_NAME16
|
||||||
|
Entry12=PRODUCT_NAME16
|
||||||
|
Entry13=ERROR_COMPONENT
|
||||||
|
Entry14=ERROR_FILEGROUP
|
||||||
|
Entry15=ERROR_FILE
|
||||||
|
|
||||||
|
[PRODUCT_NAME16]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[ERROR_VGARESOLUTION]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[ERROR_FILE]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=STRINGTABLE
|
||||||
|
Version=1.00.000
|
||||||
|
|
||||||
|
[UNINST_DISPLAY_NAME]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[PRODUCT_KEY]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[PRODUCT_NAME]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[ERROR_UNINSTSETUP]
|
||||||
|
Comment=
|
||||||
|
|
@ -0,0 +1,56 @@
|
|||||||
|
[<HKUS>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<HKCR>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<PROGRAMFILES>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<WINSYSDIR>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<COMMONFILES>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<WINDIR>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[Data]
|
||||||
|
Key0=<PROGRAMFILES>
|
||||||
|
Key1=<COMMONFILES>
|
||||||
|
Key2=<WINDIR>
|
||||||
|
Key3=<WINSYSDIR>
|
||||||
|
Key4=<HKLM>
|
||||||
|
Key5=<HKCU>
|
||||||
|
Key6=<HKCC>
|
||||||
|
Key7=<HKDD>
|
||||||
|
Key8=<HKUS>
|
||||||
|
Key9=<HKCR>
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=TEXTSUB
|
||||||
|
Version=1.00.000
|
||||||
|
|
||||||
|
[<HKLM>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<HKCU>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<HKCC>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<HKDD>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
@ -0,0 +1,76 @@
|
|||||||
|
[<SRCDIR>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<HKUS>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<HKCR>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<PROGRAMFILES>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<TARGETDIR>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<WINSYSDIR>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<COMMONFILES>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<WINDIR>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[Data]
|
||||||
|
Key0=<PROGRAMFILES>
|
||||||
|
Key1=<COMMONFILES>
|
||||||
|
Key2=<WINDIR>
|
||||||
|
Key3=<WINSYSDIR>
|
||||||
|
Key4=<TARGETDIR>
|
||||||
|
Key5=<SUPPORTDIR>
|
||||||
|
Key10=<HKDD>
|
||||||
|
Key6=<SRCDIR>
|
||||||
|
Key11=<HKUS>
|
||||||
|
Key7=<HKLM>
|
||||||
|
Key12=<HKCR>
|
||||||
|
Key8=<HKCU>
|
||||||
|
Key13=<SHELL_OBJECT_FOLDER>
|
||||||
|
Key9=<HKCC>
|
||||||
|
|
||||||
|
[<SUPPORTDIR>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<SHELL_OBJECT_FOLDER>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=TEXTSUB
|
||||||
|
Version=1.00.000
|
||||||
|
|
||||||
|
[<HKLM>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<HKCU>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<HKCC>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
||||||
|
[<HKDD>]
|
||||||
|
Value=
|
||||||
|
KeyType=4
|
||||||
|
|
@ -0,0 +1,37 @@
|
|||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
||||||
|
[topdir]
|
||||||
|
subdir0=<WINDIR>
|
||||||
|
subdir1=<PROGRAMFILES>
|
||||||
|
subdir2=<TARGETDIR>
|
||||||
|
subdir3=USERDEFINED
|
||||||
|
|
||||||
|
[<WINDIR>]
|
||||||
|
DISPLAYTEXT=Windows Operating System
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
subdir0=<WINDIR>\<WINSYSDIR>
|
||||||
|
|
||||||
|
[<WINDIR>\<WINSYSDIR>]
|
||||||
|
DISPLAYTEXT=Windows System Folder
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
|
||||||
|
[<PROGRAMFILES>]
|
||||||
|
DISPLAYTEXT=Program Files Folder
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
subdir0=<PROGRAMFILES>\<COMMONFILES>
|
||||||
|
|
||||||
|
[<PROGRAMFILES>\<COMMONFILES>]
|
||||||
|
DISPLAYTEXT=Common Files Folder
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
|
||||||
|
[<TARGETDIR>]
|
||||||
|
DISPLAYTEXT=General Application Destination
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
|
||||||
|
[USERDEFINED]
|
||||||
|
DISPLAYTEXT=Script-defined Folders
|
||||||
|
TYPE=USERSTART
|
||||||
|
|
||||||
|
|
@ -0,0 +1,192 @@
|
|||||||
|
[Development]
|
||||||
|
required0=Servers
|
||||||
|
SELECTED=Yes
|
||||||
|
FILENEED=STANDARD
|
||||||
|
required1=Grant Tables
|
||||||
|
HTTPLOCATION=
|
||||||
|
STATUS=Examples, Libraries, Includes and Script files
|
||||||
|
UNINSTALLABLE=Yes
|
||||||
|
TARGET=<TARGETDIR>
|
||||||
|
FTPLOCATION=
|
||||||
|
VISIBLE=Yes
|
||||||
|
DESCRIPTION=Examples, Libraries, Includes and Script files
|
||||||
|
DISPLAYTEXT=Examples, Libraries, Includes and Script files
|
||||||
|
IMAGE=
|
||||||
|
DEFSELECTION=Yes
|
||||||
|
filegroup0=Development
|
||||||
|
COMMENT=
|
||||||
|
INCLUDEINBUILD=Yes
|
||||||
|
INSTALLATION=ALWAYSOVERWRITE
|
||||||
|
COMPRESSIFSEPARATE=No
|
||||||
|
MISC=
|
||||||
|
ENCRYPT=No
|
||||||
|
DISK=ANYDISK
|
||||||
|
TARGETDIRCDROM=
|
||||||
|
PASSWORD=
|
||||||
|
TARGETHIDDEN=General Application Destination
|
||||||
|
|
||||||
|
[Grant Tables]
|
||||||
|
required0=Servers
|
||||||
|
SELECTED=Yes
|
||||||
|
FILENEED=CRITICAL
|
||||||
|
HTTPLOCATION=
|
||||||
|
STATUS=The Grant Tables and Core Files
|
||||||
|
UNINSTALLABLE=Yes
|
||||||
|
TARGET=<TARGETDIR>
|
||||||
|
FTPLOCATION=
|
||||||
|
VISIBLE=Yes
|
||||||
|
DESCRIPTION=The Grant Tables and Core Files
|
||||||
|
DISPLAYTEXT=The Grant Tables and Core Files
|
||||||
|
IMAGE=
|
||||||
|
DEFSELECTION=Yes
|
||||||
|
filegroup0=Grant Tables
|
||||||
|
requiredby0=Development
|
||||||
|
COMMENT=
|
||||||
|
INCLUDEINBUILD=Yes
|
||||||
|
requiredby1=Clients and Tools
|
||||||
|
INSTALLATION=NEVEROVERWRITE
|
||||||
|
requiredby2=Documentation
|
||||||
|
COMPRESSIFSEPARATE=No
|
||||||
|
MISC=
|
||||||
|
ENCRYPT=No
|
||||||
|
DISK=ANYDISK
|
||||||
|
TARGETDIRCDROM=
|
||||||
|
PASSWORD=
|
||||||
|
TARGETHIDDEN=General Application Destination
|
||||||
|
|
||||||
|
[Components]
|
||||||
|
component0=Development
|
||||||
|
component1=Grant Tables
|
||||||
|
component2=Clients and Tools
|
||||||
|
component3=Servers
|
||||||
|
component4=Documentation
|
||||||
|
|
||||||
|
[TopComponents]
|
||||||
|
component0=Servers
|
||||||
|
component1=Clients and Tools
|
||||||
|
component2=Documentation
|
||||||
|
component3=Development
|
||||||
|
component4=Grant Tables
|
||||||
|
|
||||||
|
[SetupType]
|
||||||
|
setuptype0=Compact
|
||||||
|
setuptype1=Typical
|
||||||
|
setuptype2=Custom
|
||||||
|
|
||||||
|
[Servers]
|
||||||
|
SELECTED=Yes
|
||||||
|
FILENEED=CRITICAL
|
||||||
|
HTTPLOCATION=
|
||||||
|
STATUS=The MySQL Servers
|
||||||
|
UNINSTALLABLE=Yes
|
||||||
|
TARGET=<TARGETDIR>
|
||||||
|
FTPLOCATION=
|
||||||
|
VISIBLE=Yes
|
||||||
|
DESCRIPTION=The MySQL Servers
|
||||||
|
DISPLAYTEXT=The MySQL Servers
|
||||||
|
IMAGE=
|
||||||
|
DEFSELECTION=Yes
|
||||||
|
filegroup0=Servers
|
||||||
|
requiredby0=Development
|
||||||
|
COMMENT=
|
||||||
|
INCLUDEINBUILD=Yes
|
||||||
|
requiredby1=Grant Tables
|
||||||
|
INSTALLATION=ALWAYSOVERWRITE
|
||||||
|
requiredby2=Clients and Tools
|
||||||
|
requiredby3=Documentation
|
||||||
|
COMPRESSIFSEPARATE=No
|
||||||
|
MISC=
|
||||||
|
ENCRYPT=No
|
||||||
|
DISK=ANYDISK
|
||||||
|
TARGETDIRCDROM=
|
||||||
|
PASSWORD=
|
||||||
|
TARGETHIDDEN=General Application Destination
|
||||||
|
|
||||||
|
[Clients and Tools]
|
||||||
|
required0=Servers
|
||||||
|
SELECTED=Yes
|
||||||
|
FILENEED=HIGHLYRECOMMENDED
|
||||||
|
required1=Grant Tables
|
||||||
|
HTTPLOCATION=
|
||||||
|
STATUS=The MySQL clients and Maintenance Tools
|
||||||
|
UNINSTALLABLE=Yes
|
||||||
|
TARGET=<TARGETDIR>
|
||||||
|
FTPLOCATION=
|
||||||
|
VISIBLE=Yes
|
||||||
|
DESCRIPTION=The MySQL clients and Maintenance Tools
|
||||||
|
DISPLAYTEXT=The MySQL clients and Maintenance Tools
|
||||||
|
IMAGE=
|
||||||
|
DEFSELECTION=Yes
|
||||||
|
filegroup0=Clients and Tools
|
||||||
|
COMMENT=
|
||||||
|
INCLUDEINBUILD=Yes
|
||||||
|
INSTALLATION=NEWERDATE
|
||||||
|
COMPRESSIFSEPARATE=No
|
||||||
|
MISC=
|
||||||
|
ENCRYPT=No
|
||||||
|
DISK=ANYDISK
|
||||||
|
TARGETDIRCDROM=
|
||||||
|
PASSWORD=
|
||||||
|
TARGETHIDDEN=General Application Destination
|
||||||
|
|
||||||
|
[SetupTypeItem-Compact]
|
||||||
|
Comment=
|
||||||
|
item0=Grant Tables
|
||||||
|
item1=Clients and Tools
|
||||||
|
item2=Servers
|
||||||
|
item3=Documentation
|
||||||
|
Descrip=
|
||||||
|
DisplayText=
|
||||||
|
|
||||||
|
[SetupTypeItem-Custom]
|
||||||
|
Comment=
|
||||||
|
item0=Development
|
||||||
|
item1=Grant Tables
|
||||||
|
item2=Clients and Tools
|
||||||
|
item3=Servers
|
||||||
|
Descrip=
|
||||||
|
item4=Documentation
|
||||||
|
DisplayText=
|
||||||
|
|
||||||
|
[Info]
|
||||||
|
Type=CompDef
|
||||||
|
Version=1.00.000
|
||||||
|
Name=
|
||||||
|
|
||||||
|
[SetupTypeItem-Typical]
|
||||||
|
Comment=
|
||||||
|
item0=Development
|
||||||
|
item1=Grant Tables
|
||||||
|
item2=Clients and Tools
|
||||||
|
item3=Servers
|
||||||
|
Descrip=
|
||||||
|
item4=Documentation
|
||||||
|
DisplayText=
|
||||||
|
|
||||||
|
[Documentation]
|
||||||
|
required0=Servers
|
||||||
|
SELECTED=Yes
|
||||||
|
FILENEED=HIGHLYRECOMMENDED
|
||||||
|
required1=Grant Tables
|
||||||
|
HTTPLOCATION=
|
||||||
|
STATUS=The MySQL Documentation with different formats
|
||||||
|
UNINSTALLABLE=Yes
|
||||||
|
TARGET=<TARGETDIR>
|
||||||
|
FTPLOCATION=
|
||||||
|
VISIBLE=Yes
|
||||||
|
DESCRIPTION=The MySQL Documentation with different formats
|
||||||
|
DISPLAYTEXT=The MySQL Documentation with different formats
|
||||||
|
IMAGE=
|
||||||
|
DEFSELECTION=Yes
|
||||||
|
filegroup0=Documentation
|
||||||
|
COMMENT=
|
||||||
|
INCLUDEINBUILD=Yes
|
||||||
|
INSTALLATION=ALWAYSOVERWRITE
|
||||||
|
COMPRESSIFSEPARATE=No
|
||||||
|
MISC=
|
||||||
|
ENCRYPT=No
|
||||||
|
DISK=ANYDISK
|
||||||
|
TARGETDIRCDROM=
|
||||||
|
PASSWORD=
|
||||||
|
TARGETHIDDEN=General Application Destination
|
||||||
|
|
@ -0,0 +1,42 @@
|
|||||||
|
[<PROGRAMFILES>\<COMMONFILES>]
|
||||||
|
DISPLAYTEXT=Common Files Folder
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[<WINDIR>\<WINSYSDIR>]
|
||||||
|
DISPLAYTEXT=Windows System Folder
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[USERDEFINED]
|
||||||
|
DISPLAYTEXT=Script-defined Folders
|
||||||
|
TYPE=USERSTART
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[<PROGRAMFILES>]
|
||||||
|
DISPLAYTEXT=Program Files Folder
|
||||||
|
SubDir0=<PROGRAMFILES>\<COMMONFILES>
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[<TARGETDIR>]
|
||||||
|
DISPLAYTEXT=General Application Destination
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[<WINDIR>]
|
||||||
|
DISPLAYTEXT=Windows Operating System
|
||||||
|
SubDir0=<WINDIR>\<WINSYSDIR>
|
||||||
|
TYPE=TEXTSUBFIXED
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[TopDir]
|
||||||
|
SubDir0=<WINDIR>
|
||||||
|
SubDir1=<PROGRAMFILES>
|
||||||
|
SubDir2=<TARGETDIR>
|
||||||
|
SubDir3=USERDEFINED
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
@ -0,0 +1,35 @@
|
|||||||
|
[bin]
|
||||||
|
file15=C:\mysql\bin\pack_isam.exe
|
||||||
|
file16=C:\mysql\bin\perror.exe
|
||||||
|
file0=C:\mysql\bin\isamchk.exe
|
||||||
|
file17=C:\mysql\bin\replace.exe
|
||||||
|
file1=C:\mysql\bin\myisamchk.exe
|
||||||
|
file18=C:\mysql\bin\winmysqladmin.cnt
|
||||||
|
file2=C:\mysql\bin\myisamlog.exe
|
||||||
|
file19=C:\mysql\bin\winmysqladmin.exe
|
||||||
|
file3=C:\mysql\bin\myisampack.exe
|
||||||
|
file4=C:\mysql\bin\mysql.exe
|
||||||
|
file5=C:\mysql\bin\mysqladmin.exe
|
||||||
|
file6=C:\mysql\bin\mysqlbinlog.exe
|
||||||
|
file7=C:\mysql\bin\mysqlc.exe
|
||||||
|
file8=C:\mysql\bin\mysqlcheck.exe
|
||||||
|
file9=C:\mysql\bin\mysqldump.exe
|
||||||
|
file20=C:\mysql\bin\WINMYSQLADMIN.HLP
|
||||||
|
file21=C:\mysql\bin\cygwinb19.dll
|
||||||
|
file10=C:\mysql\bin\mysqlimport.exe
|
||||||
|
fulldirectory=
|
||||||
|
file22=C:\mysql\bin\libmySQL.dll
|
||||||
|
file11=C:\mysql\bin\MySqlManager.exe
|
||||||
|
file23=C:\mysql\bin\my_print_defaults.exe
|
||||||
|
file12=C:\mysql\bin\mysqlshow.exe
|
||||||
|
file24=C:\mysql\bin\comp-err.exe
|
||||||
|
file13=C:\mysql\bin\mysqlshutdown.exe
|
||||||
|
file14=C:\mysql\bin\mysqlwatch.exe
|
||||||
|
|
||||||
|
[TopDir]
|
||||||
|
SubDir0=bin
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
82
VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fdf
Normal file
82
VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fdf
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
[FileGroups]
|
||||||
|
group0=Development
|
||||||
|
group1=Grant Tables
|
||||||
|
group2=Clients and Tools
|
||||||
|
group3=Servers
|
||||||
|
group4=Documentation
|
||||||
|
|
||||||
|
[Development]
|
||||||
|
SELFREGISTERING=No
|
||||||
|
HTTPLOCATION=
|
||||||
|
LANGUAGE=
|
||||||
|
OPERATINGSYSTEM=
|
||||||
|
FTPLOCATION=
|
||||||
|
FILETYPE=No
|
||||||
|
INFOTYPE=Standard
|
||||||
|
COMMENT=
|
||||||
|
COMPRESS=Yes
|
||||||
|
COMPRESSDLL=
|
||||||
|
POTENTIALLY=No
|
||||||
|
MISC=
|
||||||
|
|
||||||
|
[Grant Tables]
|
||||||
|
SELFREGISTERING=No
|
||||||
|
HTTPLOCATION=
|
||||||
|
LANGUAGE=
|
||||||
|
OPERATINGSYSTEM=
|
||||||
|
FTPLOCATION=
|
||||||
|
FILETYPE=No
|
||||||
|
INFOTYPE=Standard
|
||||||
|
COMMENT=
|
||||||
|
COMPRESS=Yes
|
||||||
|
COMPRESSDLL=
|
||||||
|
POTENTIALLY=No
|
||||||
|
MISC=
|
||||||
|
|
||||||
|
[Servers]
|
||||||
|
SELFREGISTERING=No
|
||||||
|
HTTPLOCATION=
|
||||||
|
LANGUAGE=
|
||||||
|
OPERATINGSYSTEM=
|
||||||
|
FTPLOCATION=
|
||||||
|
FILETYPE=No
|
||||||
|
INFOTYPE=Standard
|
||||||
|
COMMENT=
|
||||||
|
COMPRESS=Yes
|
||||||
|
COMPRESSDLL=
|
||||||
|
POTENTIALLY=No
|
||||||
|
MISC=
|
||||||
|
|
||||||
|
[Clients and Tools]
|
||||||
|
SELFREGISTERING=No
|
||||||
|
HTTPLOCATION=
|
||||||
|
LANGUAGE=
|
||||||
|
OPERATINGSYSTEM=0000000000000000
|
||||||
|
FTPLOCATION=
|
||||||
|
FILETYPE=No
|
||||||
|
INFOTYPE=Standard
|
||||||
|
COMMENT=
|
||||||
|
COMPRESS=Yes
|
||||||
|
COMPRESSDLL=
|
||||||
|
POTENTIALLY=No
|
||||||
|
MISC=
|
||||||
|
|
||||||
|
[Info]
|
||||||
|
Type=FileGrp
|
||||||
|
Version=1.00.000
|
||||||
|
Name=
|
||||||
|
|
||||||
|
[Documentation]
|
||||||
|
SELFREGISTERING=No
|
||||||
|
HTTPLOCATION=
|
||||||
|
LANGUAGE=
|
||||||
|
OPERATINGSYSTEM=
|
||||||
|
FTPLOCATION=
|
||||||
|
FILETYPE=No
|
||||||
|
INFOTYPE=Standard
|
||||||
|
COMMENT=
|
||||||
|
COMPRESS=Yes
|
||||||
|
COMPRESSDLL=
|
||||||
|
POTENTIALLY=No
|
||||||
|
MISC=
|
||||||
|
|
@ -0,0 +1,4 @@
|
|||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
190
VC++Files/InstallShield/3.23.XXcom/File Groups/Development.fgl
Normal file
190
VC++Files/InstallShield/3.23.XXcom/File Groups/Development.fgl
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
[bench\Data\Wisconsin]
|
||||||
|
file0=C:\mysql\bench\Data\Wisconsin\onek.data
|
||||||
|
file1=C:\mysql\bench\Data\Wisconsin\tenk.data
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[lib\debug]
|
||||||
|
file0=C:\mysql\lib\debug\libmySQL.dll
|
||||||
|
file1=C:\mysql\lib\debug\libmySQL.lib
|
||||||
|
file2=C:\mysql\lib\debug\mysqlclient.lib
|
||||||
|
file3=C:\mysql\lib\debug\zlib.lib
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[bench\output]
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[examples\libmysqltest]
|
||||||
|
file0=C:\mysql\examples\libmysqltest\myTest.c
|
||||||
|
file1=C:\mysql\examples\libmysqltest\myTest.dsp
|
||||||
|
file2=C:\mysql\examples\libmysqltest\myTest.dsw
|
||||||
|
file3=C:\mysql\examples\libmysqltest\myTest.exe
|
||||||
|
file4=C:\mysql\examples\libmysqltest\myTest.mak
|
||||||
|
file5=C:\mysql\examples\libmysqltest\myTest.ncb
|
||||||
|
file6=C:\mysql\examples\libmysqltest\myTest.opt
|
||||||
|
file7=C:\mysql\examples\libmysqltest\readme
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[include]
|
||||||
|
file0=C:\mysql\include\raid.h
|
||||||
|
file1=C:\mysql\include\errmsg.h
|
||||||
|
file2=C:\mysql\include\Libmysql.def
|
||||||
|
file3=C:\mysql\include\m_ctype.h
|
||||||
|
file4=C:\mysql\include\m_string.h
|
||||||
|
file5=C:\mysql\include\my_list.h
|
||||||
|
file6=C:\mysql\include\my_pthread.h
|
||||||
|
file7=C:\mysql\include\my_sys.h
|
||||||
|
file8=C:\mysql\include\mysql.h
|
||||||
|
file9=C:\mysql\include\mysql_com.h
|
||||||
|
file10=C:\mysql\include\mysql_version.h
|
||||||
|
fulldirectory=
|
||||||
|
file11=C:\mysql\include\mysqld_error.h
|
||||||
|
file12=C:\mysql\include\dbug.h
|
||||||
|
file13=C:\mysql\include\my_global.h
|
||||||
|
file14=C:\mysql\include\config-win.h
|
||||||
|
|
||||||
|
[examples]
|
||||||
|
SubDir0=examples\libmysqltest
|
||||||
|
SubDir1=examples\tests
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[lib\opt]
|
||||||
|
file0=C:\mysql\lib\opt\libmySQL.dll
|
||||||
|
file1=C:\mysql\lib\opt\libmySQL.lib
|
||||||
|
file2=C:\mysql\lib\opt\mysqlclient.lib
|
||||||
|
file3=C:\mysql\lib\opt\zlib.lib
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[bench\Data]
|
||||||
|
SubDir0=bench\Data\ATIS
|
||||||
|
SubDir1=bench\Data\Wisconsin
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[bench\limits]
|
||||||
|
file15=C:\mysql\bench\limits\pg.comment
|
||||||
|
file16=C:\mysql\bench\limits\solid.cfg
|
||||||
|
file0=C:\mysql\bench\limits\access.cfg
|
||||||
|
file17=C:\mysql\bench\limits\solid-nt4.cfg
|
||||||
|
file1=C:\mysql\bench\limits\access.comment
|
||||||
|
file18=C:\mysql\bench\limits\sybase.cfg
|
||||||
|
file2=C:\mysql\bench\limits\Adabas.cfg
|
||||||
|
file3=C:\mysql\bench\limits\Adabas.comment
|
||||||
|
file4=C:\mysql\bench\limits\Db2.cfg
|
||||||
|
file5=C:\mysql\bench\limits\empress.cfg
|
||||||
|
file6=C:\mysql\bench\limits\empress.comment
|
||||||
|
file7=C:\mysql\bench\limits\Informix.cfg
|
||||||
|
file8=C:\mysql\bench\limits\Informix.comment
|
||||||
|
file9=C:\mysql\bench\limits\msql.cfg
|
||||||
|
file10=C:\mysql\bench\limits\ms-sql.cfg
|
||||||
|
fulldirectory=
|
||||||
|
file11=C:\mysql\bench\limits\Ms-sql65.cfg
|
||||||
|
file12=C:\mysql\bench\limits\mysql.cfg
|
||||||
|
file13=C:\mysql\bench\limits\oracle.cfg
|
||||||
|
file14=C:\mysql\bench\limits\pg.cfg
|
||||||
|
|
||||||
|
[TopDir]
|
||||||
|
SubDir0=bench
|
||||||
|
SubDir1=examples
|
||||||
|
SubDir2=include
|
||||||
|
SubDir3=lib
|
||||||
|
SubDir4=scripts
|
||||||
|
|
||||||
|
[bench]
|
||||||
|
file15=C:\mysql\bench\test-create
|
||||||
|
file16=C:\mysql\bench\test-insert
|
||||||
|
file0=C:\mysql\bench\uname.bat
|
||||||
|
file17=C:\mysql\bench\test-select
|
||||||
|
file1=C:\mysql\bench\compare-results
|
||||||
|
file18=C:\mysql\bench\test-wisconsin
|
||||||
|
file2=C:\mysql\bench\copy-db
|
||||||
|
file19=C:\mysql\bench\bench-init.pl
|
||||||
|
file3=C:\mysql\bench\crash-me
|
||||||
|
file4=C:\mysql\bench\example.bat
|
||||||
|
file5=C:\mysql\bench\print-limit-table
|
||||||
|
file6=C:\mysql\bench\pwd.bat
|
||||||
|
file7=C:\mysql\bench\Readme
|
||||||
|
SubDir0=bench\Data
|
||||||
|
file8=C:\mysql\bench\run.bat
|
||||||
|
SubDir1=bench\limits
|
||||||
|
file9=C:\mysql\bench\run-all-tests
|
||||||
|
SubDir2=bench\output
|
||||||
|
file10=C:\mysql\bench\server-cfg
|
||||||
|
fulldirectory=
|
||||||
|
file11=C:\mysql\bench\test-alter-table
|
||||||
|
file12=C:\mysql\bench\test-ATIS
|
||||||
|
file13=C:\mysql\bench\test-big-tables
|
||||||
|
file14=C:\mysql\bench\test-connect
|
||||||
|
|
||||||
|
[examples\tests]
|
||||||
|
file15=C:\mysql\examples\tests\lock_test.res
|
||||||
|
file16=C:\mysql\examples\tests\mail_to_db.pl
|
||||||
|
file0=C:\mysql\examples\tests\unique_users.tst
|
||||||
|
file17=C:\mysql\examples\tests\table_types.pl
|
||||||
|
file1=C:\mysql\examples\tests\auto_increment.tst
|
||||||
|
file18=C:\mysql\examples\tests\test_delayed_insert.pl
|
||||||
|
file2=C:\mysql\examples\tests\big_record.pl
|
||||||
|
file19=C:\mysql\examples\tests\udf_test
|
||||||
|
file3=C:\mysql\examples\tests\big_record.res
|
||||||
|
file4=C:\mysql\examples\tests\czech-sorting
|
||||||
|
file5=C:\mysql\examples\tests\deadlock-script.pl
|
||||||
|
file6=C:\mysql\examples\tests\export.pl
|
||||||
|
file7=C:\mysql\examples\tests\fork_test.pl
|
||||||
|
file8=C:\mysql\examples\tests\fork2_test.pl
|
||||||
|
file9=C:\mysql\examples\tests\fork3_test.pl
|
||||||
|
file20=C:\mysql\examples\tests\udf_test.res
|
||||||
|
file21=C:\mysql\examples\tests\auto_increment.res
|
||||||
|
file10=C:\mysql\examples\tests\function.res
|
||||||
|
fulldirectory=
|
||||||
|
file11=C:\mysql\examples\tests\function.tst
|
||||||
|
file12=C:\mysql\examples\tests\grant.pl
|
||||||
|
file13=C:\mysql\examples\tests\grant.res
|
||||||
|
file14=C:\mysql\examples\tests\lock_test.pl
|
||||||
|
|
||||||
|
[bench\Data\ATIS]
|
||||||
|
file26=C:\mysql\bench\Data\ATIS\stop1.txt
|
||||||
|
file15=C:\mysql\bench\Data\ATIS\flight_class.txt
|
||||||
|
file27=C:\mysql\bench\Data\ATIS\time_interval.txt
|
||||||
|
file16=C:\mysql\bench\Data\ATIS\flight_day.txt
|
||||||
|
file0=C:\mysql\bench\Data\ATIS\transport.txt
|
||||||
|
file28=C:\mysql\bench\Data\ATIS\time_zone.txt
|
||||||
|
file17=C:\mysql\bench\Data\ATIS\flight_fare.txt
|
||||||
|
file1=C:\mysql\bench\Data\ATIS\airline.txt
|
||||||
|
file29=C:\mysql\bench\Data\ATIS\aircraft.txt
|
||||||
|
file18=C:\mysql\bench\Data\ATIS\food_service.txt
|
||||||
|
file2=C:\mysql\bench\Data\ATIS\airport.txt
|
||||||
|
file19=C:\mysql\bench\Data\ATIS\ground_service.txt
|
||||||
|
file3=C:\mysql\bench\Data\ATIS\airport_service.txt
|
||||||
|
file4=C:\mysql\bench\Data\ATIS\city.txt
|
||||||
|
file5=C:\mysql\bench\Data\ATIS\class_of_service.txt
|
||||||
|
file6=C:\mysql\bench\Data\ATIS\code_description.txt
|
||||||
|
file7=C:\mysql\bench\Data\ATIS\compound_class.txt
|
||||||
|
file8=C:\mysql\bench\Data\ATIS\connect_leg.txt
|
||||||
|
file9=C:\mysql\bench\Data\ATIS\date_day.txt
|
||||||
|
file20=C:\mysql\bench\Data\ATIS\month_name.txt
|
||||||
|
file21=C:\mysql\bench\Data\ATIS\restrict_carrier.txt
|
||||||
|
file10=C:\mysql\bench\Data\ATIS\day_name.txt
|
||||||
|
fulldirectory=
|
||||||
|
file22=C:\mysql\bench\Data\ATIS\restrict_class.txt
|
||||||
|
file11=C:\mysql\bench\Data\ATIS\dual_carrier.txt
|
||||||
|
file23=C:\mysql\bench\Data\ATIS\restriction.txt
|
||||||
|
file12=C:\mysql\bench\Data\ATIS\fare.txt
|
||||||
|
file24=C:\mysql\bench\Data\ATIS\state.txt
|
||||||
|
file13=C:\mysql\bench\Data\ATIS\fconnection.txt
|
||||||
|
file25=C:\mysql\bench\Data\ATIS\stop.txt
|
||||||
|
file14=C:\mysql\bench\Data\ATIS\flight.txt
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
||||||
|
[scripts]
|
||||||
|
file0=C:\mysql\scripts\mysql_find_rows.pl
|
||||||
|
file1=C:\mysql\scripts\mysql_setpermission.pl
|
||||||
|
file2=C:\mysql\scripts\mysqlhotcopy.pl
|
||||||
|
file3=C:\mysql\scripts\Readme
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
SubDir0=lib\debug
|
||||||
|
SubDir1=lib\opt
|
||||||
|
fulldirectory=
|
||||||
|
|
@ -0,0 +1,98 @@
|
|||||||
|
[Docs\Flags]
|
||||||
|
file59=C:\mysql\Docs\Flags\romania.gif
|
||||||
|
file48=C:\mysql\Docs\Flags\kroatia.eps
|
||||||
|
file37=C:\mysql\Docs\Flags\iceland.gif
|
||||||
|
file26=C:\mysql\Docs\Flags\france.eps
|
||||||
|
file15=C:\mysql\Docs\Flags\china.gif
|
||||||
|
file49=C:\mysql\Docs\Flags\kroatia.gif
|
||||||
|
file38=C:\mysql\Docs\Flags\ireland.eps
|
||||||
|
file27=C:\mysql\Docs\Flags\france.gif
|
||||||
|
file16=C:\mysql\Docs\Flags\croatia.eps
|
||||||
|
file0=C:\mysql\Docs\Flags\usa.gif
|
||||||
|
file39=C:\mysql\Docs\Flags\ireland.gif
|
||||||
|
file28=C:\mysql\Docs\Flags\germany.eps
|
||||||
|
file17=C:\mysql\Docs\Flags\croatia.gif
|
||||||
|
file1=C:\mysql\Docs\Flags\argentina.gif
|
||||||
|
file29=C:\mysql\Docs\Flags\germany.gif
|
||||||
|
file18=C:\mysql\Docs\Flags\czech-republic.eps
|
||||||
|
file2=C:\mysql\Docs\Flags\australia.eps
|
||||||
|
file19=C:\mysql\Docs\Flags\czech-republic.gif
|
||||||
|
file3=C:\mysql\Docs\Flags\australia.gif
|
||||||
|
file80=C:\mysql\Docs\Flags\usa.eps
|
||||||
|
file4=C:\mysql\Docs\Flags\austria.eps
|
||||||
|
file81=C:\mysql\Docs\Flags\argentina.eps
|
||||||
|
file70=C:\mysql\Docs\Flags\spain.eps
|
||||||
|
file5=C:\mysql\Docs\Flags\austria.gif
|
||||||
|
file71=C:\mysql\Docs\Flags\spain.gif
|
||||||
|
file60=C:\mysql\Docs\Flags\russia.eps
|
||||||
|
file6=C:\mysql\Docs\Flags\brazil.eps
|
||||||
|
file72=C:\mysql\Docs\Flags\sweden.eps
|
||||||
|
file61=C:\mysql\Docs\Flags\russia.gif
|
||||||
|
file50=C:\mysql\Docs\Flags\latvia.eps
|
||||||
|
file7=C:\mysql\Docs\Flags\brazil.gif
|
||||||
|
file73=C:\mysql\Docs\Flags\sweden.gif
|
||||||
|
file62=C:\mysql\Docs\Flags\singapore.eps
|
||||||
|
file51=C:\mysql\Docs\Flags\latvia.gif
|
||||||
|
file40=C:\mysql\Docs\Flags\island.eps
|
||||||
|
file8=C:\mysql\Docs\Flags\bulgaria.eps
|
||||||
|
file74=C:\mysql\Docs\Flags\switzerland.eps
|
||||||
|
file63=C:\mysql\Docs\Flags\singapore.gif
|
||||||
|
file52=C:\mysql\Docs\Flags\netherlands.eps
|
||||||
|
file41=C:\mysql\Docs\Flags\island.gif
|
||||||
|
file30=C:\mysql\Docs\Flags\great-britain.eps
|
||||||
|
file9=C:\mysql\Docs\Flags\bulgaria.gif
|
||||||
|
file75=C:\mysql\Docs\Flags\switzerland.gif
|
||||||
|
file64=C:\mysql\Docs\Flags\south-africa.eps
|
||||||
|
file53=C:\mysql\Docs\Flags\netherlands.gif
|
||||||
|
file42=C:\mysql\Docs\Flags\israel.eps
|
||||||
|
file31=C:\mysql\Docs\Flags\great-britain.gif
|
||||||
|
file20=C:\mysql\Docs\Flags\denmark.eps
|
||||||
|
file76=C:\mysql\Docs\Flags\taiwan.eps
|
||||||
|
file65=C:\mysql\Docs\Flags\south-africa.gif
|
||||||
|
file54=C:\mysql\Docs\Flags\poland.eps
|
||||||
|
file43=C:\mysql\Docs\Flags\israel.gif
|
||||||
|
file32=C:\mysql\Docs\Flags\greece.eps
|
||||||
|
file21=C:\mysql\Docs\Flags\denmark.gif
|
||||||
|
file10=C:\mysql\Docs\Flags\canada.eps
|
||||||
|
fulldirectory=
|
||||||
|
file77=C:\mysql\Docs\Flags\taiwan.gif
|
||||||
|
file66=C:\mysql\Docs\Flags\south-africa1.eps
|
||||||
|
file55=C:\mysql\Docs\Flags\poland.gif
|
||||||
|
file44=C:\mysql\Docs\Flags\italy.eps
|
||||||
|
file33=C:\mysql\Docs\Flags\greece.gif
|
||||||
|
file22=C:\mysql\Docs\Flags\estonia.eps
|
||||||
|
file11=C:\mysql\Docs\Flags\canada.gif
|
||||||
|
file78=C:\mysql\Docs\Flags\ukraine.eps
|
||||||
|
file67=C:\mysql\Docs\Flags\south-africa1.gif
|
||||||
|
file56=C:\mysql\Docs\Flags\portugal.eps
|
||||||
|
file45=C:\mysql\Docs\Flags\italy.gif
|
||||||
|
file34=C:\mysql\Docs\Flags\hungary.eps
|
||||||
|
file23=C:\mysql\Docs\Flags\estonia.gif
|
||||||
|
file12=C:\mysql\Docs\Flags\chile.eps
|
||||||
|
file79=C:\mysql\Docs\Flags\ukraine.gif
|
||||||
|
file68=C:\mysql\Docs\Flags\south-korea.eps
|
||||||
|
file57=C:\mysql\Docs\Flags\portugal.gif
|
||||||
|
file46=C:\mysql\Docs\Flags\japan.eps
|
||||||
|
file35=C:\mysql\Docs\Flags\hungary.gif
|
||||||
|
file24=C:\mysql\Docs\Flags\finland.eps
|
||||||
|
file13=C:\mysql\Docs\Flags\chile.gif
|
||||||
|
file69=C:\mysql\Docs\Flags\south-korea.gif
|
||||||
|
file58=C:\mysql\Docs\Flags\romania.eps
|
||||||
|
file47=C:\mysql\Docs\Flags\japan.gif
|
||||||
|
file36=C:\mysql\Docs\Flags\iceland.eps
|
||||||
|
file25=C:\mysql\Docs\Flags\finland.gif
|
||||||
|
file14=C:\mysql\Docs\Flags\china.eps
|
||||||
|
|
||||||
|
[Docs]
|
||||||
|
file0=C:\mysql\Docs\manual_toc.html
|
||||||
|
file1=C:\mysql\Docs\manual.html
|
||||||
|
SubDir0=Docs\Flags
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[TopDir]
|
||||||
|
SubDir0=Docs
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
@ -0,0 +1,36 @@
|
|||||||
|
[data\test]
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[data\mysql]
|
||||||
|
file15=C:\mysql\data\mysql\func.frm
|
||||||
|
file16=C:\mysql\data\mysql\func.MYD
|
||||||
|
file0=C:\mysql\data\mysql\columns_priv.frm
|
||||||
|
file17=C:\mysql\data\mysql\func.MYI
|
||||||
|
file1=C:\mysql\data\mysql\columns_priv.MYD
|
||||||
|
file2=C:\mysql\data\mysql\columns_priv.MYI
|
||||||
|
file3=C:\mysql\data\mysql\db.frm
|
||||||
|
file4=C:\mysql\data\mysql\db.MYD
|
||||||
|
file5=C:\mysql\data\mysql\db.MYI
|
||||||
|
file6=C:\mysql\data\mysql\host.frm
|
||||||
|
file7=C:\mysql\data\mysql\host.MYD
|
||||||
|
file8=C:\mysql\data\mysql\host.MYI
|
||||||
|
file9=C:\mysql\data\mysql\tables_priv.frm
|
||||||
|
file10=C:\mysql\data\mysql\tables_priv.MYD
|
||||||
|
fulldirectory=
|
||||||
|
file11=C:\mysql\data\mysql\tables_priv.MYI
|
||||||
|
file12=C:\mysql\data\mysql\user.frm
|
||||||
|
file13=C:\mysql\data\mysql\user.MYD
|
||||||
|
file14=C:\mysql\data\mysql\user.MYI
|
||||||
|
|
||||||
|
[TopDir]
|
||||||
|
SubDir0=data
|
||||||
|
|
||||||
|
[data]
|
||||||
|
SubDir0=data\mysql
|
||||||
|
SubDir1=data\test
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
183
VC++Files/InstallShield/3.23.XXcom/File Groups/Servers.fgl
Normal file
183
VC++Files/InstallShield/3.23.XXcom/File Groups/Servers.fgl
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
[share\polish]
|
||||||
|
file0=C:\mysql\share\polish\errmsg.sys
|
||||||
|
file1=C:\mysql\share\polish\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\dutch]
|
||||||
|
file0=C:\mysql\share\dutch\errmsg.sys
|
||||||
|
file1=C:\mysql\share\dutch\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\spanish]
|
||||||
|
file0=C:\mysql\share\spanish\errmsg.sys
|
||||||
|
file1=C:\mysql\share\spanish\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\english]
|
||||||
|
file0=C:\mysql\share\english\errmsg.sys
|
||||||
|
file1=C:\mysql\share\english\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[bin]
|
||||||
|
file0=C:\mysql\bin\mysqld-opt.exe
|
||||||
|
file1=C:\mysql\bin\mysqld-max.exe
|
||||||
|
file2=C:\mysql\bin\mysqld-max-nt.exe
|
||||||
|
file3=C:\mysql\bin\mysqld-nt.exe
|
||||||
|
file4=C:\mysql\bin\mysqld.exe
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\korean]
|
||||||
|
file0=C:\mysql\share\korean\errmsg.sys
|
||||||
|
file1=C:\mysql\share\korean\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\charsets]
|
||||||
|
file15=C:\mysql\share\charsets\latin1.conf
|
||||||
|
file16=C:\mysql\share\charsets\latin2.conf
|
||||||
|
file0=C:\mysql\share\charsets\win1251ukr.conf
|
||||||
|
file17=C:\mysql\share\charsets\latin5.conf
|
||||||
|
file1=C:\mysql\share\charsets\cp1257.conf
|
||||||
|
file18=C:\mysql\share\charsets\Readme
|
||||||
|
file2=C:\mysql\share\charsets\croat.conf
|
||||||
|
file19=C:\mysql\share\charsets\swe7.conf
|
||||||
|
file3=C:\mysql\share\charsets\danish.conf
|
||||||
|
file4=C:\mysql\share\charsets\dec8.conf
|
||||||
|
file5=C:\mysql\share\charsets\dos.conf
|
||||||
|
file6=C:\mysql\share\charsets\estonia.conf
|
||||||
|
file7=C:\mysql\share\charsets\german1.conf
|
||||||
|
file8=C:\mysql\share\charsets\greek.conf
|
||||||
|
file9=C:\mysql\share\charsets\hebrew.conf
|
||||||
|
file20=C:\mysql\share\charsets\usa7.conf
|
||||||
|
file21=C:\mysql\share\charsets\win1250.conf
|
||||||
|
file10=C:\mysql\share\charsets\hp8.conf
|
||||||
|
fulldirectory=
|
||||||
|
file22=C:\mysql\share\charsets\win1251.conf
|
||||||
|
file11=C:\mysql\share\charsets\hungarian.conf
|
||||||
|
file23=C:\mysql\share\charsets\cp1251.conf
|
||||||
|
file12=C:\mysql\share\charsets\Index
|
||||||
|
file13=C:\mysql\share\charsets\koi8_ru.conf
|
||||||
|
file14=C:\mysql\share\charsets\koi8_ukr.conf
|
||||||
|
|
||||||
|
[share\ukrainian]
|
||||||
|
file0=C:\mysql\share\ukrainian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\ukrainian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\hungarian]
|
||||||
|
file0=C:\mysql\share\hungarian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\hungarian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\german]
|
||||||
|
file0=C:\mysql\share\german\errmsg.sys
|
||||||
|
file1=C:\mysql\share\german\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\portuguese]
|
||||||
|
file0=C:\mysql\share\portuguese\errmsg.sys
|
||||||
|
file1=C:\mysql\share\portuguese\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\estonian]
|
||||||
|
file0=C:\mysql\share\estonian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\estonian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\romanian]
|
||||||
|
file0=C:\mysql\share\romanian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\romanian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\french]
|
||||||
|
file0=C:\mysql\share\french\errmsg.sys
|
||||||
|
file1=C:\mysql\share\french\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\swedish]
|
||||||
|
file0=C:\mysql\share\swedish\errmsg.sys
|
||||||
|
file1=C:\mysql\share\swedish\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\slovak]
|
||||||
|
file0=C:\mysql\share\slovak\errmsg.sys
|
||||||
|
file1=C:\mysql\share\slovak\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\greek]
|
||||||
|
file0=C:\mysql\share\greek\errmsg.sys
|
||||||
|
file1=C:\mysql\share\greek\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[TopDir]
|
||||||
|
file0=C:\mysql\my-small.cnf
|
||||||
|
file1=C:\mysql\my-large.cnf
|
||||||
|
file2=C:\mysql\my-medium.cnf
|
||||||
|
file3=C:\mysql\my-huge.cnf
|
||||||
|
SubDir0=bin
|
||||||
|
SubDir1=share
|
||||||
|
|
||||||
|
[share]
|
||||||
|
SubDir8=share\hungarian
|
||||||
|
SubDir9=share\charsets
|
||||||
|
SubDir20=share\spanish
|
||||||
|
SubDir21=share\swedish
|
||||||
|
SubDir10=share\italian
|
||||||
|
SubDir22=share\ukrainian
|
||||||
|
SubDir11=share\japanese
|
||||||
|
SubDir12=share\korean
|
||||||
|
SubDir13=share\norwegian
|
||||||
|
SubDir14=share\norwegian-ny
|
||||||
|
SubDir15=share\polish
|
||||||
|
SubDir16=share\portuguese
|
||||||
|
SubDir0=share\czech
|
||||||
|
SubDir17=share\romanian
|
||||||
|
SubDir1=share\danish
|
||||||
|
SubDir18=share\russian
|
||||||
|
SubDir2=share\dutch
|
||||||
|
SubDir19=share\slovak
|
||||||
|
SubDir3=share\english
|
||||||
|
fulldirectory=
|
||||||
|
SubDir4=share\estonian
|
||||||
|
SubDir5=share\french
|
||||||
|
SubDir6=share\german
|
||||||
|
SubDir7=share\greek
|
||||||
|
|
||||||
|
[share\norwegian-ny]
|
||||||
|
file0=C:\mysql\share\norwegian-ny\errmsg.sys
|
||||||
|
file1=C:\mysql\share\norwegian-ny\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\danish]
|
||||||
|
file0=C:\mysql\share\danish\errmsg.sys
|
||||||
|
file1=C:\mysql\share\danish\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\czech]
|
||||||
|
file0=C:\mysql\share\czech\errmsg.sys
|
||||||
|
file1=C:\mysql\share\czech\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=FILELIST
|
||||||
|
Version=1.00.000
|
||||||
|
|
||||||
|
[share\russian]
|
||||||
|
file0=C:\mysql\share\russian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\russian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\norwegian]
|
||||||
|
file0=C:\mysql\share\norwegian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\norwegian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\japanese]
|
||||||
|
file0=C:\mysql\share\japanese\errmsg.sys
|
||||||
|
file1=C:\mysql\share\japanese\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
||||||
|
[share\italian]
|
||||||
|
file0=C:\mysql\share\italian\errmsg.sys
|
||||||
|
file1=C:\mysql\share\italian\errmsg.txt
|
||||||
|
fulldirectory=
|
||||||
|
|
51
VC++Files/InstallShield/3.23.XXcom/MySQL 3.23.com.ipr
Normal file
51
VC++Files/InstallShield/3.23.XXcom/MySQL 3.23.com.ipr
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
[Language]
|
||||||
|
LanguageSupport0=0009
|
||||||
|
|
||||||
|
[OperatingSystem]
|
||||||
|
OSSupport=0000000000010010
|
||||||
|
|
||||||
|
[Data]
|
||||||
|
CurrentMedia=
|
||||||
|
set_mifserial=
|
||||||
|
ProductName=MySQL Servers and Clients
|
||||||
|
CurrentComponentDef=Default.cdf
|
||||||
|
set_dlldebug=No
|
||||||
|
AppExe=
|
||||||
|
DevEnvironment=Microsoft Visual C++ 6
|
||||||
|
set_mif=No
|
||||||
|
set_testmode=No
|
||||||
|
Instructions=Instructions.txt
|
||||||
|
EmailAddresss=
|
||||||
|
SummaryText=
|
||||||
|
Department=
|
||||||
|
Type=Database Application
|
||||||
|
Author=
|
||||||
|
HomeURL=
|
||||||
|
InstallRoot=C:\MySQL-Install\3.23.XXcom
|
||||||
|
set_level=Level 3
|
||||||
|
InstallationGUID=40744a4d-efed-4cff-84a9-9e6389550f5c
|
||||||
|
Version=1.00.000
|
||||||
|
set_miffile=Status.mif
|
||||||
|
set_args=
|
||||||
|
set_maxerr=50
|
||||||
|
Notes=Notes.txt
|
||||||
|
CurrentFileGroupDef=Default.fdf
|
||||||
|
set_dllcmdline=
|
||||||
|
set_warnaserr=No
|
||||||
|
Copyright=
|
||||||
|
set_preproc=
|
||||||
|
Category=
|
||||||
|
CurrentPlatform=
|
||||||
|
set_compileb4build=No
|
||||||
|
set_crc=Yes
|
||||||
|
set_maxwarn=50
|
||||||
|
Description=Description.txt
|
||||||
|
CompanyName=MySQL
|
||||||
|
CurrentLanguage=English
|
||||||
|
|
||||||
|
[MediaInfo]
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=INSTALLMAIN
|
||||||
|
Version=1.10.000
|
||||||
|
|
@ -0,0 +1,4 @@
|
|||||||
|
[General]
|
||||||
|
Type=REGISTRYDATA
|
||||||
|
Version=1.00.000
|
||||||
|
|
BIN
VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.dbg
Normal file
BIN
VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.dbg
Normal file
Binary file not shown.
BIN
VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ino
Normal file
BIN
VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ino
Normal file
Binary file not shown.
BIN
VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ins
Normal file
BIN
VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ins
Normal file
Binary file not shown.
BIN
VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.obs
Normal file
BIN
VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.obs
Normal file
Binary file not shown.
641
VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.rul
Normal file
641
VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.rul
Normal file
@ -0,0 +1,641 @@
|
|||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// IIIIIII SSSSSS
|
||||||
|
// II SS InstallShield (R)
|
||||||
|
// II SSSSSS (c) 1996-1997, InstallShield Software Corporation
|
||||||
|
// II SS (c) 1990-1996, InstallShield Corporation
|
||||||
|
// IIIIIII SSSSSS All Rights Reserved.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// This code is generated as a starting setup template. You should
|
||||||
|
// modify it to provide all necessary steps for your setup.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File Name: Setup.rul
|
||||||
|
//
|
||||||
|
// Description: InstallShield script
|
||||||
|
//
|
||||||
|
// Comments: This template script performs a basic setup on a
|
||||||
|
// Windows 95 or Windows NT 4.0 platform. With minor
|
||||||
|
// modifications, this template can be adapted to create
|
||||||
|
// new, customized setups.
|
||||||
|
//
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
// Include header file
|
||||||
|
#include "sdlang.h"
|
||||||
|
#include "sddialog.h"
|
||||||
|
|
||||||
|
////////////////////// string defines ////////////////////////////
|
||||||
|
|
||||||
|
#define UNINST_LOGFILE_NAME "Uninst.isu"
|
||||||
|
|
||||||
|
//////////////////// installation declarations ///////////////////
|
||||||
|
|
||||||
|
// ----- DLL prototypes -----
|
||||||
|
|
||||||
|
|
||||||
|
// your DLL prototypes
|
||||||
|
|
||||||
|
|
||||||
|
// ---- script prototypes -----
|
||||||
|
|
||||||
|
// generated
|
||||||
|
prototype ShowDialogs();
|
||||||
|
prototype MoveFileData();
|
||||||
|
prototype HandleMoveDataError( NUMBER );
|
||||||
|
prototype ProcessBeforeDataMove();
|
||||||
|
prototype ProcessAfterDataMove();
|
||||||
|
prototype SetupRegistry();
|
||||||
|
prototype SetupFolders();
|
||||||
|
prototype CleanUpInstall();
|
||||||
|
prototype SetupInstall();
|
||||||
|
prototype SetupScreen();
|
||||||
|
prototype CheckRequirements();
|
||||||
|
prototype DialogShowSdWelcome();
|
||||||
|
prototype DialogShowSdShowInfoList();
|
||||||
|
prototype DialogShowSdAskDestPath();
|
||||||
|
prototype DialogShowSdSetupType();
|
||||||
|
prototype DialogShowSdComponentDialog2();
|
||||||
|
prototype DialogShowSdFinishReboot();
|
||||||
|
|
||||||
|
// your prototypes
|
||||||
|
|
||||||
|
|
||||||
|
// ----- global variables ------
|
||||||
|
|
||||||
|
// generated
|
||||||
|
BOOL bWinNT, bIsShellExplorer, bInstallAborted, bIs32BitSetup;
|
||||||
|
STRING svDir;
|
||||||
|
STRING svName, svCompany, svSerial;
|
||||||
|
STRING szAppPath;
|
||||||
|
STRING svSetupType;
|
||||||
|
|
||||||
|
|
||||||
|
// your global variables
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// MAIN PROGRAM
|
||||||
|
//
|
||||||
|
// The setup begins here by hiding the visible setup
|
||||||
|
// window. This is done to allow all the titles, images, etc. to
|
||||||
|
// be established before showing the main window. The following
|
||||||
|
// logic then performs the setup in a series of steps.
|
||||||
|
//
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
program
|
||||||
|
Disable( BACKGROUND );
|
||||||
|
|
||||||
|
CheckRequirements();
|
||||||
|
|
||||||
|
SetupInstall();
|
||||||
|
|
||||||
|
SetupScreen();
|
||||||
|
|
||||||
|
if (ShowDialogs()<0) goto end_install;
|
||||||
|
|
||||||
|
if (ProcessBeforeDataMove()<0) goto end_install;
|
||||||
|
|
||||||
|
if (MoveFileData()<0) goto end_install;
|
||||||
|
|
||||||
|
if (ProcessAfterDataMove()<0) goto end_install;
|
||||||
|
|
||||||
|
if (SetupRegistry()<0) goto end_install;
|
||||||
|
|
||||||
|
if (SetupFolders()<0) goto end_install;
|
||||||
|
|
||||||
|
|
||||||
|
end_install:
|
||||||
|
|
||||||
|
CleanUpInstall();
|
||||||
|
|
||||||
|
// If an unrecoverable error occurred, clean up the partial installation.
|
||||||
|
// Otherwise, exit normally.
|
||||||
|
|
||||||
|
if (bInstallAborted) then
|
||||||
|
abort;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
endprogram
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: ShowDialogs //
|
||||||
|
// //
|
||||||
|
// Purpose: This function manages the display and navigation //
|
||||||
|
// the standard dialogs that exist in a setup. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function ShowDialogs()
|
||||||
|
NUMBER nResult;
|
||||||
|
begin
|
||||||
|
|
||||||
|
Dlg_Start:
|
||||||
|
// beginning of dialogs label
|
||||||
|
|
||||||
|
Dlg_SdWelcome:
|
||||||
|
nResult = DialogShowSdWelcome();
|
||||||
|
if (nResult = BACK) goto Dlg_Start;
|
||||||
|
|
||||||
|
Dlg_SdShowInfoList:
|
||||||
|
nResult = DialogShowSdShowInfoList();
|
||||||
|
if (nResult = BACK) goto Dlg_SdWelcome;
|
||||||
|
|
||||||
|
Dlg_SdAskDestPath:
|
||||||
|
nResult = DialogShowSdAskDestPath();
|
||||||
|
if (nResult = BACK) goto Dlg_SdShowInfoList;
|
||||||
|
|
||||||
|
Dlg_SdSetupType:
|
||||||
|
nResult = DialogShowSdSetupType();
|
||||||
|
if (nResult = BACK) goto Dlg_SdAskDestPath;
|
||||||
|
|
||||||
|
Dlg_SdComponentDialog2:
|
||||||
|
if ((nResult = BACK) && (svSetupType != "Custom") && (svSetupType != "")) then
|
||||||
|
goto Dlg_SdSetupType;
|
||||||
|
endif;
|
||||||
|
nResult = DialogShowSdComponentDialog2();
|
||||||
|
if (nResult = BACK) goto Dlg_SdSetupType;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: ProcessBeforeDataMove //
|
||||||
|
// //
|
||||||
|
// Purpose: This function performs any necessary operations prior to the //
|
||||||
|
// actual data move operation. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function ProcessBeforeDataMove()
|
||||||
|
STRING svLogFile;
|
||||||
|
NUMBER nResult;
|
||||||
|
begin
|
||||||
|
|
||||||
|
InstallationInfo( @COMPANY_NAME, @PRODUCT_NAME, @PRODUCT_VERSION, @PRODUCT_KEY );
|
||||||
|
|
||||||
|
svLogFile = UNINST_LOGFILE_NAME;
|
||||||
|
|
||||||
|
nResult = DeinstallStart( svDir, svLogFile, @UNINST_KEY, 0 );
|
||||||
|
if (nResult < 0) then
|
||||||
|
MessageBox( @ERROR_UNINSTSETUP, WARNING );
|
||||||
|
endif;
|
||||||
|
|
||||||
|
szAppPath = TARGETDIR; // TODO : if your application .exe is in a subdir of TARGETDIR then add subdir
|
||||||
|
|
||||||
|
if ((bIs32BitSetup) && (bIsShellExplorer)) then
|
||||||
|
RegDBSetItem( REGDB_APPPATH, szAppPath );
|
||||||
|
RegDBSetItem( REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY );
|
||||||
|
RegDBSetItem( REGDB_UNINSTALL_NAME, @UNINST_DISPLAY_NAME );
|
||||||
|
endif;
|
||||||
|
|
||||||
|
// TODO : update any items you want to process before moving the data
|
||||||
|
//
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: MoveFileData //
|
||||||
|
// //
|
||||||
|
// Purpose: This function handles the data movement for //
|
||||||
|
// the setup. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function MoveFileData()
|
||||||
|
NUMBER nResult, nDisk;
|
||||||
|
begin
|
||||||
|
|
||||||
|
nDisk = 1;
|
||||||
|
SetStatusWindow( 0, "" );
|
||||||
|
Disable( DIALOGCACHE );
|
||||||
|
Enable( STATUS );
|
||||||
|
StatusUpdate( ON, 100 );
|
||||||
|
nResult = ComponentMoveData( MEDIA, nDisk, 0 );
|
||||||
|
|
||||||
|
HandleMoveDataError( nResult );
|
||||||
|
|
||||||
|
Disable( STATUS );
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: HandleMoveDataError //
|
||||||
|
// //
|
||||||
|
// Purpose: This function handles the error (if any) during the move data //
|
||||||
|
// operation. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function HandleMoveDataError( nResult )
|
||||||
|
STRING szErrMsg, svComponent , svFileGroup , svFile;
|
||||||
|
begin
|
||||||
|
|
||||||
|
svComponent = "";
|
||||||
|
svFileGroup = "";
|
||||||
|
svFile = "";
|
||||||
|
|
||||||
|
switch (nResult)
|
||||||
|
case 0:
|
||||||
|
return 0;
|
||||||
|
default:
|
||||||
|
ComponentError ( MEDIA , svComponent , svFileGroup , svFile , nResult );
|
||||||
|
szErrMsg = @ERROR_MOVEDATA + "\n\n" +
|
||||||
|
@ERROR_COMPONENT + " " + svComponent + "\n" +
|
||||||
|
@ERROR_FILEGROUP + " " + svFileGroup + "\n" +
|
||||||
|
@ERROR_FILE + " " + svFile;
|
||||||
|
SprintfBox( SEVERE, @TITLE_CAPTIONBAR, szErrMsg, nResult );
|
||||||
|
bInstallAborted = TRUE;
|
||||||
|
return nResult;
|
||||||
|
endswitch;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: ProcessAfterDataMove //
|
||||||
|
// //
|
||||||
|
// Purpose: This function performs any necessary operations needed after //
|
||||||
|
// all data has been moved. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function ProcessAfterDataMove()
|
||||||
|
begin
|
||||||
|
|
||||||
|
// TODO : update self-registered files and other processes that
|
||||||
|
// should be performed after the data has been moved.
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: SetupRegistry //
|
||||||
|
// //
|
||||||
|
// Purpose: This function makes the registry entries for this setup. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function SetupRegistry()
|
||||||
|
NUMBER nResult;
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
// TODO : Add all your registry entry keys here
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// RegDBCreateKeyEx, RegDBSetKeyValueEx....
|
||||||
|
//
|
||||||
|
|
||||||
|
nResult = CreateRegistrySet( "" );
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Function: SetupFolders
|
||||||
|
//
|
||||||
|
// Purpose: This function creates all the folders and shortcuts for the
|
||||||
|
// setup. This includes program groups and items for Windows 3.1.
|
||||||
|
//
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function SetupFolders()
|
||||||
|
NUMBER nResult;
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
|
||||||
|
// TODO : Add all your folder (program group) along with shortcuts (program items)
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// CreateProgramFolder, AddFolderIcon....
|
||||||
|
//
|
||||||
|
|
||||||
|
nResult = CreateShellObjects( "" );
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: CleanUpInstall //
|
||||||
|
// //
|
||||||
|
// Purpose: This cleans up the setup. Anything that should //
|
||||||
|
// be released or deleted at the end of the setup should //
|
||||||
|
// be done here. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function CleanUpInstall()
|
||||||
|
begin
|
||||||
|
|
||||||
|
|
||||||
|
if (bInstallAborted) then
|
||||||
|
return 0;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
DialogShowSdFinishReboot();
|
||||||
|
|
||||||
|
if (BATCH_INSTALL) then // ensure locked files are properly written
|
||||||
|
CommitSharedFiles(0);
|
||||||
|
endif;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: SetupInstall //
|
||||||
|
// //
|
||||||
|
// Purpose: This will setup the installation. Any general initialization //
|
||||||
|
// needed for the installation should be performed here. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function SetupInstall()
|
||||||
|
begin
|
||||||
|
|
||||||
|
Enable( CORECOMPONENTHANDLING );
|
||||||
|
|
||||||
|
bInstallAborted = FALSE;
|
||||||
|
|
||||||
|
if (bIs32BitSetup) then
|
||||||
|
svDir = "C:\\mysql"; //PROGRAMFILES ^ @COMPANY_NAME ^ @PRODUCT_NAME;
|
||||||
|
else
|
||||||
|
svDir = "C:\\mysql"; //PROGRAMFILES ^ @COMPANY_NAME16 ^ @PRODUCT_NAME16; // use shorten names
|
||||||
|
endif;
|
||||||
|
|
||||||
|
TARGETDIR = svDir;
|
||||||
|
|
||||||
|
SdProductName( @PRODUCT_NAME );
|
||||||
|
|
||||||
|
Enable( DIALOGCACHE );
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: SetupScreen //
|
||||||
|
// //
|
||||||
|
// Purpose: This function establishes the screen look. This includes //
|
||||||
|
// colors, fonts, and text to be displayed. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function SetupScreen()
|
||||||
|
begin
|
||||||
|
|
||||||
|
Enable( FULLWINDOWMODE );
|
||||||
|
Enable( INDVFILESTATUS );
|
||||||
|
SetTitle( @TITLE_MAIN, 24, WHITE );
|
||||||
|
|
||||||
|
SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION ); // Caption bar text.
|
||||||
|
|
||||||
|
Enable( BACKGROUND );
|
||||||
|
|
||||||
|
Delay( 1 );
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: CheckRequirements //
|
||||||
|
// //
|
||||||
|
// Purpose: This function checks all minimum requirements for the //
|
||||||
|
// application being installed. If any fail, then the user //
|
||||||
|
// is informed and the setup is terminated. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function CheckRequirements()
|
||||||
|
NUMBER nvDx, nvDy, nvResult;
|
||||||
|
STRING svResult;
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
bWinNT = FALSE;
|
||||||
|
bIsShellExplorer = FALSE;
|
||||||
|
|
||||||
|
// Check screen resolution.
|
||||||
|
GetExtents( nvDx, nvDy );
|
||||||
|
|
||||||
|
if (nvDy < 480) then
|
||||||
|
MessageBox( @ERROR_VGARESOLUTION, WARNING );
|
||||||
|
abort;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
// set 'setup' operation mode
|
||||||
|
bIs32BitSetup = TRUE;
|
||||||
|
GetSystemInfo( ISTYPE, nvResult, svResult );
|
||||||
|
if (nvResult = 16) then
|
||||||
|
bIs32BitSetup = FALSE; // running 16-bit setup
|
||||||
|
return 0; // no additional information required
|
||||||
|
endif;
|
||||||
|
|
||||||
|
// --- 32-bit testing after this point ---
|
||||||
|
|
||||||
|
// Determine the target system's operating system.
|
||||||
|
GetSystemInfo( OS, nvResult, svResult );
|
||||||
|
|
||||||
|
if (nvResult = IS_WINDOWSNT) then
|
||||||
|
// Running Windows NT.
|
||||||
|
bWinNT = TRUE;
|
||||||
|
|
||||||
|
// Check to see if the shell being used is EXPLORER shell.
|
||||||
|
if (GetSystemInfo( OSMAJOR, nvResult, svResult ) = 0) then
|
||||||
|
if (nvResult >= 4) then
|
||||||
|
bIsShellExplorer = TRUE;
|
||||||
|
endif;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
elseif (nvResult = IS_WINDOWS95 ) then
|
||||||
|
bIsShellExplorer = TRUE;
|
||||||
|
|
||||||
|
endif;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: DialogShowSdWelcome //
|
||||||
|
// //
|
||||||
|
// Purpose: This function handles the standard welcome dialog. //
|
||||||
|
// //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function DialogShowSdWelcome()
|
||||||
|
NUMBER nResult;
|
||||||
|
STRING szTitle, szMsg;
|
||||||
|
begin
|
||||||
|
|
||||||
|
szTitle = "";
|
||||||
|
szMsg = "";
|
||||||
|
nResult = SdWelcome( szTitle, szMsg );
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: DialogShowSdShowInfoList //
|
||||||
|
// //
|
||||||
|
// Purpose: This function displays the general information list dialog. //
|
||||||
|
// //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function DialogShowSdShowInfoList()
|
||||||
|
NUMBER nResult;
|
||||||
|
LIST list;
|
||||||
|
STRING szTitle, szMsg, szFile;
|
||||||
|
begin
|
||||||
|
|
||||||
|
szFile = SUPPORTDIR ^ "infolist.txt";
|
||||||
|
|
||||||
|
list = ListCreate( STRINGLIST );
|
||||||
|
ListReadFromFile( list, szFile );
|
||||||
|
szTitle = "";
|
||||||
|
szMsg = " ";
|
||||||
|
nResult = SdShowInfoList( szTitle, szMsg, list );
|
||||||
|
|
||||||
|
ListDestroy( list );
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: DialogShowSdAskDestPath //
|
||||||
|
// //
|
||||||
|
// Purpose: This function asks the user for the destination directory. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function DialogShowSdAskDestPath()
|
||||||
|
NUMBER nResult;
|
||||||
|
STRING szTitle, szMsg;
|
||||||
|
begin
|
||||||
|
|
||||||
|
szTitle = "";
|
||||||
|
szMsg = "";
|
||||||
|
nResult = SdAskDestPath( szTitle, szMsg, svDir, 0 );
|
||||||
|
|
||||||
|
TARGETDIR = svDir;
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: DialogShowSdSetupType //
|
||||||
|
// //
|
||||||
|
// Purpose: This function displays the standard setup type dialog. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function DialogShowSdSetupType()
|
||||||
|
NUMBER nResult, nType;
|
||||||
|
STRING szTitle, szMsg;
|
||||||
|
begin
|
||||||
|
|
||||||
|
switch (svSetupType)
|
||||||
|
case "Typical":
|
||||||
|
nType = TYPICAL;
|
||||||
|
case "Custom":
|
||||||
|
nType = CUSTOM;
|
||||||
|
case "Compact":
|
||||||
|
nType = COMPACT;
|
||||||
|
case "":
|
||||||
|
svSetupType = "Typical";
|
||||||
|
nType = TYPICAL;
|
||||||
|
endswitch;
|
||||||
|
|
||||||
|
szTitle = "";
|
||||||
|
szMsg = "";
|
||||||
|
nResult = SetupType( szTitle, szMsg, "", nType, 0 );
|
||||||
|
|
||||||
|
switch (nResult)
|
||||||
|
case COMPACT:
|
||||||
|
svSetupType = "Compact";
|
||||||
|
case TYPICAL:
|
||||||
|
svSetupType = "Typical";
|
||||||
|
case CUSTOM:
|
||||||
|
svSetupType = "Custom";
|
||||||
|
endswitch;
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: DialogShowSdComponentDialog2 //
|
||||||
|
// //
|
||||||
|
// Purpose: This function displays the custom component dialog. //
|
||||||
|
// //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function DialogShowSdComponentDialog2()
|
||||||
|
NUMBER nResult;
|
||||||
|
STRING szTitle, szMsg;
|
||||||
|
begin
|
||||||
|
|
||||||
|
if ((svSetupType != "Custom") && (svSetupType != "")) then
|
||||||
|
return 0;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
szTitle = "";
|
||||||
|
szMsg = "";
|
||||||
|
nResult = SdComponentDialog2( szTitle, szMsg, svDir, "" );
|
||||||
|
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// Function: DialogShowSdFinishReboot //
|
||||||
|
// //
|
||||||
|
// Purpose: This function will show the last dialog of the product. //
|
||||||
|
// It will allow the user to reboot and/or show some readme text. //
|
||||||
|
// //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function DialogShowSdFinishReboot()
|
||||||
|
NUMBER nResult, nDefOptions;
|
||||||
|
STRING szTitle, szMsg1, szMsg2, szOption1, szOption2;
|
||||||
|
NUMBER bOpt1, bOpt2;
|
||||||
|
begin
|
||||||
|
/*
|
||||||
|
if (!BATCH_INSTALL) then
|
||||||
|
bOpt1 = FALSE;
|
||||||
|
bOpt2 = FALSE;
|
||||||
|
szMsg1 = "";
|
||||||
|
szMsg2 = "";
|
||||||
|
szOption1 = "";
|
||||||
|
szOption2 = "";
|
||||||
|
nResult = SdFinish( szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2 );
|
||||||
|
return 0;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
nDefOptions = SYS_BOOTMACHINE;
|
||||||
|
szTitle = "";
|
||||||
|
szMsg1 = "";
|
||||||
|
szMsg2 = "";
|
||||||
|
nResult = SdFinishReboot( szTitle, szMsg1, nDefOptions, szMsg2, 0 );
|
||||||
|
*/
|
||||||
|
return nResult;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// --- include script file section ---
|
||||||
|
|
||||||
|
#include "sddialog.rul"
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
|||||||
|
This is a release of MySQL 3.23.56 for Win32.
|
||||||
|
|
||||||
|
NOTE: If you install MySQL in a folder other than
|
||||||
|
C:\MYSQL or you intend to start MySQL on NT/Win2000
|
||||||
|
as a service, you must create a file named C:\MY.CNF
|
||||||
|
or \Windows\my.ini or \winnt\my.ini with the following
|
||||||
|
information::
|
||||||
|
|
||||||
|
[mysqld]
|
||||||
|
basedir=E:/installation-path/
|
||||||
|
datadir=E:/data-path/
|
||||||
|
|
||||||
|
After your have installed MySQL, the installation
|
||||||
|
directory which contains the files named 'my-size.cnf'.
|
||||||
|
You can use this as a starting point for your own
|
||||||
|
C:\my.cnf file.
|
||||||
|
|
||||||
|
If you have any problems, you can mail them to
|
||||||
|
win32@lists.mysql.com after you have consulted the
|
||||||
|
MySQL manual and the MySQL mailing list archive
|
||||||
|
(http://www.mysql.com/documentation/index.html)
|
||||||
|
|
||||||
|
On behalf of the MySQL AB gang,
|
||||||
|
Michael Widenius
|
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
12
VC++Files/InstallShield/3.23.XXcom/Shell Objects/Default.shl
Normal file
12
VC++Files/InstallShield/3.23.XXcom/Shell Objects/Default.shl
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Data]
|
||||||
|
Folder3=<FOLDER_STARTUP>
|
||||||
|
Group0=Main
|
||||||
|
Group1=Startup
|
||||||
|
Folder0=<FOLDER_DESKTOP>
|
||||||
|
Folder1=<FOLDER_STARTMENU>
|
||||||
|
Folder2=<FOLDER_PROGRAMS>
|
||||||
|
|
||||||
|
[Info]
|
||||||
|
Type=ShellObject
|
||||||
|
Version=1.00.000
|
||||||
|
|
@ -0,0 +1,23 @@
|
|||||||
|
[Data]
|
||||||
|
TITLE_MAIN=MySQL Commercial Servers and Clients 3.23.56
|
||||||
|
ERROR_COMPONENT=Component:
|
||||||
|
COMPANY_NAME=MySQL AB
|
||||||
|
COMPANY_NAME16=Company
|
||||||
|
ERROR_FILEGROUP=File Group:
|
||||||
|
ERROR_MOVEDATA=An error occurred during the move data process: %d
|
||||||
|
PRODUCT_VERSION=3.23.56
|
||||||
|
UNINST_KEY=MySQL Commercial Servers and Clients 3.23.56
|
||||||
|
TITLE_CAPTIONBAR=MySQL Commercial Servers and Clients 3.23.56 Setup
|
||||||
|
PRODUCT_NAME16=Product
|
||||||
|
ERROR_FILE=File:
|
||||||
|
ERROR_VGARESOLUTION=This program requires VGA or better resolution.
|
||||||
|
PRODUCT_KEY=yourapp.Exe
|
||||||
|
UNINST_DISPLAY_NAME=MySQL Commercial Servers and Clients 3.23.56
|
||||||
|
ERROR_UNINSTSETUP=unInstaller setup failed to initialize. You may not be able to uninstall this product.
|
||||||
|
PRODUCT_NAME=MySQL Commercial Servers and Clients 3.23.56
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Language=0009
|
||||||
|
Type=STRINGTABLESPECIFIC
|
||||||
|
Version=1.00.000
|
||||||
|
|
74
VC++Files/InstallShield/3.23.XXcom/String Tables/Default.shl
Normal file
74
VC++Files/InstallShield/3.23.XXcom/String Tables/Default.shl
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
[TITLE_MAIN]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[ERROR_COMPONENT]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[COMPANY_NAME]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[COMPANY_NAME16]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[ERROR_FILEGROUP]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[ERROR_MOVEDATA]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[PRODUCT_VERSION]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[UNINST_KEY]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[Language]
|
||||||
|
Lang0=0009
|
||||||
|
CurrentLang=0
|
||||||
|
|
||||||
|
[TITLE_CAPTIONBAR]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[PRODUCT_NAME16]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[Data]
|
||||||
|
Entry0=ERROR_VGARESOLUTION
|
||||||
|
Entry1=TITLE_MAIN
|
||||||
|
Entry2=TITLE_CAPTIONBAR
|
||||||
|
Entry3=UNINST_KEY
|
||||||
|
Entry4=UNINST_DISPLAY_NAME
|
||||||
|
Entry5=COMPANY_NAME
|
||||||
|
Entry6=PRODUCT_NAME
|
||||||
|
Entry7=PRODUCT_VERSION
|
||||||
|
Entry8=PRODUCT_KEY
|
||||||
|
Entry10=ERROR_UNINSTSETUP
|
||||||
|
Entry9=ERROR_MOVEDATA
|
||||||
|
Entry11=COMPANY_NAME16
|
||||||
|
Entry12=PRODUCT_NAME16
|
||||||
|
Entry13=ERROR_COMPONENT
|
||||||
|
Entry14=ERROR_FILEGROUP
|
||||||
|
Entry15=ERROR_FILE
|
||||||
|
|
||||||
|
[ERROR_FILE]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[ERROR_VGARESOLUTION]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[PRODUCT_KEY]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[UNINST_DISPLAY_NAME]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=STRINGTABLE
|
||||||
|
Version=1.00.000
|
||||||
|
|
||||||
|
[ERROR_UNINSTSETUP]
|
||||||
|
Comment=
|
||||||
|
|
||||||
|
[PRODUCT_NAME]
|
||||||
|
Comment=
|
||||||
|
|
@ -0,0 +1,56 @@
|
|||||||
|
[<HKCR>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<HKUS>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<PROGRAMFILES>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<WINSYSDIR>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<COMMONFILES>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<WINDIR>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[Data]
|
||||||
|
Key0=<PROGRAMFILES>
|
||||||
|
Key1=<COMMONFILES>
|
||||||
|
Key2=<WINDIR>
|
||||||
|
Key3=<WINSYSDIR>
|
||||||
|
Key4=<HKLM>
|
||||||
|
Key5=<HKCU>
|
||||||
|
Key6=<HKCC>
|
||||||
|
Key7=<HKDD>
|
||||||
|
Key8=<HKUS>
|
||||||
|
Key9=<HKCR>
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=TEXTSUB
|
||||||
|
Version=1.00.000
|
||||||
|
|
||||||
|
[<HKCU>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<HKLM>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<HKDD>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<HKCC>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
@ -0,0 +1,76 @@
|
|||||||
|
[<HKCR>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<HKUS>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<SRCDIR>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<PROGRAMFILES>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<TARGETDIR>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<WINSYSDIR>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<COMMONFILES>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<WINDIR>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[Data]
|
||||||
|
Key0=<PROGRAMFILES>
|
||||||
|
Key1=<COMMONFILES>
|
||||||
|
Key2=<WINDIR>
|
||||||
|
Key3=<WINSYSDIR>
|
||||||
|
Key4=<TARGETDIR>
|
||||||
|
Key10=<HKDD>
|
||||||
|
Key5=<SUPPORTDIR>
|
||||||
|
Key11=<HKUS>
|
||||||
|
Key6=<SRCDIR>
|
||||||
|
Key12=<HKCR>
|
||||||
|
Key7=<HKLM>
|
||||||
|
Key13=<SHELL_OBJECT_FOLDER>
|
||||||
|
Key8=<HKCU>
|
||||||
|
Key9=<HKCC>
|
||||||
|
|
||||||
|
[<SHELL_OBJECT_FOLDER>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<SUPPORTDIR>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Type=TEXTSUB
|
||||||
|
Version=1.00.000
|
||||||
|
|
||||||
|
[<HKCU>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<HKLM>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<HKDD>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
||||||
|
[<HKCC>]
|
||||||
|
KeyType=4
|
||||||
|
Value=
|
||||||
|
|
118
acinclude.m4
118
acinclude.m4
@ -90,7 +90,7 @@ mysql_cv_btype_last_arg_accept=none
|
|||||||
],
|
],
|
||||||
[int a = accept(1, (struct sockaddr *) 0, (socklen_t *) 0); return (a != 0);],
|
[int a = accept(1, (struct sockaddr *) 0, (socklen_t *) 0); return (a != 0);],
|
||||||
mysql_cv_btype_last_arg_accept=socklen_t)]
|
mysql_cv_btype_last_arg_accept=socklen_t)]
|
||||||
if test $mysql_cv_btype_last_arg_accept = none; then
|
if test "$mysql_cv_btype_last_arg_accept" = "none"; then
|
||||||
[AC_TRY_COMPILE([#if defined(inline)
|
[AC_TRY_COMPILE([#if defined(inline)
|
||||||
#undef inline
|
#undef inline
|
||||||
#endif
|
#endif
|
||||||
@ -101,7 +101,7 @@ if test $mysql_cv_btype_last_arg_accept = none; then
|
|||||||
[int a = accept(1, (struct sockaddr *) 0, (size_t *) 0); return (a != 0);],
|
[int a = accept(1, (struct sockaddr *) 0, (size_t *) 0); return (a != 0);],
|
||||||
mysql_cv_btype_last_arg_accept=size_t)]
|
mysql_cv_btype_last_arg_accept=size_t)]
|
||||||
fi
|
fi
|
||||||
if test $mysql_cv_btype_last_arg_accept = none; then
|
if test "$mysql_cv_btype_last_arg_accept" = "none"; then
|
||||||
mysql_cv_btype_last_arg_accept=int
|
mysql_cv_btype_last_arg_accept=int
|
||||||
fi)
|
fi)
|
||||||
AC_LANG_RESTORE
|
AC_LANG_RESTORE
|
||||||
@ -166,12 +166,19 @@ AC_DEFUN(MYSQL_CHECK_ZLIB_WITH_COMPRESS, [
|
|||||||
save_LIBS="$LIBS"
|
save_LIBS="$LIBS"
|
||||||
LIBS="-l$1 $LIBS"
|
LIBS="-l$1 $LIBS"
|
||||||
AC_CACHE_CHECK([if libz with compress], mysql_cv_compress,
|
AC_CACHE_CHECK([if libz with compress], mysql_cv_compress,
|
||||||
[AC_TRY_LINK([#include <zlib.h>
|
[AC_TRY_RUN([#include <zlib.h>
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C"
|
extern "C"
|
||||||
#endif
|
#endif
|
||||||
],
|
int main(int argv, char **argc)
|
||||||
[ return compress(0, (unsigned long*) 0, "", 0);
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int link_test()
|
||||||
|
{
|
||||||
|
return compress(0, (unsigned long*) 0, "", 0);
|
||||||
|
}
|
||||||
], mysql_cv_compress=yes, mysql_cv_compress=no)])
|
], mysql_cv_compress=yes, mysql_cv_compress=no)])
|
||||||
if test "$mysql_cv_compress" = "yes"
|
if test "$mysql_cv_compress" = "yes"
|
||||||
then
|
then
|
||||||
@ -386,11 +393,11 @@ AC_CACHE_VAL(mysql_cv_termcap_lib,
|
|||||||
[AC_CHECK_LIB(termcap, tgetent, mysql_cv_termcap_lib=libtermcap,
|
[AC_CHECK_LIB(termcap, tgetent, mysql_cv_termcap_lib=libtermcap,
|
||||||
mysql_cv_termcap_lib=NOT_FOUND)])])])
|
mysql_cv_termcap_lib=NOT_FOUND)])])])
|
||||||
AC_MSG_CHECKING(for termcap functions library)
|
AC_MSG_CHECKING(for termcap functions library)
|
||||||
if test $mysql_cv_termcap_lib = NOT_FOUND; then
|
if test "$mysql_cv_termcap_lib" = "NOT_FOUND"; then
|
||||||
AC_MSG_ERROR([No curses/termcap library found])
|
AC_MSG_ERROR([No curses/termcap library found])
|
||||||
elif test $mysql_cv_termcap_lib = libtermcap; then
|
elif test "$mysql_cv_termcap_lib" = "libtermcap"; then
|
||||||
TERMCAP_LIB=-ltermcap
|
TERMCAP_LIB=-ltermcap
|
||||||
elif test $mysql_cv_termcap_lib = libncurses; then
|
elif test "$mysql_cv_termcap_lib" = "libncurses"; then
|
||||||
TERMCAP_LIB=-lncurses
|
TERMCAP_LIB=-lncurses
|
||||||
else
|
else
|
||||||
TERMCAP_LIB=-lcurses
|
TERMCAP_LIB=-lcurses
|
||||||
@ -446,7 +453,7 @@ AC_CACHE_VAL(mysql_cv_can_redecl_getpw,
|
|||||||
extern struct passwd *getpwent();], [struct passwd *z; z = getpwent();],
|
extern struct passwd *getpwent();], [struct passwd *z; z = getpwent();],
|
||||||
mysql_cv_can_redecl_getpw=yes,mysql_cv_can_redecl_getpw=no)])
|
mysql_cv_can_redecl_getpw=yes,mysql_cv_can_redecl_getpw=no)])
|
||||||
AC_MSG_RESULT($mysql_cv_can_redecl_getpw)
|
AC_MSG_RESULT($mysql_cv_can_redecl_getpw)
|
||||||
if test $mysql_cv_can_redecl_getpw = no; then
|
if test "$mysql_cv_can_redecl_getpw" = "no"; then
|
||||||
AC_DEFINE(HAVE_GETPW_DECLS)
|
AC_DEFINE(HAVE_GETPW_DECLS)
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
@ -458,7 +465,7 @@ AC_CACHE_VAL(mysql_cv_tiocgwinsz_in_ioctl,
|
|||||||
#include <sys/ioctl.h>], [int x = TIOCGWINSZ;],
|
#include <sys/ioctl.h>], [int x = TIOCGWINSZ;],
|
||||||
mysql_cv_tiocgwinsz_in_ioctl=yes,mysql_cv_tiocgwinsz_in_ioctl=no)])
|
mysql_cv_tiocgwinsz_in_ioctl=yes,mysql_cv_tiocgwinsz_in_ioctl=no)])
|
||||||
AC_MSG_RESULT($mysql_cv_tiocgwinsz_in_ioctl)
|
AC_MSG_RESULT($mysql_cv_tiocgwinsz_in_ioctl)
|
||||||
if test $mysql_cv_tiocgwinsz_in_ioctl = yes; then
|
if test "$mysql_cv_tiocgwinsz_in_ioctl" = "yes"; then
|
||||||
AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
|
AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
@ -470,7 +477,7 @@ AC_CACHE_VAL(mysql_cv_fionread_in_ioctl,
|
|||||||
#include <sys/ioctl.h>], [int x = FIONREAD;],
|
#include <sys/ioctl.h>], [int x = FIONREAD;],
|
||||||
mysql_cv_fionread_in_ioctl=yes,mysql_cv_fionread_in_ioctl=no)])
|
mysql_cv_fionread_in_ioctl=yes,mysql_cv_fionread_in_ioctl=no)])
|
||||||
AC_MSG_RESULT($mysql_cv_fionread_in_ioctl)
|
AC_MSG_RESULT($mysql_cv_fionread_in_ioctl)
|
||||||
if test $mysql_cv_fionread_in_ioctl = yes; then
|
if test "$mysql_cv_fionread_in_ioctl" = "yes"; then
|
||||||
AC_DEFINE(FIONREAD_IN_SYS_IOCTL)
|
AC_DEFINE(FIONREAD_IN_SYS_IOCTL)
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
@ -482,7 +489,7 @@ AC_CACHE_VAL(mysql_cv_tiocstat_in_ioctl,
|
|||||||
#include <sys/ioctl.h>], [int x = TIOCSTAT;],
|
#include <sys/ioctl.h>], [int x = TIOCSTAT;],
|
||||||
mysql_cv_tiocstat_in_ioctl=yes,mysql_cv_tiocstat_in_ioctl=no)])
|
mysql_cv_tiocstat_in_ioctl=yes,mysql_cv_tiocstat_in_ioctl=no)])
|
||||||
AC_MSG_RESULT($mysql_cv_tiocstat_in_ioctl)
|
AC_MSG_RESULT($mysql_cv_tiocstat_in_ioctl)
|
||||||
if test $mysql_cv_tiocstat_in_ioctl = yes; then
|
if test "$mysql_cv_tiocstat_in_ioctl" = "yes"; then
|
||||||
AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL)
|
AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL)
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
@ -515,7 +522,7 @@ AC_CACHE_VAL(mysql_cv_dirent_has_dino,
|
|||||||
struct dirent d; int z; z = d.d_ino;
|
struct dirent d; int z; z = d.d_ino;
|
||||||
], mysql_cv_dirent_has_dino=yes, mysql_cv_dirent_has_dino=no)])
|
], mysql_cv_dirent_has_dino=yes, mysql_cv_dirent_has_dino=no)])
|
||||||
AC_MSG_RESULT($mysql_cv_dirent_has_dino)
|
AC_MSG_RESULT($mysql_cv_dirent_has_dino)
|
||||||
if test $mysql_cv_dirent_has_dino = yes; then
|
if test "$mysql_cv_dirent_has_dino" = "yes"; then
|
||||||
AC_DEFINE(STRUCT_DIRENT_HAS_D_INO)
|
AC_DEFINE(STRUCT_DIRENT_HAS_D_INO)
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
@ -534,7 +541,7 @@ extern "C"
|
|||||||
void (*signal ()) ();],
|
void (*signal ()) ();],
|
||||||
[int i;], mysql_cv_void_sighandler=yes, mysql_cv_void_sighandler=no)])dnl
|
[int i;], mysql_cv_void_sighandler=yes, mysql_cv_void_sighandler=no)])dnl
|
||||||
AC_MSG_RESULT($mysql_cv_void_sighandler)
|
AC_MSG_RESULT($mysql_cv_void_sighandler)
|
||||||
if test $mysql_cv_void_sighandler = yes; then
|
if test "$mysql_cv_void_sighandler" = "yes"; then
|
||||||
AC_DEFINE(VOID_SIGHANDLER)
|
AC_DEFINE(VOID_SIGHANDLER)
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
@ -593,7 +600,7 @@ then
|
|||||||
AC_CACHE_CHECK([for working alloca.h], ac_cv_header_alloca_h,
|
AC_CACHE_CHECK([for working alloca.h], ac_cv_header_alloca_h,
|
||||||
[AC_TRY_LINK([#include <alloca.h>], [char *p = alloca(2 * sizeof(int));],
|
[AC_TRY_LINK([#include <alloca.h>], [char *p = alloca(2 * sizeof(int));],
|
||||||
ac_cv_header_alloca_h=yes, ac_cv_header_alloca_h=no)])
|
ac_cv_header_alloca_h=yes, ac_cv_header_alloca_h=no)])
|
||||||
if test $ac_cv_header_alloca_h = yes
|
if test "$ac_cv_header_alloca_h" = "yes"
|
||||||
then
|
then
|
||||||
AC_DEFINE(HAVE_ALLOCA)
|
AC_DEFINE(HAVE_ALLOCA)
|
||||||
fi
|
fi
|
||||||
@ -617,11 +624,11 @@ then
|
|||||||
#endif
|
#endif
|
||||||
], [char *p = (char *) alloca(1);],
|
], [char *p = (char *) alloca(1);],
|
||||||
ac_cv_func_alloca_works=yes, ac_cv_func_alloca_works=no)])
|
ac_cv_func_alloca_works=yes, ac_cv_func_alloca_works=no)])
|
||||||
if test $ac_cv_func_alloca_works = yes; then
|
if test "$ac_cv_func_alloca_works" = "yes"; then
|
||||||
AC_DEFINE(HAVE_ALLOCA)
|
AC_DEFINE(HAVE_ALLOCA)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test $ac_cv_func_alloca_works = no; then
|
if test "$ac_cv_func_alloca_works" = "no"; then
|
||||||
# The SVR3 libPW and SVR4 libucb both contain incompatible functions
|
# The SVR3 libPW and SVR4 libucb both contain incompatible functions
|
||||||
# that cause trouble. Some versions do not even contain alloca or
|
# that cause trouble. Some versions do not even contain alloca or
|
||||||
# contain a buggy version. If you still want to use their alloca,
|
# contain a buggy version. If you still want to use their alloca,
|
||||||
@ -637,7 +644,7 @@ then
|
|||||||
wenotbecray
|
wenotbecray
|
||||||
#endif
|
#endif
|
||||||
], ac_cv_os_cray=yes, ac_cv_os_cray=no)])
|
], ac_cv_os_cray=yes, ac_cv_os_cray=no)])
|
||||||
if test $ac_cv_os_cray = yes; then
|
if test "$ac_cv_os_cray" = "yes"; then
|
||||||
for ac_func in _getb67 GETB67 getb67; do
|
for ac_func in _getb67 GETB67 getb67; do
|
||||||
AC_CHECK_FUNC($ac_func, [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func)
|
AC_CHECK_FUNC($ac_func, [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func)
|
||||||
break])
|
break])
|
||||||
@ -742,26 +749,52 @@ AC_DEFUN(MYSQL_CHECK_VIO, [
|
|||||||
])
|
])
|
||||||
|
|
||||||
AC_DEFUN(MYSQL_FIND_OPENSSL, [
|
AC_DEFUN(MYSQL_FIND_OPENSSL, [
|
||||||
for d in /usr/ssl/include /usr/local/ssl/include /usr/include \
|
incs="$1"
|
||||||
|
libs="$2"
|
||||||
|
case "$incs---$libs" in
|
||||||
|
---)
|
||||||
|
for d in /usr/ssl/include /usr/local/ssl/include /usr/include \
|
||||||
/usr/include/ssl /opt/ssl/include /opt/openssl/include \
|
/usr/include/ssl /opt/ssl/include /opt/openssl/include \
|
||||||
/usr/local/ssl/include /usr/local/include ; do
|
/usr/local/ssl/include /usr/local/include ; do
|
||||||
if test -f $d/openssl/ssl.h ; then
|
if test -f $d/openssl/ssl.h ; then
|
||||||
OPENSSL_INCLUDE=$d
|
OPENSSL_INCLUDE=-I$d
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for d in /usr/ssl/lib /usr/local/ssl/lib /usr/lib/openssl \
|
||||||
|
/usr/lib /usr/lib64 /opt/ssl/lib /opt/openssl/lib /usr/local/lib/ ; do
|
||||||
|
if test -f $d/libssl.a ; then
|
||||||
|
OPENSSL_LIB=$d
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
---* | *---)
|
||||||
|
AC_MSG_ERROR([if either 'includes' or 'libs' is specified, both must be specified])
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
if test -f $incs/openssl/ssl.h ; then
|
||||||
|
OPENSSL_INCLUDE=-I$incs
|
||||||
|
fi
|
||||||
|
if test -f $libs/libssl.a ; then
|
||||||
|
OPENSSL_LIB=$libs
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# On RedHat 9 we need kerberos to compile openssl
|
||||||
|
for d in /usr/kerberos/include
|
||||||
|
do
|
||||||
|
if test -f $d/krb5.h ; then
|
||||||
|
OPENSSL_KERBEROS_INCLUDE="$d"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
for d in /usr/ssl/lib /usr/local/ssl/lib /usr/lib/openssl \
|
|
||||||
/usr/lib /opt/ssl/lib /opt/openssl/lib /usr/local/lib/ ; do
|
|
||||||
if test -f $d/libssl.a ; then
|
|
||||||
OPENSSL_LIB=$d
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if test -z "$OPENSSL_LIB" -o -z "$OPENSSL_INCLUDE" ; then
|
if test -z "$OPENSSL_LIB" -o -z "$OPENSSL_INCLUDE" ; then
|
||||||
echo "Could not find an installation of OpenSSL"
|
echo "Could not find an installation of OpenSSL"
|
||||||
if test -n "$OPENSSL_LIB" ; then
|
if test -n "$OPENSSL_LIB" ; then
|
||||||
if test "$IS_LINUX" = "true"; then
|
if test "$IS_LINUX" = "true"; then
|
||||||
echo "Looks like you've forgotted to install OpenSSL development RPM"
|
echo "Looks like you've forgotten to install OpenSSL development RPM"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
@ -776,11 +809,23 @@ AC_MSG_CHECKING(for OpenSSL)
|
|||||||
[openssl="$withval"],
|
[openssl="$withval"],
|
||||||
[openssl=no])
|
[openssl=no])
|
||||||
|
|
||||||
openssl_libs=""
|
AC_ARG_WITH([openssl-includes],
|
||||||
openssl_includes=""
|
[
|
||||||
|
--with-openssl-includes=DIR
|
||||||
|
Find OpenSSL headers in DIR],
|
||||||
|
[openssl_includes="$withval"],
|
||||||
|
[openssl_includes=""])
|
||||||
|
|
||||||
|
AC_ARG_WITH([openssl-libs],
|
||||||
|
[
|
||||||
|
--with-openssl-libs=DIR
|
||||||
|
Find OpenSSL libraries in DIR],
|
||||||
|
[openssl_libs="$withval"],
|
||||||
|
[openssl_libs=""])
|
||||||
|
|
||||||
if test "$openssl" = "yes"
|
if test "$openssl" = "yes"
|
||||||
then
|
then
|
||||||
MYSQL_FIND_OPENSSL
|
MYSQL_FIND_OPENSSL([$openssl_includes], [$openssl_libs])
|
||||||
#force VIO use
|
#force VIO use
|
||||||
vio_dir="vio"
|
vio_dir="vio"
|
||||||
vio_libs="../vio/libvio.la"
|
vio_libs="../vio/libvio.la"
|
||||||
@ -789,9 +834,14 @@ AC_MSG_CHECKING(for OpenSSL)
|
|||||||
openssl_libs="-L$OPENSSL_LIB -lssl -lcrypto"
|
openssl_libs="-L$OPENSSL_LIB -lssl -lcrypto"
|
||||||
# Don't set openssl_includes to /usr/include as this gives us a lot of
|
# Don't set openssl_includes to /usr/include as this gives us a lot of
|
||||||
# compiler warnings when using gcc 3.x
|
# compiler warnings when using gcc 3.x
|
||||||
if test "$OPENSSL_INCLUDE" != "/usr/include"
|
openssl_includes=""
|
||||||
|
if test "$OPENSSL_INCLUDE" != "-I/usr/include"
|
||||||
then
|
then
|
||||||
openssl_includes="-I$OPENSSL_INCLUDE"
|
openssl_includes="$OPENSSL_INCLUDE"
|
||||||
|
fi
|
||||||
|
if test "$OPENSSL_KERBEROS_INCLUDE"
|
||||||
|
then
|
||||||
|
openssl_includes="$openssl_includes -I$OPENSSL_KERBEROS_INCLUDE"
|
||||||
fi
|
fi
|
||||||
AC_DEFINE(HAVE_OPENSSL)
|
AC_DEFINE(HAVE_OPENSSL)
|
||||||
|
|
||||||
@ -802,7 +852,7 @@ AC_MSG_CHECKING(for OpenSSL)
|
|||||||
case "$CLIENT_EXTRA_LDFLAGS $MYSQLD_EXTRA_LDFLAGS" in
|
case "$CLIENT_EXTRA_LDFLAGS $MYSQLD_EXTRA_LDFLAGS" in
|
||||||
*-all-static*) using_static="yes" ;;
|
*-all-static*) using_static="yes" ;;
|
||||||
esac
|
esac
|
||||||
if test $using_static = "yes"
|
if test "$using_static" = "yes"
|
||||||
then
|
then
|
||||||
echo "You can't use the --all-static link option when using openssl."
|
echo "You can't use the --all-static link option when using openssl."
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -70,7 +70,7 @@ char *get_tty_password(char *opt_message)
|
|||||||
char *pos=to,*end=to+sizeof(to)-1;
|
char *pos=to,*end=to+sizeof(to)-1;
|
||||||
int i=0;
|
int i=0;
|
||||||
DBUG_ENTER("get_tty_password");
|
DBUG_ENTER("get_tty_password");
|
||||||
fprintf(stderr,opt_message ? opt_message : "Enter password: ");
|
_cputs(opt_message ? opt_message : "Enter password: ");
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
char tmp;
|
char tmp;
|
||||||
|
@ -133,7 +133,8 @@ static my_bool info_flag=0,ignore_errors=0,wait_flag=0,quick=0,
|
|||||||
opt_compress=0, using_opt_local_infile=0,
|
opt_compress=0, using_opt_local_infile=0,
|
||||||
vertical=0, line_numbers=1, column_names=1,opt_html=0,
|
vertical=0, line_numbers=1, column_names=1,opt_html=0,
|
||||||
opt_xml=0,opt_nopager=1, opt_outfile=0, named_cmds= 0,
|
opt_xml=0,opt_nopager=1, opt_outfile=0, named_cmds= 0,
|
||||||
tty_password= 0, opt_nobeep=0, opt_reconnect=1;
|
tty_password= 0, opt_nobeep=0, opt_reconnect=1,
|
||||||
|
default_charset_used= 0;
|
||||||
static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0;
|
static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0;
|
||||||
static my_string opt_mysql_unix_port=0;
|
static my_string opt_mysql_unix_port=0;
|
||||||
static int connect_flag=CLIENT_INTERACTIVE;
|
static int connect_flag=CLIENT_INTERACTIVE;
|
||||||
@ -651,6 +652,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
strmov(mysql_charsets_dir, argument);
|
strmov(mysql_charsets_dir, argument);
|
||||||
charsets_dir = mysql_charsets_dir;
|
charsets_dir = mysql_charsets_dir;
|
||||||
break;
|
break;
|
||||||
|
case OPT_DEFAULT_CHARSET:
|
||||||
|
default_charset_used= 1;
|
||||||
|
break;
|
||||||
case OPT_DELIMITER:
|
case OPT_DELIMITER:
|
||||||
if (argument == disabled_my_option)
|
if (argument == disabled_my_option)
|
||||||
strmov(delimiter, DEFAULT_DELIMITER);
|
strmov(delimiter, DEFAULT_DELIMITER);
|
||||||
@ -2563,7 +2567,8 @@ sql_real_connect(char *host,char *database,char *user,char *password,
|
|||||||
select_limit,max_join_size);
|
select_limit,max_join_size);
|
||||||
mysql_options(&mysql, MYSQL_INIT_COMMAND, init_command);
|
mysql_options(&mysql, MYSQL_INIT_COMMAND, init_command);
|
||||||
}
|
}
|
||||||
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, default_charset);
|
if (default_charset_used)
|
||||||
|
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, default_charset);
|
||||||
if (!mysql_real_connect(&mysql, host, user, password,
|
if (!mysql_real_connect(&mysql, host, user, password,
|
||||||
database, opt_mysql_port, opt_mysql_unix_port,
|
database, opt_mysql_port, opt_mysql_unix_port,
|
||||||
connect_flag | CLIENT_MULTI_QUERIES))
|
connect_flag | CLIENT_MULTI_QUERIES))
|
||||||
@ -2645,7 +2650,8 @@ com_status(String *buffer __attribute__((unused)),
|
|||||||
(void) mysql_fetch_row(result); // Read eof
|
(void) mysql_fetch_row(result); // Read eof
|
||||||
}
|
}
|
||||||
#ifdef HAVE_OPENSSL
|
#ifdef HAVE_OPENSSL
|
||||||
if (mysql.net.vio->ssl_ && SSL_get_cipher(mysql.net.vio->ssl_))
|
if (mysql.net.vio && mysql.net.vio->ssl_ &&
|
||||||
|
SSL_get_cipher(mysql.net.vio->ssl_))
|
||||||
tee_fprintf(stdout, "SSL:\t\t\tCipher in use is %s\n",
|
tee_fprintf(stdout, "SSL:\t\t\tCipher in use is %s\n",
|
||||||
SSL_get_cipher(mysql.net.vio->ssl_));
|
SSL_get_cipher(mysql.net.vio->ssl_));
|
||||||
else
|
else
|
||||||
@ -2924,12 +2930,11 @@ static void mysql_end_timer(ulong start_time,char *buff)
|
|||||||
|
|
||||||
static const char* construct_prompt()
|
static const char* construct_prompt()
|
||||||
{
|
{
|
||||||
//erase the old prompt
|
processed_prompt.free(); // Erase the old prompt
|
||||||
processed_prompt.free();
|
time_t lclock = time(NULL); // Get the date struct
|
||||||
//get the date struct
|
|
||||||
time_t lclock = time(NULL);
|
|
||||||
struct tm *t = localtime(&lclock);
|
struct tm *t = localtime(&lclock);
|
||||||
//parse thru the settings for the prompt
|
|
||||||
|
/* parse thru the settings for the prompt */
|
||||||
for (char *c = current_prompt; *c ; *c++)
|
for (char *c = current_prompt; *c ; *c++)
|
||||||
{
|
{
|
||||||
if (*c != PROMPT_CHAR)
|
if (*c != PROMPT_CHAR)
|
||||||
@ -2938,8 +2943,7 @@ static const char* construct_prompt()
|
|||||||
{
|
{
|
||||||
switch (*++c) {
|
switch (*++c) {
|
||||||
case '\0':
|
case '\0':
|
||||||
//stop it from going beyond if ends with %
|
c--; // stop it from going beyond if ends with %
|
||||||
c--;
|
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
add_int_to_prompt(++prompt_counter);
|
add_int_to_prompt(++prompt_counter);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2001 MySQL AB
|
/* Copyright (C) 2001-2003 MySQL AB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -51,21 +51,19 @@ static bool short_form = 0;
|
|||||||
static ulonglong offset = 0;
|
static ulonglong offset = 0;
|
||||||
static const char* host = "localhost";
|
static const char* host = "localhost";
|
||||||
static int port = MYSQL_PORT;
|
static int port = MYSQL_PORT;
|
||||||
|
static const char* sock= MYSQL_UNIX_ADDR;
|
||||||
static const char* user = "test";
|
static const char* user = "test";
|
||||||
static const char* pass = "";
|
static const char* pass = "";
|
||||||
static ulonglong position = 0;
|
static ulonglong position = 0;
|
||||||
static bool use_remote = 0;
|
static bool use_remote = 0;
|
||||||
static short binlog_flags = 0;
|
static short binlog_flags = 0;
|
||||||
static MYSQL* mysql = NULL;
|
static MYSQL* mysql = NULL;
|
||||||
static const char* table = 0;
|
|
||||||
|
|
||||||
static const char* dirname_for_local_load= 0;
|
static const char* dirname_for_local_load= 0;
|
||||||
|
|
||||||
static void dump_local_log_entries(const char* logname);
|
static void dump_local_log_entries(const char* logname);
|
||||||
static void dump_remote_log_entries(const char* logname);
|
static void dump_remote_log_entries(const char* logname);
|
||||||
static void dump_log_entries(const char* logname);
|
static void dump_log_entries(const char* logname);
|
||||||
static void dump_remote_file(NET* net, const char* fname);
|
static void dump_remote_file(NET* net, const char* fname);
|
||||||
static void dump_remote_table(NET* net, const char* db, const char* table);
|
|
||||||
static void die(const char* fmt, ...);
|
static void die(const char* fmt, ...);
|
||||||
static MYSQL* safe_connect();
|
static MYSQL* safe_connect();
|
||||||
|
|
||||||
@ -224,8 +222,9 @@ static struct my_option my_long_options[] =
|
|||||||
{"short-form", 's', "Just show the queries, no extra info.",
|
{"short-form", 's', "Just show the queries, no extra info.",
|
||||||
(gptr*) &short_form, (gptr*) &short_form, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
(gptr*) &short_form, (gptr*) &short_form, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
||||||
0, 0},
|
0, 0},
|
||||||
{"table", 't', "Get raw table dump using COM_TABLE_DUMB.", (gptr*) &table,
|
{"socket", 'S', "Socket file to use for connection.",
|
||||||
(gptr*) &table, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
(gptr*) &sock, (gptr*) &sock, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0,
|
||||||
|
0, 0},
|
||||||
{"user", 'u', "Connect to the remote server as username.",
|
{"user", 'u', "Connect to the remote server as username.",
|
||||||
(gptr*) &user, (gptr*) &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0,
|
(gptr*) &user, (gptr*) &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0,
|
||||||
0, 0},
|
0, 0},
|
||||||
@ -369,7 +368,7 @@ static MYSQL* safe_connect()
|
|||||||
if(!local_mysql)
|
if(!local_mysql)
|
||||||
die("Failed on mysql_init");
|
die("Failed on mysql_init");
|
||||||
|
|
||||||
if (!mysql_real_connect(local_mysql, host, user, pass, 0, port, 0, 0))
|
if (!mysql_real_connect(local_mysql, host, user, pass, 0, port, sock, 0))
|
||||||
die("failed on connect: %s", mysql_error(local_mysql));
|
die("failed on connect: %s", mysql_error(local_mysql));
|
||||||
|
|
||||||
return local_mysql;
|
return local_mysql;
|
||||||
@ -383,35 +382,6 @@ static void dump_log_entries(const char* logname)
|
|||||||
dump_local_log_entries(logname);
|
dump_local_log_entries(logname);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_remote_table(NET* net, const char* db, const char* table)
|
|
||||||
{
|
|
||||||
char buf[1024];
|
|
||||||
char * p = buf;
|
|
||||||
uint table_len = (uint) strlen(table);
|
|
||||||
uint db_len = (uint) strlen(db);
|
|
||||||
if (table_len + db_len > sizeof(buf) - 2)
|
|
||||||
die("Buffer overrun");
|
|
||||||
|
|
||||||
*p++ = db_len;
|
|
||||||
memcpy(p, db, db_len);
|
|
||||||
p += db_len;
|
|
||||||
*p++ = table_len;
|
|
||||||
memcpy(p, table, table_len);
|
|
||||||
|
|
||||||
if (simple_command(mysql, COM_TABLE_DUMP, buf, p - buf + table_len, 1))
|
|
||||||
die("Error sending the table dump command");
|
|
||||||
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
uint packet_len = my_net_read(net);
|
|
||||||
if (packet_len == 0) break; // end of file
|
|
||||||
if (packet_len == packet_error)
|
|
||||||
die("Error reading packet in table dump");
|
|
||||||
my_fwrite(result_file, (byte*)net->read_pos, packet_len, MYF(MY_WME));
|
|
||||||
fflush(result_file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int check_master_version(MYSQL* mysql)
|
static int check_master_version(MYSQL* mysql)
|
||||||
{
|
{
|
||||||
MYSQL_RES* res = 0;
|
MYSQL_RES* res = 0;
|
||||||
@ -491,7 +461,7 @@ static void dump_remote_log_entries(const char* logname)
|
|||||||
len = net_safe_read(mysql);
|
len = net_safe_read(mysql);
|
||||||
if (len == packet_error)
|
if (len == packet_error)
|
||||||
die("Error reading packet from server: %s", mysql_error(mysql));
|
die("Error reading packet from server: %s", mysql_error(mysql));
|
||||||
if (len == 1 && net->read_pos[0] == 254)
|
if (len < 8 && net->read_pos[0] == 254)
|
||||||
break; // end of data
|
break; // end of data
|
||||||
DBUG_PRINT("info",( "len= %u, net->read_pos[5] = %d\n",
|
DBUG_PRINT("info",( "len= %u, net->read_pos[5] = %d\n",
|
||||||
len, net->read_pos[5]));
|
len, net->read_pos[5]));
|
||||||
@ -527,8 +497,8 @@ static int check_header(IO_CACHE* file)
|
|||||||
if (buf[4] == START_EVENT)
|
if (buf[4] == START_EVENT)
|
||||||
{
|
{
|
||||||
uint event_len;
|
uint event_len;
|
||||||
event_len = uint4korr(buf + 4);
|
event_len = uint4korr(buf + EVENT_LEN_OFFSET);
|
||||||
old_format = (event_len < LOG_EVENT_HEADER_LEN + START_HEADER_LEN);
|
old_format = (event_len < (LOG_EVENT_HEADER_LEN + START_HEADER_LEN));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
my_b_seek(file, pos);
|
my_b_seek(file, pos);
|
||||||
@ -673,7 +643,7 @@ int main(int argc, char** argv)
|
|||||||
MY_INIT(argv[0]);
|
MY_INIT(argv[0]);
|
||||||
parse_args(&argc, (char***)&argv);
|
parse_args(&argc, (char***)&argv);
|
||||||
|
|
||||||
if (!argc && !table)
|
if (!argc)
|
||||||
{
|
{
|
||||||
usage();
|
usage();
|
||||||
return -1;
|
return -1;
|
||||||
@ -696,22 +666,8 @@ int main(int argc, char** argv)
|
|||||||
else
|
else
|
||||||
load_processor.init_by_cur_dir();
|
load_processor.init_by_cur_dir();
|
||||||
|
|
||||||
if (table)
|
while (--argc >= 0)
|
||||||
{
|
dump_log_entries(*(argv++));
|
||||||
if (!use_remote)
|
|
||||||
die("You must specify connection parameter to get table dump");
|
|
||||||
char* db = (char*) table;
|
|
||||||
char* tbl = (char*) strchr(table, '.');
|
|
||||||
if (!tbl)
|
|
||||||
die("You must use database.table syntax to specify the table");
|
|
||||||
*tbl++ = 0;
|
|
||||||
dump_remote_table(&mysql->net, db, tbl);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
while (--argc >= 0)
|
|
||||||
dump_log_entries(*(argv++));
|
|
||||||
}
|
|
||||||
if (tmpdir.list)
|
if (tmpdir.list)
|
||||||
free_tmpdir(&tmpdir);
|
free_tmpdir(&tmpdir);
|
||||||
if (result_file != stdout)
|
if (result_file != stdout)
|
||||||
|
@ -722,8 +722,8 @@ int do_wait_for_slave_to_stop(struct st_query* q __attribute__((unused)))
|
|||||||
int done;
|
int done;
|
||||||
LINT_INIT(res);
|
LINT_INIT(res);
|
||||||
|
|
||||||
if (mysql_query(mysql,"show status like 'Slave_running'")
|
if (mysql_query(mysql,"show status like 'Slave_running'") ||
|
||||||
|| !(res=mysql_store_result(mysql)))
|
!(res=mysql_store_result(mysql)))
|
||||||
die("Query failed while probing slave for stop: %s",
|
die("Query failed while probing slave for stop: %s",
|
||||||
mysql_error(mysql));
|
mysql_error(mysql));
|
||||||
if (!(row=mysql_fetch_row(res)) || !row[1])
|
if (!(row=mysql_fetch_row(res)) || !row[1])
|
||||||
@ -1014,7 +1014,8 @@ int do_sync_with_master2(const char* p)
|
|||||||
if (!(row = mysql_fetch_row(res)))
|
if (!(row = mysql_fetch_row(res)))
|
||||||
die("line %u: empty result in %s", start_lineno, query_buf);
|
die("line %u: empty result in %s", start_lineno, query_buf);
|
||||||
if (!row[0])
|
if (!row[0])
|
||||||
die("Error on slave while syncing with master");
|
die("line %u: could not sync with master ('%s' returned NULL)",
|
||||||
|
start_lineno, query_buf);
|
||||||
mysql_free_result(res);
|
mysql_free_result(res);
|
||||||
last_result=0;
|
last_result=0;
|
||||||
if (rpl_parse)
|
if (rpl_parse)
|
||||||
@ -2182,19 +2183,21 @@ int run_query(MYSQL* mysql, struct st_query* q, int flags)
|
|||||||
goto end; /* Ok */
|
goto end; /* Ok */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i)
|
DBUG_PRINT("info",("i: %d expected_errors: %d", i, q->expected_errors));
|
||||||
{
|
dynstr_append_mem(ds,"ERROR ",6);
|
||||||
replace_dynstr_append_mem(ds, mysql_error(mysql),
|
replace_dynstr_append_mem(ds, mysql_sqlstate(mysql),
|
||||||
strlen(mysql_error(mysql)));
|
strlen(mysql_sqlstate(mysql)));
|
||||||
dynstr_append_mem(ds,"\n",1);
|
dynstr_append_mem(ds,": ",2);
|
||||||
verbose_msg("query '%s' failed with wrong errno %d instead of %d...",
|
replace_dynstr_append_mem(ds, mysql_error(mysql),
|
||||||
q->query, mysql_errno(mysql), q->expected_errno[0]);
|
|
||||||
error=1;
|
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
replace_dynstr_append_mem(ds,mysql_error(mysql),
|
|
||||||
strlen(mysql_error(mysql)));
|
strlen(mysql_error(mysql)));
|
||||||
dynstr_append_mem(ds,"\n",1);
|
dynstr_append_mem(ds,"\n",1);
|
||||||
|
if (i)
|
||||||
|
{
|
||||||
|
verbose_msg("query '%s' failed with wrong errno %d instead of %d...",
|
||||||
|
q->query, mysql_errno(mysql), q->expected_errno[0]);
|
||||||
|
error= 1;
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
verbose_msg("query '%s' failed: %d: %s", q->query, mysql_errno(mysql),
|
verbose_msg("query '%s' failed: %d: %s", q->query, mysql_errno(mysql),
|
||||||
mysql_error(mysql));
|
mysql_error(mysql));
|
||||||
/*
|
/*
|
||||||
@ -2607,7 +2610,8 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
dynstr_free(&ds_res);
|
dynstr_free(&ds_res);
|
||||||
|
|
||||||
if (!silent) {
|
if (!silent)
|
||||||
|
{
|
||||||
if (error)
|
if (error)
|
||||||
printf("not ok\n");
|
printf("not ok\n");
|
||||||
else
|
else
|
||||||
|
24
configure.in
24
configure.in
@ -755,7 +755,7 @@ AC_CHECK_LIB(crypt, crypt)
|
|||||||
AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT))
|
AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT))
|
||||||
|
|
||||||
# For sem_xxx functions on Solaris 2.6
|
# For sem_xxx functions on Solaris 2.6
|
||||||
AC_CHECK_FUNC(sem_init, , AC_CHECK_LIB(posix4))
|
AC_CHECK_FUNC(sem_init, , AC_CHECK_LIB(posix4, sem_init))
|
||||||
|
|
||||||
# For compress in zlib
|
# For compress in zlib
|
||||||
MYSQL_CHECK_ZLIB_WITH_COMPRESS($with_named_zlib)
|
MYSQL_CHECK_ZLIB_WITH_COMPRESS($with_named_zlib)
|
||||||
@ -1280,12 +1280,12 @@ then
|
|||||||
AC_MSG_ERROR([On SCO UNIX MySQL must be compiled with gcc. See the Installation chapter in the Reference Manual.]);
|
AC_MSG_ERROR([On SCO UNIX MySQL must be compiled with gcc. See the Installation chapter in the Reference Manual.]);
|
||||||
fi
|
fi
|
||||||
AC_MSG_RESULT("yes")
|
AC_MSG_RESULT("yes")
|
||||||
# Hack for SCO UnixWare 7.1
|
# Hack for SCO UnixWare 7.1.x
|
||||||
#
|
#
|
||||||
elif test "$with_named_thread" = "no"
|
elif test "$with_named_thread" = "no"
|
||||||
then
|
then
|
||||||
AC_MSG_RESULT("no")
|
AC_MSG_RESULT("no")
|
||||||
AC_MSG_CHECKING("SCO UnixWare 7.1 native threads")
|
AC_MSG_CHECKING("SCO UnixWare 7.1.x native threads")
|
||||||
if expr "$SYSTEM_TYPE" : ".*sco.*" > /dev/null
|
if expr "$SYSTEM_TYPE" : ".*sco.*" > /dev/null
|
||||||
then
|
then
|
||||||
if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so
|
if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so
|
||||||
@ -1308,11 +1308,11 @@ then
|
|||||||
AC_MSG_CHECKING("for gcc")
|
AC_MSG_CHECKING("for gcc")
|
||||||
if expr "$CC" : ".*gcc.*"
|
if expr "$CC" : ".*gcc.*"
|
||||||
then
|
then
|
||||||
CC="$CC -pthread -DUNIXWARE_7";
|
CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
CXX="$CXX -pthread -DUNIXWARE_7";
|
CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
else
|
else
|
||||||
CC="$CC -Kthread -DUNIXWARE_7";
|
CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
CXX="$CXX -Kthread -DUNIXWARE_7";
|
CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
{ echo "configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual." 1>&2; exit 1; };
|
{ echo "configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual." 1>&2; exit 1; };
|
||||||
@ -1348,10 +1348,11 @@ then
|
|||||||
AC_MSG_CHECKING("for gcc")
|
AC_MSG_CHECKING("for gcc")
|
||||||
if expr "$CC" : ".*gcc.*"
|
if expr "$CC" : ".*gcc.*"
|
||||||
then
|
then
|
||||||
{ echo "configure: error: On SCO UnixWare7 MySQL must be compiled with cc. See the Installation chapter in the Reference Manual." 1>&2; exit 1; };
|
CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
|
CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
else
|
else
|
||||||
CC="$CC -Kthread -DUNIXWARE_7";
|
CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
CXX="$CXX -Kthread -DUNIXWARE_7";
|
CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
fi
|
fi
|
||||||
AC_MSG_RESULT("yes")
|
AC_MSG_RESULT("yes")
|
||||||
else
|
else
|
||||||
@ -1383,7 +1384,8 @@ then
|
|||||||
AC_MSG_CHECKING("for gcc")
|
AC_MSG_CHECKING("for gcc")
|
||||||
if expr "$CC" : ".*gcc.*"
|
if expr "$CC" : ".*gcc.*"
|
||||||
then
|
then
|
||||||
{ echo "configure: error: On OpenUNIX8 and UnixWare7 MySQL must be compiled with cc. See the Installation chapter in the Reference Manual." 1>&2; exit 1; };
|
CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
|
CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
else
|
else
|
||||||
CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
|
@ -111,7 +111,7 @@ static void usage(void)
|
|||||||
{
|
{
|
||||||
print_version();
|
print_version();
|
||||||
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license\n");
|
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license\n");
|
||||||
printf("Print a description for a system error code or a error code from\na MyISAM/ISAM/BDB table handler.\n");
|
printf("Print a description for a system error code or an error code from\na MyISAM/ISAM/BDB table handler.\n");
|
||||||
printf("If you want to get the error for a negative error code, you should use\n-- before the first error code to tell perror that there was no more options.\n\n");
|
printf("If you want to get the error for a negative error code, you should use\n-- before the first error code to tell perror that there was no more options.\n\n");
|
||||||
printf("Usage: %s [OPTIONS] [ERRORCODE [ERRORCODE...]]\n",my_progname);
|
printf("Usage: %s [OPTIONS] [ERRORCODE [ERRORCODE...]]\n",my_progname);
|
||||||
my_print_help(my_long_options);
|
my_print_help(my_long_options);
|
||||||
|
@ -50,6 +50,7 @@ int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
|
|||||||
length+= keyinfo->seg[j].length;
|
length+= keyinfo->seg[j].length;
|
||||||
if (keyinfo->seg[j].null_bit)
|
if (keyinfo->seg[j].null_bit)
|
||||||
{
|
{
|
||||||
|
length++;
|
||||||
if (!(keyinfo->flag & HA_NULL_ARE_EQUAL))
|
if (!(keyinfo->flag & HA_NULL_ARE_EQUAL))
|
||||||
keyinfo->flag|= HA_NULL_PART_KEY;
|
keyinfo->flag|= HA_NULL_PART_KEY;
|
||||||
if (keyinfo->algorithm == HA_KEY_ALG_BTREE)
|
if (keyinfo->algorithm == HA_KEY_ALG_BTREE)
|
||||||
|
@ -253,7 +253,6 @@ inline double ulonglong2double(ulonglong value)
|
|||||||
|
|
||||||
#define HAVE_PERROR
|
#define HAVE_PERROR
|
||||||
#define HAVE_VFPRINT
|
#define HAVE_VFPRINT
|
||||||
#define HAVE_CHSIZE /* System has chsize() function */
|
|
||||||
#define HAVE_RENAME /* Have rename() as function */
|
#define HAVE_RENAME /* Have rename() as function */
|
||||||
#define HAVE_BINARY_STREAMS /* Have "b" flag in streams */
|
#define HAVE_BINARY_STREAMS /* Have "b" flag in streams */
|
||||||
#define HAVE_LONG_JMP /* Have long jump function */
|
#define HAVE_LONG_JMP /* Have long jump function */
|
||||||
|
@ -79,7 +79,7 @@ enum my_lex_states
|
|||||||
{
|
{
|
||||||
MY_LEX_START, MY_LEX_CHAR, MY_LEX_IDENT,
|
MY_LEX_START, MY_LEX_CHAR, MY_LEX_IDENT,
|
||||||
MY_LEX_IDENT_SEP, MY_LEX_IDENT_START,
|
MY_LEX_IDENT_SEP, MY_LEX_IDENT_START,
|
||||||
MY_LEX_FOUND_IDENT, MY_LEX_SIGNED_NUMBER, MY_LEX_REAL, MY_LEX_HEX_NUMBER,
|
MY_LEX_FOUND_IDENT, MY_LEX_REAL, MY_LEX_HEX_NUMBER,
|
||||||
MY_LEX_CMP_OP, MY_LEX_LONG_CMP_OP, MY_LEX_STRING, MY_LEX_COMMENT, MY_LEX_END,
|
MY_LEX_CMP_OP, MY_LEX_LONG_CMP_OP, MY_LEX_STRING, MY_LEX_COMMENT, MY_LEX_END,
|
||||||
MY_LEX_OPERATOR_OR_IDENT, MY_LEX_NUMBER_IDENT, MY_LEX_INT_OR_REAL,
|
MY_LEX_OPERATOR_OR_IDENT, MY_LEX_NUMBER_IDENT, MY_LEX_INT_OR_REAL,
|
||||||
MY_LEX_REAL_OR_POINT, MY_LEX_BOOL, MY_LEX_EOL, MY_LEX_ESCAPE,
|
MY_LEX_REAL_OR_POINT, MY_LEX_BOOL, MY_LEX_EOL, MY_LEX_ESCAPE,
|
||||||
|
@ -257,7 +257,8 @@ enum ha_base_keytype {
|
|||||||
#define HA_ERR_CANNOT_ADD_FOREIGN 150 /* Cannot add a foreign key constr. */
|
#define HA_ERR_CANNOT_ADD_FOREIGN 150 /* Cannot add a foreign key constr. */
|
||||||
#define HA_ERR_NO_REFERENCED_ROW 151 /* Cannot add a child row */
|
#define HA_ERR_NO_REFERENCED_ROW 151 /* Cannot add a child row */
|
||||||
#define HA_ERR_ROW_IS_REFERENCED 152 /* Cannot delete a parent row */
|
#define HA_ERR_ROW_IS_REFERENCED 152 /* Cannot delete a parent row */
|
||||||
#define HA_ERR_NON_UNIQUE_BLOCK_SIZE 153 /* Non unique key block size */
|
#define HA_ERR_NO_SAVEPOINT 153 /* No savepoint with that name */
|
||||||
|
#define HA_ERR_NON_UNIQUE_BLOCK_SIZE 154 /* Non unique key block size */
|
||||||
|
|
||||||
/* Other constants */
|
/* Other constants */
|
||||||
|
|
||||||
|
@ -43,6 +43,10 @@
|
|||||||
#define HAVE_ERRNO_AS_DEFINE
|
#define HAVE_ERRNO_AS_DEFINE
|
||||||
#endif /* __CYGWIN__ */
|
#endif /* __CYGWIN__ */
|
||||||
|
|
||||||
|
#if defined(i386) && !defined(__i386__)
|
||||||
|
#define __i386__
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Macros to make switching between C and C++ mode easier */
|
/* Macros to make switching between C and C++ mode easier */
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#define C_MODE_START extern "C" {
|
#define C_MODE_START extern "C" {
|
||||||
@ -283,7 +287,9 @@ C_MODE_END
|
|||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_ATOMIC_ADD
|
#ifdef HAVE_ATOMIC_ADD
|
||||||
#define __SMP__
|
#define __SMP__
|
||||||
|
#ifndef CONFIG_SMP
|
||||||
#define CONFIG_SMP
|
#define CONFIG_SMP
|
||||||
|
#endif
|
||||||
#include <asm/atomic.h>
|
#include <asm/atomic.h>
|
||||||
#endif
|
#endif
|
||||||
#include <errno.h> /* Recommended by debian */
|
#include <errno.h> /* Recommended by debian */
|
||||||
@ -660,7 +666,6 @@ typedef long my_ptrdiff_t;
|
|||||||
typedef long long my_ptrdiff_t;
|
typedef long long my_ptrdiff_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define MY_ALIGN(A,L) (((A) + (L) - 1) & ~((L) - 1))
|
#define MY_ALIGN(A,L) (((A) + (L) - 1) & ~((L) - 1))
|
||||||
#define ALIGN_SIZE(A) MY_ALIGN((A),sizeof(double))
|
#define ALIGN_SIZE(A) MY_ALIGN((A),sizeof(double))
|
||||||
/* Size to make adressable obj. */
|
/* Size to make adressable obj. */
|
||||||
@ -737,9 +742,6 @@ typedef unsigned __int64 my_ulonglong;
|
|||||||
typedef unsigned long long my_ulonglong;
|
typedef unsigned long long my_ulonglong;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* typedef used for length of string; Should be unsigned! */
|
|
||||||
typedef ulong size_str;
|
|
||||||
|
|
||||||
#ifdef USE_RAID
|
#ifdef USE_RAID
|
||||||
/*
|
/*
|
||||||
The following is done with a if to not get problems with pre-processors
|
The following is done with a if to not get problems with pre-processors
|
||||||
@ -920,8 +922,11 @@ typedef union {
|
|||||||
double v;
|
double v;
|
||||||
long m[2];
|
long m[2];
|
||||||
} doubleget_union;
|
} doubleget_union;
|
||||||
#define doubleget(V,M) { ((doubleget_union *)&V)->m[0] = *((long*) M); \
|
#define doubleget(V,M) \
|
||||||
((doubleget_union *)&V)->m[1] = *(((long*) M)+1); }
|
{ doubleget_union _tmp; \
|
||||||
|
_tmp.m[0] = *((long*)(M)); \
|
||||||
|
_tmp.m[1] = *(((long*) (M))+1); \
|
||||||
|
(V) = _tmp.v; }
|
||||||
#define doublestore(T,V) { *((long *) T) = ((doubleget_union *)&V)->m[0]; \
|
#define doublestore(T,V) { *((long *) T) = ((doubleget_union *)&V)->m[0]; \
|
||||||
*(((long *) T)+1) = ((doubleget_union *)&V)->m[1]; }
|
*(((long *) T)+1) = ((doubleget_union *)&V)->m[1]; }
|
||||||
#define float4get(V,M) { *((long *) &(V)) = *((long*) (M)); }
|
#define float4get(V,M) { *((long *) &(V)) = *((long*) (M)); }
|
||||||
|
@ -135,7 +135,7 @@ extern int NEAR my_errno; /* Last error in mysys */
|
|||||||
#define QUICK_SAFEMALLOC sf_malloc_quick=1
|
#define QUICK_SAFEMALLOC sf_malloc_quick=1
|
||||||
#define NORMAL_SAFEMALLOC sf_malloc_quick=0
|
#define NORMAL_SAFEMALLOC sf_malloc_quick=0
|
||||||
extern uint sf_malloc_prehunc,sf_malloc_endhunc,sf_malloc_quick;
|
extern uint sf_malloc_prehunc,sf_malloc_endhunc,sf_malloc_quick;
|
||||||
extern ulonglong safemalloc_mem_limit;
|
extern ulonglong sf_malloc_mem_limit;
|
||||||
|
|
||||||
#define CALLER_INFO_PROTO , const char *sFile, uint uLine
|
#define CALLER_INFO_PROTO , const char *sFile, uint uLine
|
||||||
#define CALLER_INFO , __FILE__, __LINE__
|
#define CALLER_INFO , __FILE__, __LINE__
|
||||||
@ -240,7 +240,7 @@ extern int NEAR my_umask, /* Default creation mask */
|
|||||||
NEAR my_safe_to_handle_signal, /* Set when allowed to SIGTSTP */
|
NEAR my_safe_to_handle_signal, /* Set when allowed to SIGTSTP */
|
||||||
NEAR my_dont_interrupt; /* call remember_intr when set */
|
NEAR my_dont_interrupt; /* call remember_intr when set */
|
||||||
extern my_bool NEAR mysys_uses_curses, my_use_symdir;
|
extern my_bool NEAR mysys_uses_curses, my_use_symdir;
|
||||||
extern long lCurMemory,lMaxMemory; /* from safemalloc */
|
extern ulong sf_malloc_cur_memory, sf_malloc_max_memory;
|
||||||
|
|
||||||
extern ulong my_default_record_cache_size;
|
extern ulong my_default_record_cache_size;
|
||||||
extern my_bool NEAR my_disable_locking,NEAR my_disable_async_io,
|
extern my_bool NEAR my_disable_locking,NEAR my_disable_async_io,
|
||||||
|
@ -253,8 +253,8 @@ unsigned long my_net_read(NET *net);
|
|||||||
Currently it's used internally by manager.c
|
Currently it's used internally by manager.c
|
||||||
*/
|
*/
|
||||||
struct sockaddr;
|
struct sockaddr;
|
||||||
my_bool my_connect(my_socket s, const struct sockaddr *name,
|
int my_connect(my_socket s, const struct sockaddr *name, unsigned int namelen,
|
||||||
unsigned int namelen, unsigned int timeout);
|
unsigned int timeout);
|
||||||
|
|
||||||
struct rand_struct {
|
struct rand_struct {
|
||||||
unsigned long seed1,seed2,max_value;
|
unsigned long seed1,seed2,max_value;
|
||||||
|
@ -253,39 +253,40 @@
|
|||||||
#define ER_CANT_USE_OPTION_HERE 1234
|
#define ER_CANT_USE_OPTION_HERE 1234
|
||||||
#define ER_NOT_SUPPORTED_YET 1235
|
#define ER_NOT_SUPPORTED_YET 1235
|
||||||
#define ER_MASTER_FATAL_ERROR_READING_BINLOG 1236
|
#define ER_MASTER_FATAL_ERROR_READING_BINLOG 1236
|
||||||
#define ER_WRONG_FK_DEF 1237
|
#define ER_SLAVE_IGNORED_TABLE 1237
|
||||||
#define ER_KEY_REF_DO_NOT_MATCH_TABLE_REF 1238
|
#define ER_WRONG_FK_DEF 1238
|
||||||
#define ER_CARDINALITY_COL 1239
|
#define ER_KEY_REF_DO_NOT_MATCH_TABLE_REF 1239
|
||||||
#define ER_SUBSELECT_NO_1_ROW 1240
|
#define ER_CARDINALITY_COL 1240
|
||||||
#define ER_UNKNOWN_STMT_HANDLER 1241
|
#define ER_SUBSELECT_NO_1_ROW 1241
|
||||||
#define ER_CORRUPT_HELP_DB 1242
|
#define ER_UNKNOWN_STMT_HANDLER 1242
|
||||||
#define ER_CYCLIC_REFERENCE 1243
|
#define ER_CORRUPT_HELP_DB 1243
|
||||||
#define ER_AUTO_CONVERT 1244
|
#define ER_CYCLIC_REFERENCE 1244
|
||||||
#define ER_ILLEGAL_REFERENCE 1245
|
#define ER_AUTO_CONVERT 1245
|
||||||
#define ER_DERIVED_MUST_HAVE_ALIAS 1246
|
#define ER_ILLEGAL_REFERENCE 1246
|
||||||
#define ER_SELECT_REDUCED 1247
|
#define ER_DERIVED_MUST_HAVE_ALIAS 1247
|
||||||
#define ER_TABLENAME_NOT_ALLOWED_HERE 1248
|
#define ER_SELECT_REDUCED 1248
|
||||||
#define ER_NOT_SUPPORTED_AUTH_MODE 1249
|
#define ER_TABLENAME_NOT_ALLOWED_HERE 1249
|
||||||
#define ER_SPATIAL_CANT_HAVE_NULL 1250
|
#define ER_NOT_SUPPORTED_AUTH_MODE 1250
|
||||||
#define ER_COLLATION_CHARSET_MISMATCH 1251
|
#define ER_SPATIAL_CANT_HAVE_NULL 1251
|
||||||
#define ER_SLAVE_WAS_RUNNING 1252
|
#define ER_COLLATION_CHARSET_MISMATCH 1252
|
||||||
#define ER_SLAVE_WAS_NOT_RUNNING 1253
|
#define ER_SLAVE_WAS_RUNNING 1253
|
||||||
#define ER_TOO_BIG_FOR_UNCOMPRESS 1254
|
#define ER_SLAVE_WAS_NOT_RUNNING 1254
|
||||||
#define ER_ZLIB_Z_MEM_ERROR 1255
|
#define ER_TOO_BIG_FOR_UNCOMPRESS 1255
|
||||||
#define ER_ZLIB_Z_BUF_ERROR 1256
|
#define ER_ZLIB_Z_MEM_ERROR 1256
|
||||||
#define ER_ZLIB_Z_DATA_ERROR 1257
|
#define ER_ZLIB_Z_BUF_ERROR 1257
|
||||||
#define ER_CUT_VALUE_GROUP_CONCAT 1258
|
#define ER_ZLIB_Z_DATA_ERROR 1258
|
||||||
#define ER_WARN_TOO_FEW_RECORDS 1259
|
#define ER_CUT_VALUE_GROUP_CONCAT 1259
|
||||||
#define ER_WARN_TOO_MANY_RECORDS 1260
|
#define ER_WARN_TOO_FEW_RECORDS 1260
|
||||||
#define ER_WARN_NULL_TO_NOTNULL 1261
|
#define ER_WARN_TOO_MANY_RECORDS 1261
|
||||||
#define ER_WARN_DATA_OUT_OF_RANGE 1262
|
#define ER_WARN_NULL_TO_NOTNULL 1262
|
||||||
#define ER_WARN_DATA_TRUNCATED 1263
|
#define ER_WARN_DATA_OUT_OF_RANGE 1263
|
||||||
#define ER_WARN_USING_OTHER_HANDLER 1264
|
#define ER_WARN_DATA_TRUNCATED 1264
|
||||||
#define ER_CANT_AGGREGATE_2COLLATIONS 1265
|
#define ER_WARN_USING_OTHER_HANDLER 1265
|
||||||
#define ER_DROP_USER 1266
|
#define ER_CANT_AGGREGATE_2COLLATIONS 1266
|
||||||
#define ER_REVOKE_GRANTS 1267
|
#define ER_DROP_USER 1267
|
||||||
#define ER_CANT_AGGREGATE_3COLLATIONS 1268
|
#define ER_REVOKE_GRANTS 1268
|
||||||
#define ER_CANT_AGGREGATE_NCOLLATIONS 1269
|
#define ER_CANT_AGGREGATE_3COLLATIONS 1269
|
||||||
#define ER_VARIABLE_IS_NOT_STRUCT 1270
|
#define ER_CANT_AGGREGATE_NCOLLATIONS 1270
|
||||||
#define ER_UNKNOWN_COLLATION 1271
|
#define ER_VARIABLE_IS_NOT_STRUCT 1271
|
||||||
#define ER_ERROR_MESSAGES 272
|
#define ER_UNKNOWN_COLLATION 1272
|
||||||
|
#define ER_ERROR_MESSAGES 273
|
||||||
|
@ -822,9 +822,16 @@ btr_page_reorganize_low(
|
|||||||
{
|
{
|
||||||
page_t* new_page;
|
page_t* new_page;
|
||||||
ulint log_mode;
|
ulint log_mode;
|
||||||
|
ulint data_size1;
|
||||||
|
ulint data_size2;
|
||||||
|
ulint max_ins_size1;
|
||||||
|
ulint max_ins_size2;
|
||||||
|
|
||||||
ut_ad(mtr_memo_contains(mtr, buf_block_align(page),
|
ut_ad(mtr_memo_contains(mtr, buf_block_align(page),
|
||||||
MTR_MEMO_PAGE_X_FIX));
|
MTR_MEMO_PAGE_X_FIX));
|
||||||
|
data_size1 = page_get_data_size(page);
|
||||||
|
max_ins_size1 = page_get_max_insert_size_after_reorganize(page, 1);
|
||||||
|
|
||||||
/* Write the log record */
|
/* Write the log record */
|
||||||
mlog_write_initial_log_record(page, MLOG_PAGE_REORGANIZE, mtr);
|
mlog_write_initial_log_record(page, MLOG_PAGE_REORGANIZE, mtr);
|
||||||
|
|
||||||
@ -859,6 +866,19 @@ btr_page_reorganize_low(
|
|||||||
lock_move_reorganize_page(page, new_page);
|
lock_move_reorganize_page(page, new_page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data_size2 = page_get_data_size(page);
|
||||||
|
max_ins_size2 = page_get_max_insert_size_after_reorganize(page, 1);
|
||||||
|
|
||||||
|
if (data_size1 != data_size2 || max_ins_size1 != max_ins_size2) {
|
||||||
|
buf_page_print(page);
|
||||||
|
buf_page_print(new_page);
|
||||||
|
fprintf(stderr,
|
||||||
|
"InnoDB: Error: page old data size %lu new data size %lu\n"
|
||||||
|
"InnoDB: Error: page old max ins size %lu new max ins size %lu\n"
|
||||||
|
"InnoDB: Make a detailed bug report and send it to mysql@lists.mysql.com\n",
|
||||||
|
data_size1, data_size2, max_ins_size1, max_ins_size2);
|
||||||
|
}
|
||||||
|
|
||||||
buf_frame_free(new_page);
|
buf_frame_free(new_page);
|
||||||
|
|
||||||
/* Restore logging mode */
|
/* Restore logging mode */
|
||||||
@ -1945,11 +1965,20 @@ btr_compress(
|
|||||||
|
|
||||||
btr_page_reorganize(merge_page, mtr);
|
btr_page_reorganize(merge_page, mtr);
|
||||||
|
|
||||||
|
max_ins_size = page_get_max_insert_size(merge_page, n_recs);
|
||||||
|
|
||||||
ut_ad(page_validate(merge_page, cursor->index));
|
ut_ad(page_validate(merge_page, cursor->index));
|
||||||
ut_ad(page_get_max_insert_size(merge_page, n_recs)
|
ut_ad(page_get_max_insert_size(merge_page, n_recs)
|
||||||
== max_ins_size_reorg);
|
== max_ins_size_reorg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (data_size > max_ins_size) {
|
||||||
|
|
||||||
|
/* Add fault tolerance, though this should never happen */
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
btr_search_drop_page_hash_index(page);
|
btr_search_drop_page_hash_index(page);
|
||||||
|
|
||||||
/* Remove the page from the level list */
|
/* Remove the page from the level list */
|
||||||
|
@ -1110,6 +1110,10 @@ btr_cur_pessimistic_insert(
|
|||||||
|
|
||||||
if (big_rec_vec == NULL) {
|
if (big_rec_vec == NULL) {
|
||||||
|
|
||||||
|
if (n_extents > 0) {
|
||||||
|
fil_space_release_free_extents(index->space,
|
||||||
|
n_extents);
|
||||||
|
}
|
||||||
return(DB_TOO_BIG_RECORD);
|
return(DB_TOO_BIG_RECORD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1367,7 +1371,8 @@ btr_cur_update_sec_rec_in_place(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************
|
/*****************************************************************
|
||||||
Updates a record when the update causes no size changes in its fields. */
|
Updates a record when the update causes no size changes in its fields.
|
||||||
|
We assume here that the ordering fields of the record do not change. */
|
||||||
|
|
||||||
ulint
|
ulint
|
||||||
btr_cur_update_in_place(
|
btr_cur_update_in_place(
|
||||||
@ -1458,7 +1463,8 @@ btr_cur_update_in_place(
|
|||||||
Tries to update a record on a page in an index tree. It is assumed that mtr
|
Tries to update a record on a page in an index tree. It is assumed that mtr
|
||||||
holds an x-latch on the page. The operation does not succeed if there is too
|
holds an x-latch on the page. The operation does not succeed if there is too
|
||||||
little space on the page or if the update would result in too empty a page,
|
little space on the page or if the update would result in too empty a page,
|
||||||
so that tree compression is recommended. */
|
so that tree compression is recommended. We assume here that the ordering
|
||||||
|
fields of the record do not change. */
|
||||||
|
|
||||||
ulint
|
ulint
|
||||||
btr_cur_optimistic_update(
|
btr_cur_optimistic_update(
|
||||||
@ -1510,10 +1516,11 @@ btr_cur_optimistic_update(
|
|||||||
|
|
||||||
ut_ad(mtr_memo_contains(mtr, buf_block_align(page),
|
ut_ad(mtr_memo_contains(mtr, buf_block_align(page),
|
||||||
MTR_MEMO_PAGE_X_FIX));
|
MTR_MEMO_PAGE_X_FIX));
|
||||||
if (!row_upd_changes_field_size(rec, index, update)) {
|
if (!row_upd_changes_field_size_or_external(rec, index, update)) {
|
||||||
|
|
||||||
/* The simplest and most common case: the update does not
|
/* The simplest and the most common case: the update does not
|
||||||
change the size of any field */
|
change the size of any field and none of the updated fields is
|
||||||
|
externally stored in rec or update */
|
||||||
|
|
||||||
return(btr_cur_update_in_place(flags, cursor, update,
|
return(btr_cur_update_in_place(flags, cursor, update,
|
||||||
cmpl_info, thr, mtr));
|
cmpl_info, thr, mtr));
|
||||||
@ -1542,7 +1549,7 @@ btr_cur_optimistic_update(
|
|||||||
|
|
||||||
new_entry = row_rec_to_index_entry(ROW_COPY_DATA, index, rec, heap);
|
new_entry = row_rec_to_index_entry(ROW_COPY_DATA, index, rec, heap);
|
||||||
|
|
||||||
row_upd_clust_index_replace_new_col_vals(new_entry, update);
|
row_upd_index_replace_new_col_vals(new_entry, index, update, NULL);
|
||||||
|
|
||||||
old_rec_size = rec_get_size(rec);
|
old_rec_size = rec_get_size(rec);
|
||||||
new_rec_size = rec_get_converted_size(new_entry);
|
new_rec_size = rec_get_converted_size(new_entry);
|
||||||
@ -1672,54 +1679,13 @@ btr_cur_pess_upd_restore_supremum(
|
|||||||
lock_rec_reset_and_inherit_gap_locks(page_get_supremum_rec(prev_page),
|
lock_rec_reset_and_inherit_gap_locks(page_get_supremum_rec(prev_page),
|
||||||
rec);
|
rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************************************************
|
|
||||||
Replaces and copies the data in the new column values stored in the
|
|
||||||
update vector to the clustered index entry given. */
|
|
||||||
static
|
|
||||||
void
|
|
||||||
btr_cur_copy_new_col_vals(
|
|
||||||
/*======================*/
|
|
||||||
dtuple_t* entry, /* in/out: index entry where replaced */
|
|
||||||
upd_t* update, /* in: update vector */
|
|
||||||
mem_heap_t* heap) /* in: heap where data is copied */
|
|
||||||
{
|
|
||||||
upd_field_t* upd_field;
|
|
||||||
dfield_t* dfield;
|
|
||||||
dfield_t* new_val;
|
|
||||||
ulint field_no;
|
|
||||||
byte* data;
|
|
||||||
ulint i;
|
|
||||||
|
|
||||||
dtuple_set_info_bits(entry, update->info_bits);
|
|
||||||
|
|
||||||
for (i = 0; i < upd_get_n_fields(update); i++) {
|
|
||||||
|
|
||||||
upd_field = upd_get_nth_field(update, i);
|
|
||||||
|
|
||||||
field_no = upd_field->field_no;
|
|
||||||
|
|
||||||
dfield = dtuple_get_nth_field(entry, field_no);
|
|
||||||
|
|
||||||
new_val = &(upd_field->new_val);
|
|
||||||
|
|
||||||
if (new_val->len == UNIV_SQL_NULL) {
|
|
||||||
data = NULL;
|
|
||||||
} else {
|
|
||||||
data = mem_heap_alloc(heap, new_val->len);
|
|
||||||
|
|
||||||
ut_memcpy(data, new_val->data, new_val->len);
|
|
||||||
}
|
|
||||||
|
|
||||||
dfield_set_data(dfield, data, new_val->len);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************
|
/*****************************************************************
|
||||||
Performs an update of a record on a page of a tree. It is assumed
|
Performs an update of a record on a page of a tree. It is assumed
|
||||||
that mtr holds an x-latch on the tree and on the cursor page. If the
|
that mtr holds an x-latch on the tree and on the cursor page. If the
|
||||||
update is made on the leaf level, to avoid deadlocks, mtr must also
|
update is made on the leaf level, to avoid deadlocks, mtr must also
|
||||||
own x-latches to brothers of page, if those brothers exist. */
|
own x-latches to brothers of page, if those brothers exist. We assume
|
||||||
|
here that the ordering fields of the record do not change. */
|
||||||
|
|
||||||
ulint
|
ulint
|
||||||
btr_cur_pessimistic_update(
|
btr_cur_pessimistic_update(
|
||||||
@ -1816,7 +1782,7 @@ btr_cur_pessimistic_update(
|
|||||||
|
|
||||||
new_entry = row_rec_to_index_entry(ROW_COPY_DATA, index, rec, heap);
|
new_entry = row_rec_to_index_entry(ROW_COPY_DATA, index, rec, heap);
|
||||||
|
|
||||||
btr_cur_copy_new_col_vals(new_entry, update, heap);
|
row_upd_index_replace_new_col_vals(new_entry, index, update, heap);
|
||||||
|
|
||||||
if (!(flags & BTR_KEEP_SYS_FLAG)) {
|
if (!(flags & BTR_KEEP_SYS_FLAG)) {
|
||||||
row_upd_index_entry_sys_field(new_entry, index, DATA_ROLL_PTR,
|
row_upd_index_entry_sys_field(new_entry, index, DATA_ROLL_PTR,
|
||||||
@ -1825,21 +1791,6 @@ btr_cur_pessimistic_update(
|
|||||||
trx->id);
|
trx->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
page_cursor = btr_cur_get_page_cur(cursor);
|
|
||||||
|
|
||||||
/* Store state of explicit locks on rec on the page infimum record,
|
|
||||||
before deleting rec. The page infimum acts as a dummy carrier of the
|
|
||||||
locks, taking care also of lock releases, before we can move the locks
|
|
||||||
back on the actual record. There is a special case: if we are
|
|
||||||
inserting on the root page and the insert causes a call of
|
|
||||||
btr_root_raise_and_insert. Therefore we cannot in the lock system
|
|
||||||
delete the lock structs set on the root page even if the root
|
|
||||||
page carries just node pointers. */
|
|
||||||
|
|
||||||
lock_rec_store_on_page_infimum(rec);
|
|
||||||
|
|
||||||
btr_search_update_hash_on_delete(cursor);
|
|
||||||
|
|
||||||
if (flags & BTR_NO_UNDO_LOG_FLAG) {
|
if (flags & BTR_NO_UNDO_LOG_FLAG) {
|
||||||
/* We are in a transaction rollback undoing a row
|
/* We are in a transaction rollback undoing a row
|
||||||
update: we must free possible externally stored fields
|
update: we must free possible externally stored fields
|
||||||
@ -1860,10 +1811,6 @@ btr_cur_pessimistic_update(
|
|||||||
ext_vect = mem_heap_alloc(heap, sizeof(ulint) * rec_get_n_fields(rec));
|
ext_vect = mem_heap_alloc(heap, sizeof(ulint) * rec_get_n_fields(rec));
|
||||||
n_ext_vect = btr_push_update_extern_fields(ext_vect, rec, update);
|
n_ext_vect = btr_push_update_extern_fields(ext_vect, rec, update);
|
||||||
|
|
||||||
page_cur_delete_rec(page_cursor, mtr);
|
|
||||||
|
|
||||||
page_cur_move_to_prev(page_cursor);
|
|
||||||
|
|
||||||
if ((rec_get_converted_size(new_entry) >=
|
if ((rec_get_converted_size(new_entry) >=
|
||||||
page_get_free_space_of_empty() / 2)
|
page_get_free_space_of_empty() / 2)
|
||||||
|| (rec_get_converted_size(new_entry) >= REC_MAX_DATA_SIZE)) {
|
|| (rec_get_converted_size(new_entry) >= REC_MAX_DATA_SIZE)) {
|
||||||
@ -1874,10 +1821,31 @@ btr_cur_pessimistic_update(
|
|||||||
|
|
||||||
mem_heap_free(heap);
|
mem_heap_free(heap);
|
||||||
|
|
||||||
|
err = DB_TOO_BIG_RECORD;
|
||||||
|
|
||||||
goto return_after_reservations;
|
goto return_after_reservations;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
page_cursor = btr_cur_get_page_cur(cursor);
|
||||||
|
|
||||||
|
/* Store state of explicit locks on rec on the page infimum record,
|
||||||
|
before deleting rec. The page infimum acts as a dummy carrier of the
|
||||||
|
locks, taking care also of lock releases, before we can move the locks
|
||||||
|
back on the actual record. There is a special case: if we are
|
||||||
|
inserting on the root page and the insert causes a call of
|
||||||
|
btr_root_raise_and_insert. Therefore we cannot in the lock system
|
||||||
|
delete the lock structs set on the root page even if the root
|
||||||
|
page carries just node pointers. */
|
||||||
|
|
||||||
|
lock_rec_store_on_page_infimum(rec);
|
||||||
|
|
||||||
|
btr_search_update_hash_on_delete(cursor);
|
||||||
|
|
||||||
|
page_cur_delete_rec(page_cursor, mtr);
|
||||||
|
|
||||||
|
page_cur_move_to_prev(page_cursor);
|
||||||
|
|
||||||
rec = btr_cur_insert_if_possible(cursor, new_entry,
|
rec = btr_cur_insert_if_possible(cursor, new_entry,
|
||||||
&dummy_reorganized, mtr);
|
&dummy_reorganized, mtr);
|
||||||
ut_a(rec || optim_err != DB_UNDERFLOW);
|
ut_a(rec || optim_err != DB_UNDERFLOW);
|
||||||
@ -3372,8 +3340,8 @@ btr_free_externally_stored_field(
|
|||||||
page_no = mach_read_from_4(data + local_len
|
page_no = mach_read_from_4(data + local_len
|
||||||
+ BTR_EXTERN_PAGE_NO);
|
+ BTR_EXTERN_PAGE_NO);
|
||||||
|
|
||||||
offset = mach_read_from_4(data + local_len + BTR_EXTERN_OFFSET);
|
offset = mach_read_from_4(data + local_len
|
||||||
|
+ BTR_EXTERN_OFFSET);
|
||||||
extern_len = mach_read_from_4(data + local_len
|
extern_len = mach_read_from_4(data + local_len
|
||||||
+ BTR_EXTERN_LEN + 4);
|
+ BTR_EXTERN_LEN + 4);
|
||||||
|
|
||||||
|
@ -381,6 +381,8 @@ btr_pcur_move_to_next_page(
|
|||||||
btr_leaf_page_release(page, cursor->latch_mode, mtr);
|
btr_leaf_page_release(page, cursor->latch_mode, mtr);
|
||||||
|
|
||||||
page_cur_set_before_first(next_page, btr_pcur_get_page_cur(cursor));
|
page_cur_set_before_first(next_page, btr_pcur_get_page_cur(cursor));
|
||||||
|
|
||||||
|
page_check_dir(next_page);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************
|
/*************************************************************
|
||||||
|
@ -34,6 +34,7 @@ Created 11/5/1995 Heikki Tuuri
|
|||||||
#include "ibuf0ibuf.h"
|
#include "ibuf0ibuf.h"
|
||||||
#include "dict0dict.h"
|
#include "dict0dict.h"
|
||||||
#include "log0recv.h"
|
#include "log0recv.h"
|
||||||
|
#include "log0log.h"
|
||||||
#include "trx0undo.h"
|
#include "trx0undo.h"
|
||||||
#include "srv0srv.h"
|
#include "srv0srv.h"
|
||||||
|
|
||||||
@ -231,12 +232,12 @@ ibool buf_debug_prints = FALSE; /* If this is set TRUE,
|
|||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Calculates a page checksum which is stored to the page when it is written
|
Calculates a page checksum which is stored to the page when it is written
|
||||||
to a file. Note that we must be careful to calculate the same value
|
to a file. Note that we must be careful to calculate the same value on
|
||||||
on 32-bit and 64-bit architectures. */
|
32-bit and 64-bit architectures. */
|
||||||
|
|
||||||
ulint
|
ulint
|
||||||
buf_calc_page_checksum(
|
buf_calc_page_new_checksum(
|
||||||
/*===================*/
|
/*=======================*/
|
||||||
/* out: checksum */
|
/* out: checksum */
|
||||||
byte* page) /* in: buffer page */
|
byte* page) /* in: buffer page */
|
||||||
{
|
{
|
||||||
@ -244,12 +245,39 @@ buf_calc_page_checksum(
|
|||||||
|
|
||||||
/* Since the fields FIL_PAGE_FILE_FLUSH_LSN and ..._ARCH_LOG_NO
|
/* Since the fields FIL_PAGE_FILE_FLUSH_LSN and ..._ARCH_LOG_NO
|
||||||
are written outside the buffer pool to the first pages of data
|
are written outside the buffer pool to the first pages of data
|
||||||
files, we have to skip them in page checksum calculation */
|
files, we have to skip them in the page checksum calculation.
|
||||||
|
We must also skip the field FIL_PAGE_SPACE_OR_CHKSUM where the
|
||||||
|
checksum is stored, and also the last 8 bytes of page because
|
||||||
|
there we store the old formula checksum. */
|
||||||
|
|
||||||
|
checksum = ut_fold_binary(page + FIL_PAGE_OFFSET,
|
||||||
|
FIL_PAGE_FILE_FLUSH_LSN - FIL_PAGE_OFFSET)
|
||||||
|
+ ut_fold_binary(page + FIL_PAGE_DATA,
|
||||||
|
UNIV_PAGE_SIZE - FIL_PAGE_DATA
|
||||||
|
- FIL_PAGE_END_LSN_OLD_CHKSUM);
|
||||||
|
checksum = checksum & 0xFFFFFFFF;
|
||||||
|
|
||||||
|
return(checksum);
|
||||||
|
}
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
|
In versions < 4.0.14 and < 4.1.1 there was a bug that the checksum only
|
||||||
|
looked at the first few bytes of the page. This calculates that old
|
||||||
|
checksum.
|
||||||
|
NOTE: we must first store the new formula checksum to
|
||||||
|
FIL_PAGE_SPACE_OR_CHKSUM before calculating and storing this old checksum
|
||||||
|
because this takes that field as an input! */
|
||||||
|
|
||||||
|
ulint
|
||||||
|
buf_calc_page_old_checksum(
|
||||||
|
/*=======================*/
|
||||||
|
/* out: checksum */
|
||||||
|
byte* page) /* in: buffer page */
|
||||||
|
{
|
||||||
|
ulint checksum;
|
||||||
|
|
||||||
checksum = ut_fold_binary(page, FIL_PAGE_FILE_FLUSH_LSN);
|
checksum = ut_fold_binary(page, FIL_PAGE_FILE_FLUSH_LSN);
|
||||||
+ ut_fold_binary(page + FIL_PAGE_DATA,
|
|
||||||
UNIV_PAGE_SIZE - FIL_PAGE_DATA
|
|
||||||
- FIL_PAGE_END_LSN);
|
|
||||||
checksum = checksum & 0xFFFFFFFF;
|
checksum = checksum & 0xFFFFFFFF;
|
||||||
|
|
||||||
return(checksum);
|
return(checksum);
|
||||||
@ -265,27 +293,69 @@ buf_page_is_corrupted(
|
|||||||
byte* read_buf) /* in: a database page */
|
byte* read_buf) /* in: a database page */
|
||||||
{
|
{
|
||||||
ulint checksum;
|
ulint checksum;
|
||||||
|
ulint old_checksum;
|
||||||
|
ulint checksum_field;
|
||||||
|
ulint old_checksum_field;
|
||||||
|
dulint current_lsn;
|
||||||
|
|
||||||
checksum = buf_calc_page_checksum(read_buf);
|
if (mach_read_from_4(read_buf + FIL_PAGE_LSN + 4)
|
||||||
|
!= mach_read_from_4(read_buf + UNIV_PAGE_SIZE
|
||||||
|
- FIL_PAGE_END_LSN_OLD_CHKSUM + 4)) {
|
||||||
|
|
||||||
|
/* Stored log sequence numbers at the start and the end
|
||||||
|
of page do not match */
|
||||||
|
|
||||||
/* Note that InnoDB initializes empty pages to zero, and
|
|
||||||
early versions of InnoDB did not store page checksum to
|
|
||||||
the 4 most significant bytes of the page lsn field at the
|
|
||||||
end of a page: */
|
|
||||||
|
|
||||||
if ((mach_read_from_4(read_buf + FIL_PAGE_LSN + 4)
|
|
||||||
!= mach_read_from_4(read_buf + UNIV_PAGE_SIZE
|
|
||||||
- FIL_PAGE_END_LSN + 4))
|
|
||||||
|| (checksum != mach_read_from_4(read_buf
|
|
||||||
+ UNIV_PAGE_SIZE
|
|
||||||
- FIL_PAGE_END_LSN)
|
|
||||||
&& mach_read_from_4(read_buf + FIL_PAGE_LSN)
|
|
||||||
!= mach_read_from_4(read_buf
|
|
||||||
+ UNIV_PAGE_SIZE
|
|
||||||
- FIL_PAGE_END_LSN))) {
|
|
||||||
return(TRUE);
|
return(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef UNIV_HOTBACKUP
|
||||||
|
if (recv_lsn_checks_on && log_peek_lsn(¤t_lsn)) {
|
||||||
|
if (ut_dulint_cmp(current_lsn,
|
||||||
|
mach_read_from_8(read_buf + FIL_PAGE_LSN))
|
||||||
|
< 0) {
|
||||||
|
ut_print_timestamp(stderr);
|
||||||
|
|
||||||
|
fprintf(stderr,
|
||||||
|
" InnoDB: Error: page %lu log sequence number %lu %lu\n"
|
||||||
|
"InnoDB: is in the future! Current system log sequence number %lu %lu.\n"
|
||||||
|
"InnoDB: Your database may be corrupt.\n",
|
||||||
|
mach_read_from_4(read_buf + FIL_PAGE_OFFSET),
|
||||||
|
ut_dulint_get_high(
|
||||||
|
mach_read_from_8(read_buf + FIL_PAGE_LSN)),
|
||||||
|
ut_dulint_get_low(
|
||||||
|
mach_read_from_8(read_buf + FIL_PAGE_LSN)),
|
||||||
|
ut_dulint_get_high(current_lsn),
|
||||||
|
ut_dulint_get_low(current_lsn));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
old_checksum = buf_calc_page_old_checksum(read_buf);
|
||||||
|
|
||||||
|
old_checksum_field = mach_read_from_4(read_buf + UNIV_PAGE_SIZE
|
||||||
|
- FIL_PAGE_END_LSN_OLD_CHKSUM);
|
||||||
|
|
||||||
|
/* There are 2 valid formulas for old_checksum_field:
|
||||||
|
1. Very old versions of InnoDB only stored 8 byte lsn to the start
|
||||||
|
and the end of the page.
|
||||||
|
2. Newer InnoDB versions store the old formula checksum there. */
|
||||||
|
|
||||||
|
if (old_checksum_field != mach_read_from_4(read_buf + FIL_PAGE_LSN)
|
||||||
|
&& old_checksum_field != old_checksum) {
|
||||||
|
|
||||||
|
return(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
checksum = buf_calc_page_new_checksum(read_buf);
|
||||||
|
checksum_field = mach_read_from_4(read_buf + FIL_PAGE_SPACE_OR_CHKSUM);
|
||||||
|
|
||||||
|
/* InnoDB versions < 4.0.14 and < 4.1.1 stored the space id
|
||||||
|
(always equal to 0), to FIL_PAGE_SPACE_SPACE_OR_CHKSUM */
|
||||||
|
|
||||||
|
if (checksum_field != 0 && checksum_field != checksum) {
|
||||||
|
|
||||||
|
return(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
return(FALSE);
|
return(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -299,6 +369,7 @@ buf_page_print(
|
|||||||
{
|
{
|
||||||
dict_index_t* index;
|
dict_index_t* index;
|
||||||
ulint checksum;
|
ulint checksum;
|
||||||
|
ulint old_checksum;
|
||||||
char* buf;
|
char* buf;
|
||||||
|
|
||||||
buf = mem_alloc(4 * UNIV_PAGE_SIZE);
|
buf = mem_alloc(4 * UNIV_PAGE_SIZE);
|
||||||
@ -313,19 +384,23 @@ buf_page_print(
|
|||||||
|
|
||||||
mem_free(buf);
|
mem_free(buf);
|
||||||
|
|
||||||
checksum = buf_calc_page_checksum(read_buf);
|
checksum = buf_calc_page_new_checksum(read_buf);
|
||||||
|
old_checksum = buf_calc_page_old_checksum(read_buf);
|
||||||
|
|
||||||
ut_print_timestamp(stderr);
|
ut_print_timestamp(stderr);
|
||||||
fprintf(stderr, " InnoDB: Page checksum %lu stored checksum %lu\n",
|
fprintf(stderr,
|
||||||
checksum, mach_read_from_4(read_buf
|
" InnoDB: Page checksum %lu, prior-to-4.0.14-form checksum %lu\n"
|
||||||
+ UNIV_PAGE_SIZE
|
"InnoDB: stored checksum %lu, prior-to-4.0.14-form stored checksum %lu\n",
|
||||||
- FIL_PAGE_END_LSN));
|
checksum, old_checksum,
|
||||||
|
mach_read_from_4(read_buf + FIL_PAGE_SPACE_OR_CHKSUM),
|
||||||
|
mach_read_from_4(read_buf + UNIV_PAGE_SIZE
|
||||||
|
- FIL_PAGE_END_LSN_OLD_CHKSUM));
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"InnoDB: Page lsn %lu %lu, low 4 bytes of lsn at page end %lu\n",
|
"InnoDB: Page lsn %lu %lu, low 4 bytes of lsn at page end %lu\n",
|
||||||
mach_read_from_4(read_buf + FIL_PAGE_LSN),
|
mach_read_from_4(read_buf + FIL_PAGE_LSN),
|
||||||
mach_read_from_4(read_buf + FIL_PAGE_LSN + 4),
|
mach_read_from_4(read_buf + FIL_PAGE_LSN + 4),
|
||||||
mach_read_from_4(read_buf + UNIV_PAGE_SIZE
|
mach_read_from_4(read_buf + UNIV_PAGE_SIZE
|
||||||
- FIL_PAGE_END_LSN + 4));
|
- FIL_PAGE_END_LSN_OLD_CHKSUM + 4));
|
||||||
if (mach_read_from_2(read_buf + TRX_UNDO_PAGE_HDR + TRX_UNDO_PAGE_TYPE)
|
if (mach_read_from_2(read_buf + TRX_UNDO_PAGE_HDR + TRX_UNDO_PAGE_TYPE)
|
||||||
== TRX_UNDO_INSERT) {
|
== TRX_UNDO_INSERT) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
|
@ -361,21 +361,29 @@ buf_flush_init_for_writing(
|
|||||||
ulint space, /* in: space id */
|
ulint space, /* in: space id */
|
||||||
ulint page_no) /* in: page number */
|
ulint page_no) /* in: page number */
|
||||||
{
|
{
|
||||||
/* Write the newest modification lsn to the page */
|
UT_NOT_USED(space);
|
||||||
|
|
||||||
|
/* Write the newest modification lsn to the page header and trailer */
|
||||||
mach_write_to_8(page + FIL_PAGE_LSN, newest_lsn);
|
mach_write_to_8(page + FIL_PAGE_LSN, newest_lsn);
|
||||||
|
|
||||||
mach_write_to_8(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN, newest_lsn);
|
mach_write_to_8(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM,
|
||||||
|
newest_lsn);
|
||||||
|
/* Write the page number */
|
||||||
|
|
||||||
/* Write to the page the space id and page number */
|
|
||||||
|
|
||||||
mach_write_to_4(page + FIL_PAGE_SPACE, space);
|
|
||||||
mach_write_to_4(page + FIL_PAGE_OFFSET, page_no);
|
mach_write_to_4(page + FIL_PAGE_OFFSET, page_no);
|
||||||
|
|
||||||
/* We overwrite the first 4 bytes of the end lsn field to store
|
/* Store the new formula checksum */
|
||||||
a page checksum */
|
|
||||||
|
|
||||||
mach_write_to_4(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN,
|
mach_write_to_4(page + FIL_PAGE_SPACE_OR_CHKSUM,
|
||||||
buf_calc_page_checksum(page));
|
buf_calc_page_new_checksum(page));
|
||||||
|
|
||||||
|
/* We overwrite the first 4 bytes of the end lsn field to store
|
||||||
|
the old formula checksum. Since it depends also on the field
|
||||||
|
FIL_PAGE_SPACE_OR_CHKSUM, it has to be calculated after storing the
|
||||||
|
new formula checksum. */
|
||||||
|
|
||||||
|
mach_write_to_4(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM,
|
||||||
|
buf_calc_page_old_checksum(page));
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -584,8 +584,7 @@ dtuple_convert_big_rec(
|
|||||||
* sizeof(big_rec_field_t));
|
* sizeof(big_rec_field_t));
|
||||||
|
|
||||||
/* Decide which fields to shorten: the algorithm is to look for
|
/* Decide which fields to shorten: the algorithm is to look for
|
||||||
the longest field which does not occur in the ordering part
|
the longest field whose type is DATA_BLOB */
|
||||||
of any index on the table */
|
|
||||||
|
|
||||||
n_fields = 0;
|
n_fields = 0;
|
||||||
|
|
||||||
@ -610,12 +609,9 @@ dtuple_convert_big_rec(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Skip over fields which are ordering in some index */
|
if (!is_externally_stored
|
||||||
|
&& dict_index_get_nth_type(index, i)->mtype
|
||||||
if (!is_externally_stored &&
|
== DATA_BLOB) {
|
||||||
dict_field_get_col(
|
|
||||||
dict_index_get_nth_field(index, i))
|
|
||||||
->ord_part == 0) {
|
|
||||||
|
|
||||||
dfield = dtuple_get_nth_field(entry, i);
|
dfield = dtuple_get_nth_field(entry, i);
|
||||||
|
|
||||||
@ -629,9 +625,13 @@ dtuple_convert_big_rec(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (longest < BTR_EXTERN_FIELD_REF_SIZE + 10
|
/* We do not store externally fields which are smaller than
|
||||||
+ REC_1BYTE_OFFS_LIMIT) {
|
DICT_MAX_COL_PREFIX_LEN */
|
||||||
|
|
||||||
|
ut_a(DICT_MAX_COL_PREFIX_LEN > REC_1BYTE_OFFS_LIMIT);
|
||||||
|
|
||||||
|
if (longest < BTR_EXTERN_FIELD_REF_SIZE + 10
|
||||||
|
+ DICT_MAX_COL_PREFIX_LEN) {
|
||||||
/* Cannot shorten more */
|
/* Cannot shorten more */
|
||||||
|
|
||||||
mem_heap_free(heap);
|
mem_heap_free(heap);
|
||||||
@ -644,13 +644,19 @@ dtuple_convert_big_rec(
|
|||||||
drop below 128 which is the limit for the 2-byte
|
drop below 128 which is the limit for the 2-byte
|
||||||
offset storage format in a physical record. This
|
offset storage format in a physical record. This
|
||||||
we accomplish by storing 128 bytes of data in entry
|
we accomplish by storing 128 bytes of data in entry
|
||||||
itself, and only the remaining part to big rec vec. */
|
itself, and only the remaining part to big rec vec.
|
||||||
|
|
||||||
|
We store the first bytes locally to the record. Then
|
||||||
|
we can calculate all ordering fields in all indexes
|
||||||
|
from locally stored data. */
|
||||||
|
|
||||||
dfield = dtuple_get_nth_field(entry, longest_i);
|
dfield = dtuple_get_nth_field(entry, longest_i);
|
||||||
vector->fields[n_fields].field_no = longest_i;
|
vector->fields[n_fields].field_no = longest_i;
|
||||||
|
|
||||||
|
ut_a(dfield->len > DICT_MAX_COL_PREFIX_LEN);
|
||||||
|
|
||||||
vector->fields[n_fields].len = dfield->len
|
vector->fields[n_fields].len = dfield->len
|
||||||
- REC_1BYTE_OFFS_LIMIT;
|
- DICT_MAX_COL_PREFIX_LEN;
|
||||||
|
|
||||||
vector->fields[n_fields].data = mem_heap_alloc(heap,
|
vector->fields[n_fields].data = mem_heap_alloc(heap,
|
||||||
vector->fields[n_fields].len);
|
vector->fields[n_fields].len);
|
||||||
|
@ -85,8 +85,6 @@ dtype_print(
|
|||||||
printf("DATA_MIX_ID");
|
printf("DATA_MIX_ID");
|
||||||
} else if (prtype == DATA_ENGLISH) {
|
} else if (prtype == DATA_ENGLISH) {
|
||||||
printf("DATA_ENGLISH");
|
printf("DATA_ENGLISH");
|
||||||
} else if (prtype == DATA_FINNISH) {
|
|
||||||
printf("DATA_FINNISH");
|
|
||||||
} else {
|
} else {
|
||||||
printf("prtype %lu", mtype);
|
printf("prtype %lu", mtype);
|
||||||
}
|
}
|
||||||
|
@ -276,7 +276,7 @@ dict_boot(void)
|
|||||||
DICT_HDR_SPACE,
|
DICT_HDR_SPACE,
|
||||||
DICT_UNIQUE | DICT_CLUSTERED, 1);
|
DICT_UNIQUE | DICT_CLUSTERED, 1);
|
||||||
|
|
||||||
dict_mem_index_add_field(index, (char *) "NAME", 0);
|
dict_mem_index_add_field(index, (char *) "NAME", 0, 0);
|
||||||
|
|
||||||
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_TABLES,
|
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_TABLES,
|
||||||
MLOG_4BYTES, &mtr);
|
MLOG_4BYTES, &mtr);
|
||||||
@ -287,7 +287,7 @@ dict_boot(void)
|
|||||||
index = dict_mem_index_create((char *) "SYS_TABLES",
|
index = dict_mem_index_create((char *) "SYS_TABLES",
|
||||||
(char *) "ID_IND", DICT_HDR_SPACE,
|
(char *) "ID_IND", DICT_HDR_SPACE,
|
||||||
DICT_UNIQUE, 1);
|
DICT_UNIQUE, 1);
|
||||||
dict_mem_index_add_field(index, (char *) "ID", 0);
|
dict_mem_index_add_field(index, (char *) "ID", 0, 0);
|
||||||
|
|
||||||
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_TABLE_IDS,
|
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_TABLE_IDS,
|
||||||
MLOG_4BYTES, &mtr);
|
MLOG_4BYTES, &mtr);
|
||||||
@ -313,8 +313,8 @@ dict_boot(void)
|
|||||||
(char *) "CLUST_IND", DICT_HDR_SPACE,
|
(char *) "CLUST_IND", DICT_HDR_SPACE,
|
||||||
DICT_UNIQUE | DICT_CLUSTERED, 2);
|
DICT_UNIQUE | DICT_CLUSTERED, 2);
|
||||||
|
|
||||||
dict_mem_index_add_field(index, (char *) "TABLE_ID", 0);
|
dict_mem_index_add_field(index, (char *) "TABLE_ID", 0, 0);
|
||||||
dict_mem_index_add_field(index, (char *) "POS", 0);
|
dict_mem_index_add_field(index, (char *) "POS", 0, 0);
|
||||||
|
|
||||||
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_COLUMNS,
|
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_COLUMNS,
|
||||||
MLOG_4BYTES, &mtr);
|
MLOG_4BYTES, &mtr);
|
||||||
@ -343,8 +343,8 @@ dict_boot(void)
|
|||||||
(char *) "CLUST_IND", DICT_HDR_SPACE,
|
(char *) "CLUST_IND", DICT_HDR_SPACE,
|
||||||
DICT_UNIQUE | DICT_CLUSTERED, 2);
|
DICT_UNIQUE | DICT_CLUSTERED, 2);
|
||||||
|
|
||||||
dict_mem_index_add_field(index, (char *) "TABLE_ID", 0);
|
dict_mem_index_add_field(index, (char *) "TABLE_ID", 0, 0);
|
||||||
dict_mem_index_add_field(index, (char *) "ID", 0);
|
dict_mem_index_add_field(index, (char *) "ID", 0, 0);
|
||||||
|
|
||||||
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_INDEXES,
|
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_INDEXES,
|
||||||
MLOG_4BYTES, &mtr);
|
MLOG_4BYTES, &mtr);
|
||||||
@ -365,8 +365,8 @@ dict_boot(void)
|
|||||||
(char *) "CLUST_IND", DICT_HDR_SPACE,
|
(char *) "CLUST_IND", DICT_HDR_SPACE,
|
||||||
DICT_UNIQUE | DICT_CLUSTERED, 2);
|
DICT_UNIQUE | DICT_CLUSTERED, 2);
|
||||||
|
|
||||||
dict_mem_index_add_field(index, (char *) "INDEX_ID", 0);
|
dict_mem_index_add_field(index, (char *) "INDEX_ID", 0, 0);
|
||||||
dict_mem_index_add_field(index, (char *) "POS", 0);
|
dict_mem_index_add_field(index, (char *) "POS", 0, 0);
|
||||||
|
|
||||||
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_FIELDS,
|
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_FIELDS,
|
||||||
MLOG_4BYTES, &mtr);
|
MLOG_4BYTES, &mtr);
|
||||||
|
@ -337,7 +337,7 @@ dict_create_index_for_cluster_step(
|
|||||||
|
|
||||||
for (i = 0; i < table->n_cols; i++) {
|
for (i = 0; i < table->n_cols; i++) {
|
||||||
col = dict_table_get_nth_col(table, i);
|
col = dict_table_get_nth_col(table, i);
|
||||||
dict_mem_index_add_field(index, col->name, 0);
|
dict_mem_index_add_field(index, col->name, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
(node->cluster)->index = index;
|
(node->cluster)->index = index;
|
||||||
@ -450,9 +450,17 @@ dict_create_sys_fields_tuple(
|
|||||||
dict_field_t* field;
|
dict_field_t* field;
|
||||||
dfield_t* dfield;
|
dfield_t* dfield;
|
||||||
byte* ptr;
|
byte* ptr;
|
||||||
|
ibool index_contains_column_prefix_field = FALSE;
|
||||||
|
ulint j;
|
||||||
|
|
||||||
ut_ad(index && heap);
|
ut_ad(index && heap);
|
||||||
|
|
||||||
|
for (j = 0; j < index->n_fields; j++) {
|
||||||
|
if (dict_index_get_nth_field(index, j)->prefix_len > 0) {
|
||||||
|
index_contains_column_prefix_field = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
field = dict_index_get_nth_field(index, i);
|
field = dict_index_get_nth_field(index, i);
|
||||||
|
|
||||||
sys_fields = dict_sys->sys_fields;
|
sys_fields = dict_sys->sys_fields;
|
||||||
@ -466,11 +474,25 @@ dict_create_sys_fields_tuple(
|
|||||||
mach_write_to_8(ptr, index->id);
|
mach_write_to_8(ptr, index->id);
|
||||||
|
|
||||||
dfield_set_data(dfield, ptr, 8);
|
dfield_set_data(dfield, ptr, 8);
|
||||||
/* 1: POS ----------------------------*/
|
/* 1: POS + PREFIX LENGTH ----------------------------*/
|
||||||
|
|
||||||
dfield = dtuple_get_nth_field(entry, 1);
|
dfield = dtuple_get_nth_field(entry, 1);
|
||||||
|
|
||||||
ptr = mem_heap_alloc(heap, 4);
|
ptr = mem_heap_alloc(heap, 4);
|
||||||
mach_write_to_4(ptr, i);
|
|
||||||
|
if (index_contains_column_prefix_field) {
|
||||||
|
/* If there are column prefix fields in the index, then
|
||||||
|
we store the number of the field to the 2 HIGH bytes
|
||||||
|
and the prefix length to the 2 low bytes, */
|
||||||
|
|
||||||
|
mach_write_to_4(ptr, (i << 16) + field->prefix_len);
|
||||||
|
} else {
|
||||||
|
/* Else we store the number of the field to the 2 LOW bytes.
|
||||||
|
This is to keep the storage format compatible with
|
||||||
|
InnoDB versions < 4.0.14. */
|
||||||
|
|
||||||
|
mach_write_to_4(ptr, i);
|
||||||
|
}
|
||||||
|
|
||||||
dfield_set_data(dfield, ptr, 4);
|
dfield_set_data(dfield, ptr, 4);
|
||||||
/* 4: COL_NAME -------------------------*/
|
/* 4: COL_NAME -------------------------*/
|
||||||
|
@ -88,15 +88,6 @@ dict_index_remove_from_cache(
|
|||||||
dict_table_t* table, /* in: table */
|
dict_table_t* table, /* in: table */
|
||||||
dict_index_t* index); /* in, own: index */
|
dict_index_t* index); /* in, own: index */
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
Adds a column to index. */
|
|
||||||
UNIV_INLINE
|
|
||||||
void
|
|
||||||
dict_index_add_col(
|
|
||||||
/*===============*/
|
|
||||||
dict_index_t* index, /* in: index */
|
|
||||||
dict_col_t* col, /* in: column */
|
|
||||||
ulint order); /* in: order criterion */
|
|
||||||
/***********************************************************************
|
|
||||||
Copies fields contained in index2 to index1. */
|
Copies fields contained in index2 to index1. */
|
||||||
static
|
static
|
||||||
void
|
void
|
||||||
@ -482,8 +473,9 @@ dict_index_get_nth_col_pos(
|
|||||||
ut_ad(index);
|
ut_ad(index);
|
||||||
ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
|
ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
|
||||||
|
|
||||||
|
col = dict_table_get_nth_col(index->table, n);
|
||||||
|
|
||||||
if (index->type & DICT_CLUSTERED) {
|
if (index->type & DICT_CLUSTERED) {
|
||||||
col = dict_table_get_nth_col(index->table, n);
|
|
||||||
|
|
||||||
return(col->clust_pos);
|
return(col->clust_pos);
|
||||||
}
|
}
|
||||||
@ -492,9 +484,8 @@ dict_index_get_nth_col_pos(
|
|||||||
|
|
||||||
for (pos = 0; pos < n_fields; pos++) {
|
for (pos = 0; pos < n_fields; pos++) {
|
||||||
field = dict_index_get_nth_field(index, pos);
|
field = dict_index_get_nth_field(index, pos);
|
||||||
col = field->col;
|
|
||||||
|
|
||||||
if (dict_col_get_no(col) == n) {
|
if (col == field->col && field->prefix_len == 0) {
|
||||||
|
|
||||||
return(pos);
|
return(pos);
|
||||||
}
|
}
|
||||||
@ -502,7 +493,86 @@ dict_index_get_nth_col_pos(
|
|||||||
|
|
||||||
return(ULINT_UNDEFINED);
|
return(ULINT_UNDEFINED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
|
Returns TRUE if the index contains a column or a prefix of that column. */
|
||||||
|
|
||||||
|
ibool
|
||||||
|
dict_index_contains_col_or_prefix(
|
||||||
|
/*==============================*/
|
||||||
|
/* out: TRUE if contains the column or its
|
||||||
|
prefix */
|
||||||
|
dict_index_t* index, /* in: index */
|
||||||
|
ulint n) /* in: column number */
|
||||||
|
{
|
||||||
|
dict_field_t* field;
|
||||||
|
dict_col_t* col;
|
||||||
|
ulint pos;
|
||||||
|
ulint n_fields;
|
||||||
|
|
||||||
|
ut_ad(index);
|
||||||
|
ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
|
||||||
|
|
||||||
|
if (index->type & DICT_CLUSTERED) {
|
||||||
|
|
||||||
|
return(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
col = dict_table_get_nth_col(index->table, n);
|
||||||
|
|
||||||
|
n_fields = dict_index_get_n_fields(index);
|
||||||
|
|
||||||
|
for (pos = 0; pos < n_fields; pos++) {
|
||||||
|
field = dict_index_get_nth_field(index, pos);
|
||||||
|
|
||||||
|
if (col == field->col) {
|
||||||
|
|
||||||
|
return(TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return(FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
|
Looks for a matching field in an index. The column and the prefix len have
|
||||||
|
to be the same. */
|
||||||
|
|
||||||
|
ulint
|
||||||
|
dict_index_get_nth_field_pos(
|
||||||
|
/*=========================*/
|
||||||
|
/* out: position in internal representation
|
||||||
|
of the index; if not contained, returns
|
||||||
|
ULINT_UNDEFINED */
|
||||||
|
dict_index_t* index, /* in: index from which to search */
|
||||||
|
dict_index_t* index2, /* in: index */
|
||||||
|
ulint n) /* in: field number in index2 */
|
||||||
|
{
|
||||||
|
dict_field_t* field;
|
||||||
|
dict_field_t* field2;
|
||||||
|
ulint n_fields;
|
||||||
|
ulint pos;
|
||||||
|
|
||||||
|
ut_ad(index);
|
||||||
|
ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
|
||||||
|
|
||||||
|
field2 = dict_index_get_nth_field(index2, n);
|
||||||
|
|
||||||
|
n_fields = dict_index_get_n_fields(index);
|
||||||
|
|
||||||
|
for (pos = 0; pos < n_fields; pos++) {
|
||||||
|
field = dict_index_get_nth_field(index, pos);
|
||||||
|
|
||||||
|
if (field->col == field2->col
|
||||||
|
&& field->prefix_len == field2->prefix_len) {
|
||||||
|
|
||||||
|
return(pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return(ULINT_UNDEFINED);
|
||||||
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Returns a table object, based on table id, and memoryfixes it. */
|
Returns a table object, based on table id, and memoryfixes it. */
|
||||||
|
|
||||||
@ -622,8 +692,7 @@ dict_table_get(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Returns a table object and increments MySQL open handle count on the table.
|
Returns a table object and increments MySQL open handle count on the table. */
|
||||||
*/
|
|
||||||
|
|
||||||
dict_table_t*
|
dict_table_t*
|
||||||
dict_table_get_and_increment_handle_count(
|
dict_table_get_and_increment_handle_count(
|
||||||
@ -732,11 +801,12 @@ dict_table_add_to_cache(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Add table to hash table of tables */
|
/* Add table to hash table of tables */
|
||||||
HASH_INSERT(dict_table_t, name_hash, dict_sys->table_hash, fold, table);
|
HASH_INSERT(dict_table_t, name_hash, dict_sys->table_hash, fold,
|
||||||
|
table);
|
||||||
|
|
||||||
/* Add table to hash table of tables based on table id */
|
/* Add table to hash table of tables based on table id */
|
||||||
HASH_INSERT(dict_table_t, id_hash, dict_sys->table_id_hash, id_fold,
|
HASH_INSERT(dict_table_t, id_hash, dict_sys->table_id_hash, id_fold,
|
||||||
table);
|
table);
|
||||||
/* Add table to LRU list of tables */
|
/* Add table to LRU list of tables */
|
||||||
UT_LIST_ADD_FIRST(table_LRU, dict_sys->table_LRU, table);
|
UT_LIST_ADD_FIRST(table_LRU, dict_sys->table_LRU, table);
|
||||||
|
|
||||||
@ -828,7 +898,7 @@ dict_table_rename_in_cache(
|
|||||||
|
|
||||||
/* Remove table from the hash tables of tables */
|
/* Remove table from the hash tables of tables */
|
||||||
HASH_DELETE(dict_table_t, name_hash, dict_sys->table_hash,
|
HASH_DELETE(dict_table_t, name_hash, dict_sys->table_hash,
|
||||||
ut_fold_string(table->name), table);
|
ut_fold_string(table->name), table);
|
||||||
|
|
||||||
name_buf = mem_heap_alloc(table->heap, ut_strlen(new_name) + 1);
|
name_buf = mem_heap_alloc(table->heap, ut_strlen(new_name) + 1);
|
||||||
|
|
||||||
@ -837,7 +907,8 @@ dict_table_rename_in_cache(
|
|||||||
table->name = name_buf;
|
table->name = name_buf;
|
||||||
|
|
||||||
/* Add table to hash table of tables */
|
/* Add table to hash table of tables */
|
||||||
HASH_INSERT(dict_table_t, name_hash, dict_sys->table_hash, fold, table);
|
HASH_INSERT(dict_table_t, name_hash, dict_sys->table_hash, fold,
|
||||||
|
table);
|
||||||
|
|
||||||
dict_sys->size += (mem_heap_get_size(table->heap) - old_size);
|
dict_sys->size += (mem_heap_get_size(table->heap) - old_size);
|
||||||
|
|
||||||
@ -1128,7 +1199,6 @@ dict_index_add_to_cache(
|
|||||||
ulint n_ord;
|
ulint n_ord;
|
||||||
ibool success;
|
ibool success;
|
||||||
ulint i;
|
ulint i;
|
||||||
ulint j;
|
|
||||||
|
|
||||||
ut_ad(index);
|
ut_ad(index);
|
||||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||||
@ -1158,28 +1228,6 @@ dict_index_add_to_cache(
|
|||||||
|
|
||||||
return(FALSE);
|
return(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check that the same column does not appear twice in the index.
|
|
||||||
InnoDB assumes this in its algorithms, e.g., update of an index
|
|
||||||
entry */
|
|
||||||
|
|
||||||
for (i = 0; i < dict_index_get_n_fields(index); i++) {
|
|
||||||
|
|
||||||
for (j = 0; j < i; j++) {
|
|
||||||
if (dict_index_get_nth_field(index, j)->col
|
|
||||||
== dict_index_get_nth_field(index, i)->col) {
|
|
||||||
|
|
||||||
ut_print_timestamp(stderr);
|
|
||||||
|
|
||||||
fprintf(stderr,
|
|
||||||
" InnoDB: Error: column %s appears twice in index %s of table %s\n"
|
|
||||||
"InnoDB: This is not allowed in InnoDB.\n"
|
|
||||||
"InnoDB: UPDATE can cause such an index to become corrupt in InnoDB.\n",
|
|
||||||
dict_index_get_nth_field(index, i)->col->name,
|
|
||||||
index->name, table->name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Build the cache internal representation of the index,
|
/* Build the cache internal representation of the index,
|
||||||
containing also the added system fields */
|
containing also the added system fields */
|
||||||
@ -1223,8 +1271,8 @@ dict_index_add_to_cache(
|
|||||||
|
|
||||||
cluster = dict_table_get_low(table->cluster_name);
|
cluster = dict_table_get_low(table->cluster_name);
|
||||||
|
|
||||||
tree = dict_index_get_tree(UT_LIST_GET_FIRST(cluster->indexes));
|
tree = dict_index_get_tree(
|
||||||
|
UT_LIST_GET_FIRST(cluster->indexes));
|
||||||
new_index->tree = tree;
|
new_index->tree = tree;
|
||||||
new_index->page_no = tree->page;
|
new_index->page_no = tree->page;
|
||||||
} else {
|
} else {
|
||||||
@ -1352,13 +1400,14 @@ UNIV_INLINE
|
|||||||
void
|
void
|
||||||
dict_index_add_col(
|
dict_index_add_col(
|
||||||
/*===============*/
|
/*===============*/
|
||||||
dict_index_t* index, /* in: index */
|
dict_index_t* index, /* in: index */
|
||||||
dict_col_t* col, /* in: column */
|
dict_col_t* col, /* in: column */
|
||||||
ulint order) /* in: order criterion */
|
ulint order, /* in: order criterion */
|
||||||
|
ulint prefix_len) /* in: column prefix length */
|
||||||
{
|
{
|
||||||
dict_field_t* field;
|
dict_field_t* field;
|
||||||
|
|
||||||
dict_mem_index_add_field(index, col->name, order);
|
dict_mem_index_add_field(index, col->name, order, prefix_len);
|
||||||
|
|
||||||
field = dict_index_get_nth_field(index, index->n_def - 1);
|
field = dict_index_get_nth_field(index, index->n_def - 1);
|
||||||
|
|
||||||
@ -1384,7 +1433,8 @@ dict_index_copy(
|
|||||||
for (i = start; i < end; i++) {
|
for (i = start; i < end; i++) {
|
||||||
|
|
||||||
field = dict_index_get_nth_field(index2, i);
|
field = dict_index_get_nth_field(index2, i);
|
||||||
dict_index_add_col(index1, field->col, field->order);
|
dict_index_add_col(index1, field->col, field->order,
|
||||||
|
field->prefix_len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1487,7 +1537,7 @@ dict_index_build_internal_clust(
|
|||||||
|
|
||||||
/* Add the mix id column */
|
/* Add the mix id column */
|
||||||
dict_index_add_col(new_index,
|
dict_index_add_col(new_index,
|
||||||
dict_table_get_sys_col(table, DATA_MIX_ID), 0);
|
dict_table_get_sys_col(table, DATA_MIX_ID), 0, 0);
|
||||||
|
|
||||||
/* Copy the rest of fields */
|
/* Copy the rest of fields */
|
||||||
dict_index_copy(new_index, index, table->mix_len,
|
dict_index_copy(new_index, index, table->mix_len,
|
||||||
@ -1525,14 +1575,15 @@ dict_index_build_internal_clust(
|
|||||||
|
|
||||||
if (!(index->type & DICT_UNIQUE)) {
|
if (!(index->type & DICT_UNIQUE)) {
|
||||||
dict_index_add_col(new_index,
|
dict_index_add_col(new_index,
|
||||||
dict_table_get_sys_col(table, DATA_ROW_ID), 0);
|
dict_table_get_sys_col(table, DATA_ROW_ID), 0, 0);
|
||||||
trx_id_pos++;
|
trx_id_pos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
dict_index_add_col(new_index,
|
dict_index_add_col(new_index,
|
||||||
dict_table_get_sys_col(table, DATA_TRX_ID), 0);
|
dict_table_get_sys_col(table, DATA_TRX_ID), 0, 0);
|
||||||
|
|
||||||
dict_index_add_col(new_index,
|
dict_index_add_col(new_index,
|
||||||
dict_table_get_sys_col(table, DATA_ROLL_PTR), 0);
|
dict_table_get_sys_col(table, DATA_ROLL_PTR), 0, 0);
|
||||||
|
|
||||||
for (i = 0; i < trx_id_pos; i++) {
|
for (i = 0; i < trx_id_pos; i++) {
|
||||||
|
|
||||||
@ -1561,7 +1612,14 @@ dict_index_build_internal_clust(
|
|||||||
for (i = 0; i < new_index->n_def; i++) {
|
for (i = 0; i < new_index->n_def; i++) {
|
||||||
|
|
||||||
field = dict_index_get_nth_field(new_index, i);
|
field = dict_index_get_nth_field(new_index, i);
|
||||||
(field->col)->aux = 0;
|
|
||||||
|
/* If there is only a prefix of the column in the index
|
||||||
|
field, do not mark the column as contained in the index */
|
||||||
|
|
||||||
|
if (field->prefix_len == 0) {
|
||||||
|
|
||||||
|
field->col->aux = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add to new_index non-system columns of table not yet included
|
/* Add to new_index non-system columns of table not yet included
|
||||||
@ -1572,7 +1630,7 @@ dict_index_build_internal_clust(
|
|||||||
ut_ad(col->type.mtype != DATA_SYS);
|
ut_ad(col->type.mtype != DATA_SYS);
|
||||||
|
|
||||||
if (col->aux == ULINT_UNDEFINED) {
|
if (col->aux == ULINT_UNDEFINED) {
|
||||||
dict_index_add_col(new_index, col, 0);
|
dict_index_add_col(new_index, col, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1584,7 +1642,11 @@ dict_index_build_internal_clust(
|
|||||||
|
|
||||||
for (i = 0; i < new_index->n_def; i++) {
|
for (i = 0; i < new_index->n_def; i++) {
|
||||||
field = dict_index_get_nth_field(new_index, i);
|
field = dict_index_get_nth_field(new_index, i);
|
||||||
(field->col)->clust_pos = i;
|
|
||||||
|
if (field->prefix_len == 0) {
|
||||||
|
|
||||||
|
field->col->clust_pos = i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
new_index->cached = TRUE;
|
new_index->cached = TRUE;
|
||||||
@ -1646,25 +1708,33 @@ dict_index_build_internal_non_clust(
|
|||||||
for (i = 0; i < clust_index->n_uniq; i++) {
|
for (i = 0; i < clust_index->n_uniq; i++) {
|
||||||
|
|
||||||
field = dict_index_get_nth_field(clust_index, i);
|
field = dict_index_get_nth_field(clust_index, i);
|
||||||
(field->col)->aux = ULINT_UNDEFINED;
|
field->col->aux = ULINT_UNDEFINED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mark with 0 table columns already contained in new_index */
|
/* Mark with 0 table columns already contained in new_index */
|
||||||
for (i = 0; i < new_index->n_def; i++) {
|
for (i = 0; i < new_index->n_def; i++) {
|
||||||
|
|
||||||
field = dict_index_get_nth_field(new_index, i);
|
field = dict_index_get_nth_field(new_index, i);
|
||||||
(field->col)->aux = 0;
|
|
||||||
|
/* If there is only a prefix of the column in the index
|
||||||
|
field, do not mark the column as contained in the index */
|
||||||
|
|
||||||
|
if (field->prefix_len == 0) {
|
||||||
|
|
||||||
|
field->col->aux = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add to new_index columns necessary to determine the clustered
|
/* Add to new_index the columns necessary to determine the clustered
|
||||||
index entry uniquely */
|
index entry uniquely */
|
||||||
|
|
||||||
for (i = 0; i < clust_index->n_uniq; i++) {
|
for (i = 0; i < clust_index->n_uniq; i++) {
|
||||||
|
|
||||||
field = dict_index_get_nth_field(clust_index, i);
|
field = dict_index_get_nth_field(clust_index, i);
|
||||||
|
|
||||||
if ((field->col)->aux == ULINT_UNDEFINED) {
|
if (field->col->aux == ULINT_UNDEFINED) {
|
||||||
dict_index_add_col(new_index, field->col, 0);
|
dict_index_add_col(new_index, field->col, 0,
|
||||||
|
field->prefix_len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1787,6 +1857,14 @@ dict_foreign_find_index(
|
|||||||
for (i = 0; i < n_cols; i++) {
|
for (i = 0; i < n_cols; i++) {
|
||||||
col_name = dict_index_get_nth_field(index, i)
|
col_name = dict_index_get_nth_field(index, i)
|
||||||
->col->name;
|
->col->name;
|
||||||
|
if (dict_index_get_nth_field(index, i)
|
||||||
|
->prefix_len != 0) {
|
||||||
|
/* We do not accept column prefix
|
||||||
|
indexes here */
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (ut_strlen(columns[i]) !=
|
if (ut_strlen(columns[i]) !=
|
||||||
ut_strlen(col_name)
|
ut_strlen(col_name)
|
||||||
|| 0 != ut_cmp_in_lower_case(columns[i],
|
|| 0 != ut_cmp_in_lower_case(columns[i],
|
||||||
@ -2327,9 +2405,12 @@ dict_strip_comments(
|
|||||||
ptr = str;
|
ptr = str;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
scan_more:
|
||||||
if (*sptr == '\0') {
|
if (*sptr == '\0') {
|
||||||
*ptr = '\0';
|
*ptr = '\0';
|
||||||
|
|
||||||
|
ut_a(ptr <= str + strlen(sql_string));
|
||||||
|
|
||||||
return(str);
|
return(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2343,7 +2424,7 @@ dict_strip_comments(
|
|||||||
|| *sptr == (char)0x0D
|
|| *sptr == (char)0x0D
|
||||||
|| *sptr == '\0') {
|
|| *sptr == '\0') {
|
||||||
|
|
||||||
break;
|
goto scan_more;
|
||||||
}
|
}
|
||||||
|
|
||||||
sptr++;
|
sptr++;
|
||||||
@ -2357,12 +2438,12 @@ dict_strip_comments(
|
|||||||
|
|
||||||
sptr += 2;
|
sptr += 2;
|
||||||
|
|
||||||
break;
|
goto scan_more;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*sptr == '\0') {
|
if (*sptr == '\0') {
|
||||||
|
|
||||||
break;
|
goto scan_more;
|
||||||
}
|
}
|
||||||
|
|
||||||
sptr++;
|
sptr++;
|
||||||
@ -3776,6 +3857,10 @@ dict_field_print_low(
|
|||||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||||
|
|
||||||
printf(" %s", field->name);
|
printf(" %s", field->name);
|
||||||
|
|
||||||
|
if (field->prefix_len != 0) {
|
||||||
|
printf("(%lu)", field->prefix_len);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
@ -301,6 +301,8 @@ dict_load_fields(
|
|||||||
dtuple_t* tuple;
|
dtuple_t* tuple;
|
||||||
dfield_t* dfield;
|
dfield_t* dfield;
|
||||||
char* col_name;
|
char* col_name;
|
||||||
|
ulint pos_and_prefix_len;
|
||||||
|
ulint prefix_len;
|
||||||
rec_t* rec;
|
rec_t* rec;
|
||||||
byte* field;
|
byte* field;
|
||||||
ulint len;
|
ulint len;
|
||||||
@ -345,8 +347,28 @@ dict_load_fields(
|
|||||||
ut_a(ut_memcmp(buf, field, len) == 0);
|
ut_a(ut_memcmp(buf, field, len) == 0);
|
||||||
|
|
||||||
field = rec_get_nth_field(rec, 1, &len);
|
field = rec_get_nth_field(rec, 1, &len);
|
||||||
ut_ad(len == 4);
|
ut_a(len == 4);
|
||||||
ut_a(i == mach_read_from_4(field));
|
|
||||||
|
/* The next field stores the field position in the index
|
||||||
|
and a possible column prefix length if the index field
|
||||||
|
does not contain the whole column. The storage format is
|
||||||
|
like this: if there is at least one prefix field in the index,
|
||||||
|
then the HIGH 2 bytes contain the field number (== i) and the
|
||||||
|
low 2 bytes the prefix length for the field. Otherwise the
|
||||||
|
field number (== i) is contained in the 2 LOW bytes. */
|
||||||
|
|
||||||
|
pos_and_prefix_len = mach_read_from_4(field);
|
||||||
|
|
||||||
|
ut_a((pos_and_prefix_len & 0xFFFF) == i
|
||||||
|
|| (pos_and_prefix_len & 0xFFFF0000) == (i << 16));
|
||||||
|
|
||||||
|
if ((i == 0 && pos_and_prefix_len > 0)
|
||||||
|
|| (pos_and_prefix_len & 0xFFFF0000) > 0) {
|
||||||
|
|
||||||
|
prefix_len = pos_and_prefix_len & 0xFFFF;
|
||||||
|
} else {
|
||||||
|
prefix_len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
ut_a(0 == ut_strcmp((char*) "COL_NAME",
|
ut_a(0 == ut_strcmp((char*) "COL_NAME",
|
||||||
dict_field_get_col(
|
dict_field_get_col(
|
||||||
@ -359,7 +381,7 @@ dict_load_fields(
|
|||||||
ut_memcpy(col_name, field, len);
|
ut_memcpy(col_name, field, len);
|
||||||
col_name[len] = '\0';
|
col_name[len] = '\0';
|
||||||
|
|
||||||
dict_mem_index_add_field(index, col_name, 0);
|
dict_mem_index_add_field(index, col_name, 0, prefix_len);
|
||||||
|
|
||||||
btr_pcur_move_to_next_user_rec(&pcur, &mtr);
|
btr_pcur_move_to_next_user_rec(&pcur, &mtr);
|
||||||
}
|
}
|
||||||
|
@ -266,10 +266,13 @@ by the column name may be released only after publishing the index. */
|
|||||||
void
|
void
|
||||||
dict_mem_index_add_field(
|
dict_mem_index_add_field(
|
||||||
/*=====================*/
|
/*=====================*/
|
||||||
dict_index_t* index, /* in: index */
|
dict_index_t* index, /* in: index */
|
||||||
char* name, /* in: column name */
|
char* name, /* in: column name */
|
||||||
ulint order) /* in: order criterion; 0 means an ascending
|
ulint order, /* in: order criterion; 0 means an
|
||||||
order */
|
ascending order */
|
||||||
|
ulint prefix_len) /* in: 0 or the column prefix length
|
||||||
|
in a MySQL index like
|
||||||
|
INDEX (textcol(25)) */
|
||||||
{
|
{
|
||||||
dict_field_t* field;
|
dict_field_t* field;
|
||||||
|
|
||||||
@ -282,6 +285,8 @@ dict_mem_index_add_field(
|
|||||||
|
|
||||||
field->name = name;
|
field->name = name;
|
||||||
field->order = order;
|
field->order = order;
|
||||||
|
|
||||||
|
field->prefix_len = prefix_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
@ -632,7 +632,7 @@ fil_space_create(
|
|||||||
/* Spaces with an odd id number are reserved to replicate spaces
|
/* Spaces with an odd id number are reserved to replicate spaces
|
||||||
used in log debugging */
|
used in log debugging */
|
||||||
|
|
||||||
ut_a((purpose == FIL_LOG) || (id % 2 == 0));
|
ut_anp((purpose == FIL_LOG) || (id % 2 == 0));
|
||||||
#endif
|
#endif
|
||||||
mutex_enter(&(system->mutex));
|
mutex_enter(&(system->mutex));
|
||||||
|
|
||||||
@ -831,6 +831,34 @@ fil_space_release_free_extents(
|
|||||||
mutex_exit(&(system->mutex));
|
mutex_exit(&(system->mutex));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
Gets the number of reserved extents. If the database is silent, this number
|
||||||
|
should be zero. */
|
||||||
|
|
||||||
|
ulint
|
||||||
|
fil_space_get_n_reserved_extents(
|
||||||
|
/*=============================*/
|
||||||
|
ulint id) /* in: space id */
|
||||||
|
{
|
||||||
|
fil_space_t* space;
|
||||||
|
fil_system_t* system = fil_system;
|
||||||
|
ulint n;
|
||||||
|
|
||||||
|
ut_ad(system);
|
||||||
|
|
||||||
|
mutex_enter(&(system->mutex));
|
||||||
|
|
||||||
|
HASH_SEARCH(hash, system->spaces, id, space, space->id == id);
|
||||||
|
|
||||||
|
ut_a(space);
|
||||||
|
|
||||||
|
n = space->n_reserved_extents;
|
||||||
|
|
||||||
|
mutex_exit(&(system->mutex));
|
||||||
|
|
||||||
|
return(n);
|
||||||
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Prepares a file node for i/o. Opens the file if it is closed. Updates the
|
Prepares a file node for i/o. Opens the file if it is closed. Updates the
|
||||||
pending i/o's field in the node and the system appropriately. Takes the node
|
pending i/o's field in the node and the system appropriately. Takes the node
|
||||||
@ -1202,8 +1230,8 @@ loop:
|
|||||||
|
|
||||||
/* Do aio */
|
/* Do aio */
|
||||||
|
|
||||||
ut_a(byte_offset % OS_FILE_LOG_BLOCK_SIZE == 0);
|
ut_anp(byte_offset % OS_FILE_LOG_BLOCK_SIZE == 0);
|
||||||
ut_a((len % OS_FILE_LOG_BLOCK_SIZE) == 0);
|
ut_anp((len % OS_FILE_LOG_BLOCK_SIZE) == 0);
|
||||||
|
|
||||||
/* Queue the aio request */
|
/* Queue the aio request */
|
||||||
ret = os_aio(type, mode | wake_later, node->name, node->handle, buf,
|
ret = os_aio(type, mode | wake_later, node->name, node->handle, buf,
|
||||||
|
@ -778,7 +778,7 @@ fsp_init_file_page_low(
|
|||||||
page[i] = 0xFF;
|
page[i] = 0xFF;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
mach_write_to_8(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN,
|
mach_write_to_8(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM,
|
||||||
ut_dulint_zero);
|
ut_dulint_zero);
|
||||||
mach_write_to_8(page + FIL_PAGE_LSN, ut_dulint_zero);
|
mach_write_to_8(page + FIL_PAGE_LSN, ut_dulint_zero);
|
||||||
}
|
}
|
||||||
@ -2709,10 +2709,52 @@ fseg_free_page_low(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
fprintf(stderr,
|
||||||
|
"InnoDB: InnoDB is freeing space %lu page %lu,\n"
|
||||||
|
"InnoDB: which belongs to descr seg %lu %lu\n"
|
||||||
|
"InnoDB: segment %lu %lu.\n",
|
||||||
|
space, page,
|
||||||
|
ut_dulint_get_high(
|
||||||
|
mtr_read_dulint(descr + XDES_ID, MLOG_8BYTES, mtr)),
|
||||||
|
ut_dulint_get_low(
|
||||||
|
mtr_read_dulint(descr + XDES_ID, MLOG_8BYTES, mtr)),
|
||||||
|
ut_dulint_get_high(
|
||||||
|
mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr)),
|
||||||
|
ut_dulint_get_low(
|
||||||
|
mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr)));
|
||||||
|
*/
|
||||||
/* If we get here, the page is in some extent of the segment */
|
/* If we get here, the page is in some extent of the segment */
|
||||||
ut_a(0 == ut_dulint_cmp(
|
if (0 != ut_dulint_cmp(
|
||||||
mtr_read_dulint(descr + XDES_ID, MLOG_8BYTES, mtr),
|
mtr_read_dulint(descr + XDES_ID, MLOG_8BYTES, mtr),
|
||||||
mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr)));
|
mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr))) {
|
||||||
|
|
||||||
|
ut_sprintf_buf(errbuf, descr, 40);
|
||||||
|
fprintf(stderr,
|
||||||
|
"InnoDB: Dump of the tablespace extent descriptor: %s\n", errbuf);
|
||||||
|
ut_sprintf_buf(errbuf, seg_inode, 40);
|
||||||
|
fprintf(stderr,
|
||||||
|
"InnoDB: Dump of the segment inode: %s\n", errbuf);
|
||||||
|
|
||||||
|
fprintf(stderr,
|
||||||
|
"InnoDB: Serious error: InnoDB is trying to free space %lu page %lu,\n"
|
||||||
|
"InnoDB: which does not belong to segment %lu %lu but belongs\n"
|
||||||
|
"InnoDB: to segment %lu %lu.\n",
|
||||||
|
space, page,
|
||||||
|
ut_dulint_get_high(
|
||||||
|
mtr_read_dulint(descr + XDES_ID, MLOG_8BYTES, mtr)),
|
||||||
|
ut_dulint_get_low(
|
||||||
|
mtr_read_dulint(descr + XDES_ID, MLOG_8BYTES, mtr)),
|
||||||
|
ut_dulint_get_high(
|
||||||
|
mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr)),
|
||||||
|
ut_dulint_get_low(
|
||||||
|
mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr)));
|
||||||
|
|
||||||
|
fprintf(stderr,
|
||||||
|
"InnoDB: If the InnoDB recovery crashes here, see section 6.1\n"
|
||||||
|
"InnoDB: of http://www.innodb.com/ibman.html about forcing recovery.\n");
|
||||||
|
ut_a(0);
|
||||||
|
}
|
||||||
|
|
||||||
not_full_n_used = mtr_read_ulint(seg_inode + FSEG_NOT_FULL_N_USED,
|
not_full_n_used = mtr_read_ulint(seg_inode + FSEG_NOT_FULL_N_USED,
|
||||||
MLOG_4BYTES, mtr);
|
MLOG_4BYTES, mtr);
|
||||||
@ -2875,7 +2917,7 @@ fseg_free_step(
|
|||||||
freed yet */
|
freed yet */
|
||||||
|
|
||||||
ut_a(descr);
|
ut_a(descr);
|
||||||
ut_a(xdes_get_bit(descr, XDES_FREE_BIT, buf_frame_get_page_no(header)
|
ut_anp(xdes_get_bit(descr, XDES_FREE_BIT, buf_frame_get_page_no(header)
|
||||||
% FSP_EXTENT_SIZE, mtr) == FALSE);
|
% FSP_EXTENT_SIZE, mtr) == FALSE);
|
||||||
inode = fseg_inode_get(header, mtr);
|
inode = fseg_inode_get(header, mtr);
|
||||||
|
|
||||||
|
@ -293,11 +293,13 @@ ha_print_info(
|
|||||||
hash_table_t* table) /* in: hash table */
|
hash_table_t* table) /* in: hash table */
|
||||||
{
|
{
|
||||||
hash_cell_t* cell;
|
hash_cell_t* cell;
|
||||||
/* ha_node_t* node; */
|
/*
|
||||||
/* ulint nodes = 0; */
|
ha_node_t* node;
|
||||||
|
ulint len = 0;
|
||||||
|
ulint max_len = 0;
|
||||||
|
ulint nodes = 0;
|
||||||
|
*/
|
||||||
ulint cells = 0;
|
ulint cells = 0;
|
||||||
/* ulint len = 0; */
|
|
||||||
/* ulint max_len = 0; */
|
|
||||||
ulint n_bufs;
|
ulint n_bufs;
|
||||||
ulint i;
|
ulint i;
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ dropped! So, there seems to be no problem. */
|
|||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
Validates the ibuf data structures when the caller owns ibuf_mutex. */
|
Validates the ibuf data structures when the caller owns ibuf_mutex. */
|
||||||
static
|
|
||||||
ibool
|
ibool
|
||||||
ibuf_validate_low(void);
|
ibuf_validate_low(void);
|
||||||
/*===================*/
|
/*===================*/
|
||||||
@ -484,8 +484,8 @@ ibuf_data_init_for_space(
|
|||||||
index = dict_mem_index_create(buf, (char *) "CLUST_IND", space,
|
index = dict_mem_index_create(buf, (char *) "CLUST_IND", space,
|
||||||
DICT_CLUSTERED | DICT_UNIVERSAL | DICT_IBUF,2);
|
DICT_CLUSTERED | DICT_UNIVERSAL | DICT_IBUF,2);
|
||||||
|
|
||||||
dict_mem_index_add_field(index, (char *) "PAGE_NO", 0);
|
dict_mem_index_add_field(index, (char *) "PAGE_NO", 0, 0);
|
||||||
dict_mem_index_add_field(index, (char *) "TYPES", 0);
|
dict_mem_index_add_field(index, (char *) "TYPES", 0, 0);
|
||||||
|
|
||||||
index->page_no = FSP_IBUF_TREE_ROOT_PAGE_NO;
|
index->page_no = FSP_IBUF_TREE_ROOT_PAGE_NO;
|
||||||
|
|
||||||
@ -2727,7 +2727,7 @@ reset_bit:
|
|||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
Validates the ibuf data structures when the caller owns ibuf_mutex. */
|
Validates the ibuf data structures when the caller owns ibuf_mutex. */
|
||||||
static
|
|
||||||
ibool
|
ibool
|
||||||
ibuf_validate_low(void)
|
ibuf_validate_low(void)
|
||||||
/*===================*/
|
/*===================*/
|
||||||
|
@ -690,7 +690,13 @@ and sleep this many microseconds in between */
|
|||||||
#define BTR_CUR_RETRY_DELETE_N_TIMES 100
|
#define BTR_CUR_RETRY_DELETE_N_TIMES 100
|
||||||
#define BTR_CUR_RETRY_SLEEP_TIME 50000
|
#define BTR_CUR_RETRY_SLEEP_TIME 50000
|
||||||
|
|
||||||
/* The reference in a field of which data is stored on a different page */
|
/* The reference in a field for which data is stored on a different page.
|
||||||
|
The reference is at the end of the 'locally' stored part of the field.
|
||||||
|
'Locally' means storage in the index record.
|
||||||
|
We store locally a long enough prefix of each column so that we can determine
|
||||||
|
the ordering parts of each index record without looking into the externally
|
||||||
|
stored part. */
|
||||||
|
|
||||||
/*--------------------------------------*/
|
/*--------------------------------------*/
|
||||||
#define BTR_EXTERN_SPACE_ID 0 /* space id where stored */
|
#define BTR_EXTERN_SPACE_ID 0 /* space id where stored */
|
||||||
#define BTR_EXTERN_PAGE_NO 4 /* page no where stored */
|
#define BTR_EXTERN_PAGE_NO 4 /* page no where stored */
|
||||||
|
@ -388,11 +388,24 @@ to a file. Note that we must be careful to calculate the same value
|
|||||||
on 32-bit and 64-bit architectures. */
|
on 32-bit and 64-bit architectures. */
|
||||||
|
|
||||||
ulint
|
ulint
|
||||||
buf_calc_page_checksum(
|
buf_calc_page_new_checksum(
|
||||||
/*===================*/
|
/*=======================*/
|
||||||
/* out: checksum */
|
/* out: checksum */
|
||||||
byte* page); /* in: buffer page */
|
byte* page); /* in: buffer page */
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
In versions < 4.0.14 and < 4.1.1 there was a bug that the checksum only
|
||||||
|
looked at the first few bytes of the page. This calculates that old
|
||||||
|
checksum.
|
||||||
|
NOTE: we must first store the new formula checksum to
|
||||||
|
FIL_PAGE_SPACE_OR_CHKSUM before calculating and storing this old checksum
|
||||||
|
because this takes that field as an input! */
|
||||||
|
|
||||||
|
ulint
|
||||||
|
buf_calc_page_old_checksum(
|
||||||
|
/*=======================*/
|
||||||
|
/* out: checksum */
|
||||||
|
byte* page); /* in: buffer page */
|
||||||
|
/************************************************************************
|
||||||
Checks if a page is corrupt. */
|
Checks if a page is corrupt. */
|
||||||
|
|
||||||
ibool
|
ibool
|
||||||
|
@ -453,8 +453,6 @@ struct dfield_struct{
|
|||||||
void* data; /* pointer to data */
|
void* data; /* pointer to data */
|
||||||
ulint len; /* data length; UNIV_SQL_NULL if SQL null; */
|
ulint len; /* data length; UNIV_SQL_NULL if SQL null; */
|
||||||
dtype_t type; /* type of data */
|
dtype_t type; /* type of data */
|
||||||
ulint col_no; /* when building index entries, the column
|
|
||||||
number can be stored here */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dtuple_struct {
|
struct dtuple_struct {
|
||||||
|
@ -18,14 +18,16 @@ typedef struct dtype_struct dtype_t;
|
|||||||
data type */
|
data type */
|
||||||
extern dtype_t* dtype_binary;
|
extern dtype_t* dtype_binary;
|
||||||
|
|
||||||
/* Data main types of SQL data; NOTE! character data types requiring
|
/* Data main types of SQL data */
|
||||||
collation transformation must have the smallest codes! All codes must be
|
|
||||||
less than 256! */
|
|
||||||
#define DATA_VARCHAR 1 /* character varying */
|
#define DATA_VARCHAR 1 /* character varying */
|
||||||
#define DATA_CHAR 2 /* fixed length character */
|
#define DATA_CHAR 2 /* fixed length character */
|
||||||
#define DATA_FIXBINARY 3 /* binary string of fixed length */
|
#define DATA_FIXBINARY 3 /* binary string of fixed length */
|
||||||
#define DATA_BINARY 4 /* binary string */
|
#define DATA_BINARY 4 /* binary string */
|
||||||
#define DATA_BLOB 5 /* binary large object */
|
#define DATA_BLOB 5 /* binary large object, or a TEXT type; if
|
||||||
|
prtype & DATA_NONLATIN1 != 0 the data must
|
||||||
|
be compared by MySQL as a whole field; if
|
||||||
|
prtype & DATA_BINARY_TYPE == 0, then this is
|
||||||
|
actually a TEXT column */
|
||||||
#define DATA_INT 6 /* integer: can be any size 1 - 8 bytes */
|
#define DATA_INT 6 /* integer: can be any size 1 - 8 bytes */
|
||||||
#define DATA_SYS_CHILD 7 /* address of the child page in node pointer */
|
#define DATA_SYS_CHILD 7 /* address of the child page in node pointer */
|
||||||
#define DATA_SYS 8 /* system column */
|
#define DATA_SYS 8 /* system column */
|
||||||
@ -34,35 +36,55 @@ binary strings */
|
|||||||
#define DATA_FLOAT 9
|
#define DATA_FLOAT 9
|
||||||
#define DATA_DOUBLE 10
|
#define DATA_DOUBLE 10
|
||||||
#define DATA_DECIMAL 11 /* decimal number stored as an ASCII string */
|
#define DATA_DECIMAL 11 /* decimal number stored as an ASCII string */
|
||||||
#define DATA_VARMYSQL 12 /* data types for which comparisons must be */
|
#define DATA_VARMYSQL 12 /* non-latin1 varying length char */
|
||||||
#define DATA_MYSQL 13 /* made by MySQL */
|
#define DATA_MYSQL 13 /* non-latin1 fixed length char */
|
||||||
#define DATA_ERROR 111 /* error value */
|
#define DATA_MTYPE_MAX 63 /* dtype_store_for_order_and_null_size()
|
||||||
#define DATA_MTYPE_MAX 255
|
requires the values are <= 63 */
|
||||||
/*-------------------------------------------*/
|
/*-------------------------------------------*/
|
||||||
/* Precise data types for system columns; NOTE: the values must run
|
/* In the lowest byte in the precise type we store the MySQL type code
|
||||||
from 0 up in the order given! All codes must be less than 256! */
|
(not applicable for system columns). */
|
||||||
|
|
||||||
|
#define DATA_ENGLISH 4 /* English language character string: this
|
||||||
|
is a relic from pre-MySQL time and only used
|
||||||
|
for InnoDB's own system tables */
|
||||||
|
#define DATA_ERROR 111 /* another relic from pre-MySQL time */
|
||||||
|
|
||||||
|
#define DATA_MYSQL_TYPE_MASK 255 /* AND with this mask to extract the MySQL
|
||||||
|
type from the precise type */
|
||||||
|
|
||||||
|
/* Precise data types for system columns and the length of those columns;
|
||||||
|
NOTE: the values must run from 0 up in the order given! All codes must
|
||||||
|
be less than 256 */
|
||||||
#define DATA_ROW_ID 0 /* row id: a dulint */
|
#define DATA_ROW_ID 0 /* row id: a dulint */
|
||||||
#define DATA_ROW_ID_LEN 6 /* stored length for row id */
|
#define DATA_ROW_ID_LEN 6 /* stored length for row id */
|
||||||
|
|
||||||
#define DATA_TRX_ID 1 /* transaction id: 6 bytes */
|
#define DATA_TRX_ID 1 /* transaction id: 6 bytes */
|
||||||
#define DATA_TRX_ID_LEN 6
|
#define DATA_TRX_ID_LEN 6
|
||||||
|
|
||||||
#define DATA_ROLL_PTR 2 /* rollback data pointer: 7 bytes */
|
#define DATA_ROLL_PTR 2 /* rollback data pointer: 7 bytes */
|
||||||
#define DATA_ROLL_PTR_LEN 7
|
#define DATA_ROLL_PTR_LEN 7
|
||||||
|
|
||||||
#define DATA_MIX_ID 3 /* mixed index label: a dulint, stored in
|
#define DATA_MIX_ID 3 /* mixed index label: a dulint, stored in
|
||||||
a row in a compressed form */
|
a row in a compressed form */
|
||||||
#define DATA_MIX_ID_LEN 9 /* maximum stored length for mix id (in a
|
#define DATA_MIX_ID_LEN 9 /* maximum stored length for mix id (in a
|
||||||
compressed dulint form) */
|
compressed dulint form) */
|
||||||
#define DATA_N_SYS_COLS 4 /* number of system columns defined above */
|
#define DATA_N_SYS_COLS 4 /* number of system columns defined above */
|
||||||
|
/*-------------------------------------------*/
|
||||||
|
/* Flags ORed to the precise data type */
|
||||||
#define DATA_NOT_NULL 256 /* this is ORed to the precise type when
|
#define DATA_NOT_NULL 256 /* this is ORed to the precise type when
|
||||||
the column is declared as NOT NULL */
|
the column is declared as NOT NULL */
|
||||||
#define DATA_UNSIGNED 512 /* this id ORed to the precise type when
|
#define DATA_UNSIGNED 512 /* this id ORed to the precise type when
|
||||||
we have an unsigned integer type */
|
we have an unsigned integer type */
|
||||||
|
#define DATA_BINARY_TYPE 1024 /* if the data type is a binary character
|
||||||
|
string, this is ORed to the precise type:
|
||||||
|
this only holds for tables created with
|
||||||
|
>= MySQL-4.0.14 */
|
||||||
|
#define DATA_NONLATIN1 2048 /* if the data type is a DATA_BLOB (actually
|
||||||
|
TEXT) of a non-latin1 type, this is ORed to
|
||||||
|
the precise type: this only holds for tables
|
||||||
|
created with >= MySQL-4.0.14 */
|
||||||
/*-------------------------------------------*/
|
/*-------------------------------------------*/
|
||||||
|
|
||||||
/* Precise types of a char or varchar data. All codes must be less than 256! */
|
|
||||||
#define DATA_ENGLISH 4 /* English language character string */
|
|
||||||
#define DATA_FINNISH 5 /* Finnish */
|
|
||||||
#define DATA_PRTYPE_MAX 255
|
|
||||||
|
|
||||||
/* This many bytes we need to store the type information affecting the
|
/* This many bytes we need to store the type information affecting the
|
||||||
alphabetical order for a single field and decide the storage size of an
|
alphabetical order for a single field and decide the storage size of an
|
||||||
SQL null*/
|
SQL null*/
|
||||||
@ -123,7 +145,7 @@ dtype_get_pad_char(
|
|||||||
/*===============*/
|
/*===============*/
|
||||||
/* out: padding character code, or
|
/* out: padding character code, or
|
||||||
ULINT_UNDEFINED if no padding specified */
|
ULINT_UNDEFINED if no padding specified */
|
||||||
dtype_t* type); /* in: typeumn */
|
dtype_t* type); /* in: type */
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
Returns the size of a fixed size data type, 0 if not a fixed size type. */
|
Returns the size of a fixed size data type, 0 if not a fixed size type. */
|
||||||
UNIV_INLINE
|
UNIV_INLINE
|
||||||
@ -150,24 +172,24 @@ dtype_is_fixed_size(
|
|||||||
/* out: TRUE if fixed size */
|
/* out: TRUE if fixed size */
|
||||||
dtype_t* type); /* in: type */
|
dtype_t* type); /* in: type */
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Stores to a type the information which determines its alphabetical
|
Stores for a type the information which determines its alphabetical ordering
|
||||||
ordering. */
|
and the storage size of an SQL NULL value. */
|
||||||
UNIV_INLINE
|
UNIV_INLINE
|
||||||
void
|
void
|
||||||
dtype_store_for_order_and_null_size(
|
dtype_store_for_order_and_null_size(
|
||||||
/*================================*/
|
/*================================*/
|
||||||
byte* buf, /* in: buffer for DATA_ORDER_NULL_TYPE_BUF_SIZE
|
byte* buf, /* in: buffer for DATA_ORDER_NULL_TYPE_BUF_SIZE
|
||||||
bytes */
|
bytes where we store the info */
|
||||||
dtype_t* type); /* in: type struct */
|
dtype_t* type); /* in: type struct */
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Reads of a type the stored information which determines its alphabetical
|
Reads to a type the stored information which determines its alphabetical
|
||||||
ordering. */
|
ordering and the storage size of an SQL NULL value. */
|
||||||
UNIV_INLINE
|
UNIV_INLINE
|
||||||
void
|
void
|
||||||
dtype_read_for_order_and_null_size(
|
dtype_read_for_order_and_null_size(
|
||||||
/*===============================*/
|
/*===============================*/
|
||||||
dtype_t* type, /* in: type struct */
|
dtype_t* type, /* in: type struct */
|
||||||
byte* buf); /* in: buffer for type order info */
|
byte* buf); /* in: buffer for the stored order info */
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
Validates a data type structure. */
|
Validates a data type structure. */
|
||||||
|
|
||||||
|
@ -110,7 +110,9 @@ dtype_get_pad_char(
|
|||||||
if (type->mtype == DATA_CHAR
|
if (type->mtype == DATA_CHAR
|
||||||
|| type->mtype == DATA_VARCHAR
|
|| type->mtype == DATA_VARCHAR
|
||||||
|| type->mtype == DATA_BINARY
|
|| type->mtype == DATA_BINARY
|
||||||
|| type->mtype == DATA_FIXBINARY) {
|
|| type->mtype == DATA_FIXBINARY
|
||||||
|
|| type->mtype == DATA_MYSQL
|
||||||
|
|| type->mtype == DATA_VARMYSQL) {
|
||||||
|
|
||||||
/* Space is the padding character for all char and binary
|
/* Space is the padding character for all char and binary
|
||||||
strings */
|
strings */
|
||||||
@ -124,39 +126,56 @@ dtype_get_pad_char(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Stores to a type the information which determines its alphabetical
|
Stores for a type the information which determines its alphabetical ordering
|
||||||
ordering. */
|
and the storage size of an SQL NULL value. */
|
||||||
UNIV_INLINE
|
UNIV_INLINE
|
||||||
void
|
void
|
||||||
dtype_store_for_order_and_null_size(
|
dtype_store_for_order_and_null_size(
|
||||||
/*================================*/
|
/*================================*/
|
||||||
byte* buf, /* in: buffer for DATA_ORDER_NULL_TYPE_BUF_SIZE
|
byte* buf, /* in: buffer for DATA_ORDER_NULL_TYPE_BUF_SIZE
|
||||||
bytes */
|
bytes where we store the info */
|
||||||
dtype_t* type) /* in: type struct */
|
dtype_t* type) /* in: type struct */
|
||||||
{
|
{
|
||||||
ut_ad(4 == DATA_ORDER_NULL_TYPE_BUF_SIZE);
|
ut_ad(4 == DATA_ORDER_NULL_TYPE_BUF_SIZE);
|
||||||
|
|
||||||
buf[0] = (byte)(type->mtype & 0xFF);
|
buf[0] = (byte)(type->mtype & 0xFF);
|
||||||
|
|
||||||
|
if (type->prtype & DATA_BINARY_TYPE) {
|
||||||
|
buf[0] = buf[0] | 128;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type->prtype & DATA_NONLATIN1) {
|
||||||
|
buf[0] = buf[0] | 64;
|
||||||
|
}
|
||||||
|
|
||||||
buf[1] = (byte)(type->prtype & 0xFF);
|
buf[1] = (byte)(type->prtype & 0xFF);
|
||||||
|
|
||||||
mach_write_to_2(buf + 2, type->len & 0xFFFF);
|
mach_write_to_2(buf + 2, type->len & 0xFFFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Reads of a type the stored information which determines its alphabetical
|
Reads to a type the stored information which determines its alphabetical
|
||||||
ordering. */
|
ordering and the storage size of an SQL NULL value. */
|
||||||
UNIV_INLINE
|
UNIV_INLINE
|
||||||
void
|
void
|
||||||
dtype_read_for_order_and_null_size(
|
dtype_read_for_order_and_null_size(
|
||||||
/*===============================*/
|
/*===============================*/
|
||||||
dtype_t* type, /* in: type struct */
|
dtype_t* type, /* in: type struct */
|
||||||
byte* buf) /* in: buffer for type order info */
|
byte* buf) /* in: buffer for stored type order info */
|
||||||
{
|
{
|
||||||
ut_ad(4 == DATA_ORDER_NULL_TYPE_BUF_SIZE);
|
ut_ad(4 == DATA_ORDER_NULL_TYPE_BUF_SIZE);
|
||||||
|
|
||||||
type->mtype = buf[0];
|
type->mtype = buf[0] & 63;
|
||||||
type->prtype = buf[1];
|
type->prtype = buf[1];
|
||||||
|
|
||||||
|
if (buf[0] & 128) {
|
||||||
|
type->prtype = type->prtype | DATA_BINARY_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (buf[0] & 64) {
|
||||||
|
type->prtype = type->prtype | DATA_NONLATIN1;
|
||||||
|
}
|
||||||
|
|
||||||
type->len = mach_read_from_2(buf + 2);
|
type->len = mach_read_from_2(buf + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,8 +44,10 @@ Created 5/24/1996 Heikki Tuuri
|
|||||||
#define DB_CORRUPTION 39 /* data structure corruption noticed */
|
#define DB_CORRUPTION 39 /* data structure corruption noticed */
|
||||||
#define DB_COL_APPEARS_TWICE_IN_INDEX 40 /* InnoDB cannot handle an index
|
#define DB_COL_APPEARS_TWICE_IN_INDEX 40 /* InnoDB cannot handle an index
|
||||||
where same column appears twice */
|
where same column appears twice */
|
||||||
#define DB_CANNOT_DROP_CONSTRAINT 40 /* dropping a foreign key constraint
|
#define DB_CANNOT_DROP_CONSTRAINT 41 /* dropping a foreign key constraint
|
||||||
from a table failed */
|
from a table failed */
|
||||||
|
#define DB_NO_SAVEPOINT 42 /* no savepoint exists with the given
|
||||||
|
name */
|
||||||
|
|
||||||
/* The following are partial failure codes */
|
/* The following are partial failure codes */
|
||||||
#define DB_FAIL 1000
|
#define DB_FAIL 1000
|
||||||
|
@ -569,6 +569,29 @@ dict_index_get_nth_col_pos(
|
|||||||
dict_index_t* index, /* in: index */
|
dict_index_t* index, /* in: index */
|
||||||
ulint n); /* in: column number */
|
ulint n); /* in: column number */
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
Returns TRUE if the index contains a column or a prefix of that column. */
|
||||||
|
|
||||||
|
ibool
|
||||||
|
dict_index_contains_col_or_prefix(
|
||||||
|
/*==============================*/
|
||||||
|
/* out: TRUE if contains the column or its
|
||||||
|
prefix */
|
||||||
|
dict_index_t* index, /* in: index */
|
||||||
|
ulint n); /* in: column number */
|
||||||
|
/************************************************************************
|
||||||
|
Looks for a matching field in an index. The column and the prefix len has
|
||||||
|
to be the same. */
|
||||||
|
|
||||||
|
ulint
|
||||||
|
dict_index_get_nth_field_pos(
|
||||||
|
/*=========================*/
|
||||||
|
/* out: position in internal representation
|
||||||
|
of the index; if not contained, returns
|
||||||
|
ULINT_UNDEFINED */
|
||||||
|
dict_index_t* index, /* in: index from which to search */
|
||||||
|
dict_index_t* index2, /* in: index */
|
||||||
|
ulint n); /* in: field number in index2 */
|
||||||
|
/************************************************************************
|
||||||
Looks for column n position in the clustered index. */
|
Looks for column n position in the clustered index. */
|
||||||
|
|
||||||
ulint
|
ulint
|
||||||
|
@ -203,7 +203,6 @@ dict_index_get_n_fields(
|
|||||||
{
|
{
|
||||||
ut_ad(index);
|
ut_ad(index);
|
||||||
ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
|
ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
|
||||||
ut_ad(index->cached);
|
|
||||||
|
|
||||||
return(index->n_fields);
|
return(index->n_fields);
|
||||||
}
|
}
|
||||||
|
@ -111,10 +111,13 @@ by the column name may be released only after publishing the index. */
|
|||||||
void
|
void
|
||||||
dict_mem_index_add_field(
|
dict_mem_index_add_field(
|
||||||
/*=====================*/
|
/*=====================*/
|
||||||
dict_index_t* index, /* in: index */
|
dict_index_t* index, /* in: index */
|
||||||
char* name, /* in: column name */
|
char* name, /* in: column name */
|
||||||
ulint order); /* in: order criterion; 0 means an ascending
|
ulint order, /* in: order criterion; 0 means an
|
||||||
order */
|
ascending order */
|
||||||
|
ulint prefix_len); /* in: 0 or the column prefix length
|
||||||
|
in a MySQL index like
|
||||||
|
INDEX (textcol(25)) */
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Frees an index memory object. */
|
Frees an index memory object. */
|
||||||
|
|
||||||
@ -158,12 +161,18 @@ struct dict_col_struct{
|
|||||||
in some of the functions below */
|
in some of the functions below */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define DICT_MAX_COL_PREFIX_LEN 512
|
||||||
|
|
||||||
/* Data structure for a field in an index */
|
/* Data structure for a field in an index */
|
||||||
struct dict_field_struct{
|
struct dict_field_struct{
|
||||||
dict_col_t* col; /* pointer to the table column */
|
dict_col_t* col; /* pointer to the table column */
|
||||||
char* name; /* name of the column */
|
char* name; /* name of the column */
|
||||||
ulint order; /* flags for ordering this field:
|
ulint order; /* flags for ordering this field:
|
||||||
DICT_DESCEND, ... */
|
DICT_DESCEND, ... */
|
||||||
|
ulint prefix_len; /* 0 or the length of the column
|
||||||
|
prefix in a MySQL index of type, e.g.,
|
||||||
|
INDEX (textcol(25)); must be smaller
|
||||||
|
than DICT_MAX_COL_PREFIX_LEN */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Data structure for an index tree */
|
/* Data structure for an index tree */
|
||||||
|
@ -43,7 +43,10 @@ struct fil_addr_struct{
|
|||||||
extern fil_addr_t fil_addr_null;
|
extern fil_addr_t fil_addr_null;
|
||||||
|
|
||||||
/* The byte offsets on a file page for various variables */
|
/* The byte offsets on a file page for various variables */
|
||||||
#define FIL_PAGE_SPACE 0 /* space id the page belongs to */
|
#define FIL_PAGE_SPACE_OR_CHKSUM 0 /* in < MySQL-4.0.14 space id the
|
||||||
|
page belongs to (== 0) but in later
|
||||||
|
versions the 'new' checksum of the
|
||||||
|
page */
|
||||||
#define FIL_PAGE_OFFSET 4 /* page offset inside space */
|
#define FIL_PAGE_OFFSET 4 /* page offset inside space */
|
||||||
#define FIL_PAGE_PREV 8 /* if there is a 'natural' predecessor
|
#define FIL_PAGE_PREV 8 /* if there is a 'natural' predecessor
|
||||||
of the page, its offset */
|
of the page, its offset */
|
||||||
@ -64,7 +67,7 @@ extern fil_addr_t fil_addr_null;
|
|||||||
#define FIL_PAGE_DATA 38 /* start of the data on the page */
|
#define FIL_PAGE_DATA 38 /* start of the data on the page */
|
||||||
|
|
||||||
/* File page trailer */
|
/* File page trailer */
|
||||||
#define FIL_PAGE_END_LSN 8 /* the low 4 bytes of this are used
|
#define FIL_PAGE_END_LSN_OLD_CHKSUM 8 /* the low 4 bytes of this are used
|
||||||
to store the page checksum, the
|
to store the page checksum, the
|
||||||
last 4 bytes should be identical
|
last 4 bytes should be identical
|
||||||
to the last 4 bytes of FIL_PAGE_LSN */
|
to the last 4 bytes of FIL_PAGE_LSN */
|
||||||
@ -383,6 +386,14 @@ fil_space_release_free_extents(
|
|||||||
/*===========================*/
|
/*===========================*/
|
||||||
ulint id, /* in: space id */
|
ulint id, /* in: space id */
|
||||||
ulint n_reserved); /* in: how many one reserved */
|
ulint n_reserved); /* in: how many one reserved */
|
||||||
|
/***********************************************************************
|
||||||
|
Gets the number of reserved extents. If the database is silent, this number
|
||||||
|
should be zero. */
|
||||||
|
|
||||||
|
ulint
|
||||||
|
fil_space_get_n_reserved_extents(
|
||||||
|
/*=============================*/
|
||||||
|
ulint id); /* in: space id */
|
||||||
|
|
||||||
typedef struct fil_space_struct fil_space_t;
|
typedef struct fil_space_struct fil_space_t;
|
||||||
|
|
||||||
|
@ -450,6 +450,18 @@ lock_rec_get_mutex_for_addr(
|
|||||||
ulint space, /* in: space id */
|
ulint space, /* in: space id */
|
||||||
ulint page_no);/* in: page number */
|
ulint page_no);/* in: page number */
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
Checks that a transaction id is sensible, i.e., not in the future. */
|
||||||
|
|
||||||
|
ibool
|
||||||
|
lock_check_trx_id_sanity(
|
||||||
|
/*=====================*/
|
||||||
|
/* out: TRUE if ok */
|
||||||
|
dulint trx_id, /* in: trx id */
|
||||||
|
rec_t* rec, /* in: user record */
|
||||||
|
dict_index_t* index, /* in: clustered index */
|
||||||
|
ibool has_kernel_mutex);/* in: TRUE if the caller owns the
|
||||||
|
kernel mutex */
|
||||||
|
/*************************************************************************
|
||||||
Validates the lock queue on a single record. */
|
Validates the lock queue on a single record. */
|
||||||
|
|
||||||
ibool
|
ibool
|
||||||
|
@ -173,6 +173,12 @@ log_write_up_to(
|
|||||||
/* in: TRUE if we want the written log also to be
|
/* in: TRUE if we want the written log also to be
|
||||||
flushed to disk */
|
flushed to disk */
|
||||||
/********************************************************************
|
/********************************************************************
|
||||||
|
Does a syncronous flush of the log buffer to disk. */
|
||||||
|
|
||||||
|
void
|
||||||
|
log_buffer_flush_to_disk(void);
|
||||||
|
/*==========================*/
|
||||||
|
/********************************************************************
|
||||||
Advances the smallest lsn for which there are unflushed dirty blocks in the
|
Advances the smallest lsn for which there are unflushed dirty blocks in the
|
||||||
buffer pool and also may make a new checkpoint. NOTE: this function may only
|
buffer pool and also may make a new checkpoint. NOTE: this function may only
|
||||||
be called if the calling thread owns no synchronization objects! */
|
be called if the calling thread owns no synchronization objects! */
|
||||||
@ -507,6 +513,15 @@ log_print(
|
|||||||
/*======*/
|
/*======*/
|
||||||
char* buf, /* in/out: buffer where to print */
|
char* buf, /* in/out: buffer where to print */
|
||||||
char* buf_end);/* in: buffer end */
|
char* buf_end);/* in: buffer end */
|
||||||
|
/**********************************************************
|
||||||
|
Peeks the current lsn. */
|
||||||
|
|
||||||
|
ibool
|
||||||
|
log_peek_lsn(
|
||||||
|
/*=========*/
|
||||||
|
/* out: TRUE if success, FALSE if could not get the
|
||||||
|
log system mutex */
|
||||||
|
dulint* lsn); /* out: if returns TRUE, current lsn is here */
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Refreshes the statistics used to print per-second averages. */
|
Refreshes the statistics used to print per-second averages. */
|
||||||
|
|
||||||
@ -779,6 +794,11 @@ struct log_struct{
|
|||||||
called */
|
called */
|
||||||
|
|
||||||
/* Fields involved in checkpoints */
|
/* Fields involved in checkpoints */
|
||||||
|
ulint log_group_capacity; /* capacity of the log group; if
|
||||||
|
the checkpoint age exceeds this, it is
|
||||||
|
a serious error because it is possible
|
||||||
|
we will then overwrite log and spoil
|
||||||
|
crash recovery */
|
||||||
ulint max_modified_age_async;
|
ulint max_modified_age_async;
|
||||||
/* when this recommended value for lsn
|
/* when this recommended value for lsn
|
||||||
- buf_pool_get_oldest_modification()
|
- buf_pool_get_oldest_modification()
|
||||||
|
@ -333,6 +333,8 @@ extern ibool recv_recovery_on;
|
|||||||
extern ibool recv_no_ibuf_operations;
|
extern ibool recv_no_ibuf_operations;
|
||||||
extern ibool recv_needed_recovery;
|
extern ibool recv_needed_recovery;
|
||||||
|
|
||||||
|
extern ibool recv_lsn_checks_on;
|
||||||
|
|
||||||
extern ibool recv_is_making_a_backup;
|
extern ibool recv_is_making_a_backup;
|
||||||
extern ulint recv_max_parsed_page_no;
|
extern ulint recv_max_parsed_page_no;
|
||||||
|
|
||||||
|
@ -146,6 +146,21 @@ os_file_create_simple(
|
|||||||
ulint access_type,/* in: OS_FILE_READ_ONLY or OS_FILE_READ_WRITE */
|
ulint access_type,/* in: OS_FILE_READ_ONLY or OS_FILE_READ_WRITE */
|
||||||
ibool* success);/* out: TRUE if succeed, FALSE if error */
|
ibool* success);/* out: TRUE if succeed, FALSE if error */
|
||||||
/********************************************************************
|
/********************************************************************
|
||||||
|
A simple function to open or create a file. */
|
||||||
|
|
||||||
|
os_file_t
|
||||||
|
os_file_create_simple_no_error_handling(
|
||||||
|
/*====================================*/
|
||||||
|
/* out, own: handle to the file, not defined if error,
|
||||||
|
error number can be retrieved with os_get_last_error */
|
||||||
|
char* name, /* in: name of the file or path as a null-terminated
|
||||||
|
string */
|
||||||
|
ulint create_mode,/* in: OS_FILE_OPEN if an existing file is opened
|
||||||
|
(if does not exist, error), or OS_FILE_CREATE if a new
|
||||||
|
file is created (if exists, error) */
|
||||||
|
ulint access_type,/* in: OS_FILE_READ_ONLY or OS_FILE_READ_WRITE */
|
||||||
|
ibool* success);/* out: TRUE if succeed, FALSE if error */
|
||||||
|
/********************************************************************
|
||||||
Opens an existing file or creates a new. */
|
Opens an existing file or creates a new. */
|
||||||
|
|
||||||
os_file_t
|
os_file_t
|
||||||
@ -160,7 +175,11 @@ os_file_create(
|
|||||||
file is created (if exists, error), OS_FILE_OVERWRITE
|
file is created (if exists, error), OS_FILE_OVERWRITE
|
||||||
if a new file is created or an old overwritten */
|
if a new file is created or an old overwritten */
|
||||||
ulint purpose,/* in: OS_FILE_AIO, if asynchronous, non-buffered i/o
|
ulint purpose,/* in: OS_FILE_AIO, if asynchronous, non-buffered i/o
|
||||||
is desired, OS_FILE_NORMAL, if any normal file */
|
is desired, OS_FILE_NORMAL, if any normal file;
|
||||||
|
NOTE that it also depends on type, os_aio_.. and srv_..
|
||||||
|
variables whether we really use async i/o or
|
||||||
|
unbuffered i/o: look in the function source code for
|
||||||
|
the exact rules */
|
||||||
ulint type, /* in: OS_DATA_FILE or OS_LOG_FILE */
|
ulint type, /* in: OS_DATA_FILE or OS_LOG_FILE */
|
||||||
ibool* success);/* out: TRUE if succeed, FALSE if error */
|
ibool* success);/* out: TRUE if succeed, FALSE if error */
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
@ -173,6 +192,14 @@ os_file_close(
|
|||||||
/* out: TRUE if success */
|
/* out: TRUE if success */
|
||||||
os_file_t file); /* in, own: handle to a file */
|
os_file_t file); /* in, own: handle to a file */
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
Closes a file handle. */
|
||||||
|
|
||||||
|
ibool
|
||||||
|
os_file_close_no_error_handling(
|
||||||
|
/*============================*/
|
||||||
|
/* out: TRUE if success */
|
||||||
|
os_file_t file); /* in, own: handle to a file */
|
||||||
|
/***************************************************************************
|
||||||
Gets a file size. */
|
Gets a file size. */
|
||||||
|
|
||||||
ibool
|
ibool
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user