This commit is contained in:
bell@laptop.sanja.is.com.ua 2003-08-19 20:14:35 +03:00
commit dd9cbce47b
421 changed files with 14590 additions and 3777 deletions

View File

@ -3,7 +3,7 @@
path=`dirname $0`
. "$path/SETUP.sh"
extra_flags="$pentium_cflags $debug_cflags -DBIG_TABLES"
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"

View 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"

View File

@ -63,11 +63,13 @@ miguel@hegel.br
miguel@hegel.local
miguel@light.
miguel@light.local
miguel@sartre.local
mmatthew@markslaptop.
monty@bitch.mysql.fi
monty@butch.
monty@donna.mysql.fi
monty@hundin.mysql.fi
monty@mashka.(none)
monty@mashka.mysql.fi
monty@narttu.
monty@narttu.mysql.fi
@ -85,6 +87,7 @@ nick@mysql.com
nick@nick.leippe.com
papa@gbichot.local
paul@central.snake.net
paul@ice.local
paul@ice.snake.net
paul@teton.kitebird.com
pem@mysql.com

View File

@ -38,12 +38,14 @@ $opt_export_only= undef;
$opt_help= $opt_verbose= 0;
$opt_log= undef;
$opt_mail= "";
$opt_revision= undef;
$opt_suffix= "";
$opt_test= undef;
$opt_skip_check= undef;
$opt_skip_manual= undef;
$opt_win_dist= undef;
$version= "unknown";
$major=$minor=$release=0;
GetOptions(
"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}.*)\)/;
$version= $1;
($major, $minor, $release) = split(/\./,$version);
}
&logger("Found version string: $version");
@ -220,7 +223,7 @@ if (defined $opt_changelog)
{
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
{

View File

@ -248,7 +248,8 @@ if ($opt_stage <= 1)
$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")
{
safe_system("cp -r $pwd/$host/include-mysql/* $pwd/$host/$ver/include");

View File

@ -41,10 +41,10 @@ paper: manual_a4.ps manual_letter.ps $(PDFMANUAL)
# The Makefile contains the previous version so we can not use that
include.texi: ../configure.in
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 | \
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 | \
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" > $@
../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
%::SCCS/s.%

View File

@ -1,11 +1,11 @@
#!/my/gnu/bin/perl -w -*- perl -*-
#!/usr/bin/perl -w -*- perl -*-
# Generate text files from top directory from the manual.
$from = shift(@ARGV);
$fnode = shift(@ARGV);
$tnode = shift(@ARGV);
open(IN, "$from") || die;
open(IN, "$from") || die "Cannot open $from: $!";
$in = 0;
@ -19,7 +19,7 @@ while (<IN>)
}
elsif (/^File: mysql.info/ || (/^/))
{
# Just Skip node begginigs
# Just Skip node beginnings
}
else
{
@ -38,3 +38,6 @@ while (<IN>)
}
close(IN);
die "Could not find node \"$tnode\"" if ($in == 1);
exit 0;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View 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=

View File

@ -0,0 +1,4 @@
[General]
Type=FILELIST
Version=1.00.000

View 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=

View File

@ -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

View File

@ -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

View 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=

View 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

View File

@ -0,0 +1,4 @@
[General]
Type=REGISTRYDATA
Version=1.00.000

View 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"

View File

@ -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

View 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

View File

@ -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

View File

@ -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=

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View 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=

View File

@ -0,0 +1,4 @@
[General]
Type=FILELIST
Version=1.00.000

View 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=

View File

@ -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

View File

@ -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

View 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=

View 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

View File

@ -0,0 +1,4 @@
[General]
Type=REGISTRYDATA
Version=1.00.000

View 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"

View File

@ -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

View 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

View File

@ -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

View 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=

View File

@ -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=

View File

@ -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=

View File

@ -90,7 +90,7 @@ mysql_cv_btype_last_arg_accept=none
],
[int a = accept(1, (struct sockaddr *) 0, (socklen_t *) 0); return (a != 0);],
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)
#undef inline
#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);],
mysql_cv_btype_last_arg_accept=size_t)]
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
fi)
AC_LANG_RESTORE
@ -166,12 +166,19 @@ AC_DEFUN(MYSQL_CHECK_ZLIB_WITH_COMPRESS, [
save_LIBS="$LIBS"
LIBS="-l$1 $LIBS"
AC_CACHE_CHECK([if libz with compress], mysql_cv_compress,
[AC_TRY_LINK([#include <zlib.h>
[AC_TRY_RUN([#include <zlib.h>
#ifdef __cplusplus
extern "C"
#endif
],
[ return compress(0, (unsigned long*) 0, "", 0);
int main(int argv, char **argc)
{
return 0;
}
int link_test()
{
return compress(0, (unsigned long*) 0, "", 0);
}
], mysql_cv_compress=yes, mysql_cv_compress=no)])
if test "$mysql_cv_compress" = "yes"
then
@ -386,11 +393,11 @@ AC_CACHE_VAL(mysql_cv_termcap_lib,
[AC_CHECK_LIB(termcap, tgetent, mysql_cv_termcap_lib=libtermcap,
mysql_cv_termcap_lib=NOT_FOUND)])])])
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])
elif test $mysql_cv_termcap_lib = libtermcap; then
elif test "$mysql_cv_termcap_lib" = "libtermcap"; then
TERMCAP_LIB=-ltermcap
elif test $mysql_cv_termcap_lib = libncurses; then
elif test "$mysql_cv_termcap_lib" = "libncurses"; then
TERMCAP_LIB=-lncurses
else
TERMCAP_LIB=-lcurses
@ -446,7 +453,7 @@ AC_CACHE_VAL(mysql_cv_can_redecl_getpw,
extern struct passwd *getpwent();], [struct passwd *z; z = getpwent();],
mysql_cv_can_redecl_getpw=yes,mysql_cv_can_redecl_getpw=no)])
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)
fi
])
@ -458,7 +465,7 @@ AC_CACHE_VAL(mysql_cv_tiocgwinsz_in_ioctl,
#include <sys/ioctl.h>], [int x = TIOCGWINSZ;],
mysql_cv_tiocgwinsz_in_ioctl=yes,mysql_cv_tiocgwinsz_in_ioctl=no)])
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)
fi
])
@ -470,7 +477,7 @@ AC_CACHE_VAL(mysql_cv_fionread_in_ioctl,
#include <sys/ioctl.h>], [int x = FIONREAD;],
mysql_cv_fionread_in_ioctl=yes,mysql_cv_fionread_in_ioctl=no)])
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)
fi
])
@ -482,7 +489,7 @@ AC_CACHE_VAL(mysql_cv_tiocstat_in_ioctl,
#include <sys/ioctl.h>], [int x = TIOCSTAT;],
mysql_cv_tiocstat_in_ioctl=yes,mysql_cv_tiocstat_in_ioctl=no)])
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)
fi
])
@ -515,7 +522,7 @@ AC_CACHE_VAL(mysql_cv_dirent_has_dino,
struct dirent d; int z; z = d.d_ino;
], mysql_cv_dirent_has_dino=yes, mysql_cv_dirent_has_dino=no)])
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)
fi
])
@ -534,7 +541,7 @@ extern "C"
void (*signal ()) ();],
[int i;], mysql_cv_void_sighandler=yes, mysql_cv_void_sighandler=no)])dnl
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)
fi
])
@ -593,7 +600,7 @@ then
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_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
AC_DEFINE(HAVE_ALLOCA)
fi
@ -617,11 +624,11 @@ then
#endif
], [char *p = (char *) alloca(1);],
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)
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
# that cause trouble. Some versions do not even contain alloca or
# contain a buggy version. If you still want to use their alloca,
@ -637,7 +644,7 @@ then
wenotbecray
#endif
], 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
AC_CHECK_FUNC($ac_func, [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func)
break])
@ -742,26 +749,52 @@ AC_DEFUN(MYSQL_CHECK_VIO, [
])
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/local/ssl/include /usr/local/include ; do
if test -f $d/openssl/ssl.h ; then
OPENSSL_INCLUDE=$d
if test -f $d/openssl/ssl.h ; then
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
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
echo "Could not find an installation of OpenSSL"
if test -n "$OPENSSL_LIB" ; 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
exit 1
@ -776,11 +809,23 @@ AC_MSG_CHECKING(for OpenSSL)
[openssl="$withval"],
[openssl=no])
openssl_libs=""
openssl_includes=""
AC_ARG_WITH([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"
then
MYSQL_FIND_OPENSSL
MYSQL_FIND_OPENSSL([$openssl_includes], [$openssl_libs])
#force VIO use
vio_dir="vio"
vio_libs="../vio/libvio.la"
@ -789,9 +834,14 @@ AC_MSG_CHECKING(for OpenSSL)
openssl_libs="-L$OPENSSL_LIB -lssl -lcrypto"
# Don't set openssl_includes to /usr/include as this gives us a lot of
# compiler warnings when using gcc 3.x
if test "$OPENSSL_INCLUDE" != "/usr/include"
openssl_includes=""
if test "$OPENSSL_INCLUDE" != "-I/usr/include"
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
AC_DEFINE(HAVE_OPENSSL)
@ -802,7 +852,7 @@ AC_MSG_CHECKING(for OpenSSL)
case "$CLIENT_EXTRA_LDFLAGS $MYSQLD_EXTRA_LDFLAGS" in
*-all-static*) using_static="yes" ;;
esac
if test $using_static = "yes"
if test "$using_static" = "yes"
then
echo "You can't use the --all-static link option when using openssl."
exit 1

View File

@ -70,7 +70,7 @@ char *get_tty_password(char *opt_message)
char *pos=to,*end=to+sizeof(to)-1;
int i=0;
DBUG_ENTER("get_tty_password");
fprintf(stderr,opt_message ? opt_message : "Enter password: ");
_cputs(opt_message ? opt_message : "Enter password: ");
for (;;)
{
char tmp;

View File

@ -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,
vertical=0, line_numbers=1, column_names=1,opt_html=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 my_string opt_mysql_unix_port=0;
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);
charsets_dir = mysql_charsets_dir;
break;
case OPT_DEFAULT_CHARSET:
default_charset_used= 1;
break;
case OPT_DELIMITER:
if (argument == disabled_my_option)
strmov(delimiter, DEFAULT_DELIMITER);
@ -2563,7 +2567,8 @@ sql_real_connect(char *host,char *database,char *user,char *password,
select_limit,max_join_size);
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,
database, opt_mysql_port, opt_mysql_unix_port,
connect_flag | CLIENT_MULTI_QUERIES))
@ -2645,7 +2650,8 @@ com_status(String *buffer __attribute__((unused)),
(void) mysql_fetch_row(result); // Read eof
}
#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",
SSL_get_cipher(mysql.net.vio->ssl_));
else
@ -2924,12 +2930,11 @@ static void mysql_end_timer(ulong start_time,char *buff)
static const char* construct_prompt()
{
//erase the old prompt
processed_prompt.free();
//get the date struct
time_t lclock = time(NULL);
processed_prompt.free(); // Erase the old prompt
time_t lclock = time(NULL); // Get the date struct
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++)
{
if (*c != PROMPT_CHAR)
@ -2938,8 +2943,7 @@ static const char* construct_prompt()
{
switch (*++c) {
case '\0':
//stop it from going beyond if ends with %
c--;
c--; // stop it from going beyond if ends with %
break;
case 'c':
add_int_to_prompt(++prompt_counter);

View File

@ -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
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 const char* host = "localhost";
static int port = MYSQL_PORT;
static const char* sock= MYSQL_UNIX_ADDR;
static const char* user = "test";
static const char* pass = "";
static ulonglong position = 0;
static bool use_remote = 0;
static short binlog_flags = 0;
static MYSQL* mysql = NULL;
static const char* table = 0;
static const char* dirname_for_local_load= 0;
static void dump_local_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_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 MYSQL* safe_connect();
@ -224,8 +222,9 @@ static struct my_option my_long_options[] =
{"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,
0, 0},
{"table", 't', "Get raw table dump using COM_TABLE_DUMB.", (gptr*) &table,
(gptr*) &table, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"socket", 'S', "Socket file to use for connection.",
(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.",
(gptr*) &user, (gptr*) &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0,
0, 0},
@ -369,7 +368,7 @@ static MYSQL* safe_connect()
if(!local_mysql)
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));
return local_mysql;
@ -383,35 +382,6 @@ static void dump_log_entries(const char* 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)
{
MYSQL_RES* res = 0;
@ -491,7 +461,7 @@ static void dump_remote_log_entries(const char* logname)
len = net_safe_read(mysql);
if (len == packet_error)
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
DBUG_PRINT("info",( "len= %u, net->read_pos[5] = %d\n",
len, net->read_pos[5]));
@ -527,8 +497,8 @@ static int check_header(IO_CACHE* file)
if (buf[4] == START_EVENT)
{
uint event_len;
event_len = uint4korr(buf + 4);
old_format = (event_len < LOG_EVENT_HEADER_LEN + START_HEADER_LEN);
event_len = uint4korr(buf + EVENT_LEN_OFFSET);
old_format = (event_len < (LOG_EVENT_HEADER_LEN + START_HEADER_LEN));
}
}
my_b_seek(file, pos);
@ -673,7 +643,7 @@ int main(int argc, char** argv)
MY_INIT(argv[0]);
parse_args(&argc, (char***)&argv);
if (!argc && !table)
if (!argc)
{
usage();
return -1;
@ -696,22 +666,8 @@ int main(int argc, char** argv)
else
load_processor.init_by_cur_dir();
if (table)
{
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++));
}
while (--argc >= 0)
dump_log_entries(*(argv++));
if (tmpdir.list)
free_tmpdir(&tmpdir);
if (result_file != stdout)

View File

@ -722,8 +722,8 @@ int do_wait_for_slave_to_stop(struct st_query* q __attribute__((unused)))
int done;
LINT_INIT(res);
if (mysql_query(mysql,"show status like 'Slave_running'")
|| !(res=mysql_store_result(mysql)))
if (mysql_query(mysql,"show status like 'Slave_running'") ||
!(res=mysql_store_result(mysql)))
die("Query failed while probing slave for stop: %s",
mysql_error(mysql));
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)))
die("line %u: empty result in %s", start_lineno, query_buf);
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);
last_result=0;
if (rpl_parse)
@ -2182,19 +2183,21 @@ int run_query(MYSQL* mysql, struct st_query* q, int flags)
goto end; /* Ok */
}
}
if (i)
{
replace_dynstr_append_mem(ds, mysql_error(mysql),
strlen(mysql_error(mysql)));
dynstr_append_mem(ds,"\n",1);
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;
}
replace_dynstr_append_mem(ds,mysql_error(mysql),
DBUG_PRINT("info",("i: %d expected_errors: %d", i, q->expected_errors));
dynstr_append_mem(ds,"ERROR ",6);
replace_dynstr_append_mem(ds, mysql_sqlstate(mysql),
strlen(mysql_sqlstate(mysql)));
dynstr_append_mem(ds,": ",2);
replace_dynstr_append_mem(ds, mysql_error(mysql),
strlen(mysql_error(mysql)));
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),
mysql_error(mysql));
/*
@ -2607,7 +2610,8 @@ int main(int argc, char **argv)
}
dynstr_free(&ds_res);
if (!silent) {
if (!silent)
{
if (error)
printf("not ok\n");
else

View File

@ -755,7 +755,7 @@ AC_CHECK_LIB(crypt, crypt)
AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT))
# 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
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.]);
fi
AC_MSG_RESULT("yes")
# Hack for SCO UnixWare 7.1
# Hack for SCO UnixWare 7.1.x
#
elif test "$with_named_thread" = "no"
then
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
then
if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so
@ -1308,11 +1308,11 @@ then
AC_MSG_CHECKING("for gcc")
if expr "$CC" : ".*gcc.*"
then
CC="$CC -pthread -DUNIXWARE_7";
CXX="$CXX -pthread -DUNIXWARE_7";
CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
else
CC="$CC -Kthread -DUNIXWARE_7";
CXX="$CXX -Kthread -DUNIXWARE_7";
CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
fi
else
{ 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")
if expr "$CC" : ".*gcc.*"
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
CC="$CC -Kthread -DUNIXWARE_7";
CXX="$CXX -Kthread -DUNIXWARE_7";
CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
fi
AC_MSG_RESULT("yes")
else
@ -1383,7 +1384,8 @@ then
AC_MSG_CHECKING("for gcc")
if expr "$CC" : ".*gcc.*"
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
CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";

View File

@ -111,7 +111,7 @@ static void usage(void)
{
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");
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("Usage: %s [OPTIONS] [ERRORCODE [ERRORCODE...]]\n",my_progname);
my_print_help(my_long_options);

View File

@ -50,6 +50,7 @@ int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
length+= keyinfo->seg[j].length;
if (keyinfo->seg[j].null_bit)
{
length++;
if (!(keyinfo->flag & HA_NULL_ARE_EQUAL))
keyinfo->flag|= HA_NULL_PART_KEY;
if (keyinfo->algorithm == HA_KEY_ALG_BTREE)

View File

@ -253,7 +253,6 @@ inline double ulonglong2double(ulonglong value)
#define HAVE_PERROR
#define HAVE_VFPRINT
#define HAVE_CHSIZE /* System has chsize() function */
#define HAVE_RENAME /* Have rename() as function */
#define HAVE_BINARY_STREAMS /* Have "b" flag in streams */
#define HAVE_LONG_JMP /* Have long jump function */

View File

@ -79,7 +79,7 @@ enum my_lex_states
{
MY_LEX_START, MY_LEX_CHAR, MY_LEX_IDENT,
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_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,

View File

@ -257,7 +257,8 @@ enum ha_base_keytype {
#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_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 */

View File

@ -43,6 +43,10 @@
#define HAVE_ERRNO_AS_DEFINE
#endif /* __CYGWIN__ */
#if defined(i386) && !defined(__i386__)
#define __i386__
#endif
/* Macros to make switching between C and C++ mode easier */
#ifdef __cplusplus
#define C_MODE_START extern "C" {
@ -283,7 +287,9 @@ C_MODE_END
#endif
#ifdef HAVE_ATOMIC_ADD
#define __SMP__
#ifndef CONFIG_SMP
#define CONFIG_SMP
#endif
#include <asm/atomic.h>
#endif
#include <errno.h> /* Recommended by debian */
@ -660,7 +666,6 @@ typedef long my_ptrdiff_t;
typedef long long my_ptrdiff_t;
#endif
#define MY_ALIGN(A,L) (((A) + (L) - 1) & ~((L) - 1))
#define ALIGN_SIZE(A) MY_ALIGN((A),sizeof(double))
/* Size to make adressable obj. */
@ -737,9 +742,6 @@ typedef unsigned __int64 my_ulonglong;
typedef unsigned long long my_ulonglong;
#endif
/* typedef used for length of string; Should be unsigned! */
typedef ulong size_str;
#ifdef USE_RAID
/*
The following is done with a if to not get problems with pre-processors
@ -920,8 +922,11 @@ typedef union {
double v;
long m[2];
} doubleget_union;
#define doubleget(V,M) { ((doubleget_union *)&V)->m[0] = *((long*) M); \
((doubleget_union *)&V)->m[1] = *(((long*) M)+1); }
#define doubleget(V,M) \
{ 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]; \
*(((long *) T)+1) = ((doubleget_union *)&V)->m[1]; }
#define float4get(V,M) { *((long *) &(V)) = *((long*) (M)); }

View File

@ -135,7 +135,7 @@ extern int NEAR my_errno; /* Last error in mysys */
#define QUICK_SAFEMALLOC sf_malloc_quick=1
#define NORMAL_SAFEMALLOC sf_malloc_quick=0
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 , __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_dont_interrupt; /* call remember_intr when set */
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 my_bool NEAR my_disable_locking,NEAR my_disable_async_io,

View File

@ -253,8 +253,8 @@ unsigned long my_net_read(NET *net);
Currently it's used internally by manager.c
*/
struct sockaddr;
my_bool my_connect(my_socket s, const struct sockaddr *name,
unsigned int namelen, unsigned int timeout);
int my_connect(my_socket s, const struct sockaddr *name, unsigned int namelen,
unsigned int timeout);
struct rand_struct {
unsigned long seed1,seed2,max_value;

View File

@ -253,39 +253,40 @@
#define ER_CANT_USE_OPTION_HERE 1234
#define ER_NOT_SUPPORTED_YET 1235
#define ER_MASTER_FATAL_ERROR_READING_BINLOG 1236
#define ER_WRONG_FK_DEF 1237
#define ER_KEY_REF_DO_NOT_MATCH_TABLE_REF 1238
#define ER_CARDINALITY_COL 1239
#define ER_SUBSELECT_NO_1_ROW 1240
#define ER_UNKNOWN_STMT_HANDLER 1241
#define ER_CORRUPT_HELP_DB 1242
#define ER_CYCLIC_REFERENCE 1243
#define ER_AUTO_CONVERT 1244
#define ER_ILLEGAL_REFERENCE 1245
#define ER_DERIVED_MUST_HAVE_ALIAS 1246
#define ER_SELECT_REDUCED 1247
#define ER_TABLENAME_NOT_ALLOWED_HERE 1248
#define ER_NOT_SUPPORTED_AUTH_MODE 1249
#define ER_SPATIAL_CANT_HAVE_NULL 1250
#define ER_COLLATION_CHARSET_MISMATCH 1251
#define ER_SLAVE_WAS_RUNNING 1252
#define ER_SLAVE_WAS_NOT_RUNNING 1253
#define ER_TOO_BIG_FOR_UNCOMPRESS 1254
#define ER_ZLIB_Z_MEM_ERROR 1255
#define ER_ZLIB_Z_BUF_ERROR 1256
#define ER_ZLIB_Z_DATA_ERROR 1257
#define ER_CUT_VALUE_GROUP_CONCAT 1258
#define ER_WARN_TOO_FEW_RECORDS 1259
#define ER_WARN_TOO_MANY_RECORDS 1260
#define ER_WARN_NULL_TO_NOTNULL 1261
#define ER_WARN_DATA_OUT_OF_RANGE 1262
#define ER_WARN_DATA_TRUNCATED 1263
#define ER_WARN_USING_OTHER_HANDLER 1264
#define ER_CANT_AGGREGATE_2COLLATIONS 1265
#define ER_DROP_USER 1266
#define ER_REVOKE_GRANTS 1267
#define ER_CANT_AGGREGATE_3COLLATIONS 1268
#define ER_CANT_AGGREGATE_NCOLLATIONS 1269
#define ER_VARIABLE_IS_NOT_STRUCT 1270
#define ER_UNKNOWN_COLLATION 1271
#define ER_ERROR_MESSAGES 272
#define ER_SLAVE_IGNORED_TABLE 1237
#define ER_WRONG_FK_DEF 1238
#define ER_KEY_REF_DO_NOT_MATCH_TABLE_REF 1239
#define ER_CARDINALITY_COL 1240
#define ER_SUBSELECT_NO_1_ROW 1241
#define ER_UNKNOWN_STMT_HANDLER 1242
#define ER_CORRUPT_HELP_DB 1243
#define ER_CYCLIC_REFERENCE 1244
#define ER_AUTO_CONVERT 1245
#define ER_ILLEGAL_REFERENCE 1246
#define ER_DERIVED_MUST_HAVE_ALIAS 1247
#define ER_SELECT_REDUCED 1248
#define ER_TABLENAME_NOT_ALLOWED_HERE 1249
#define ER_NOT_SUPPORTED_AUTH_MODE 1250
#define ER_SPATIAL_CANT_HAVE_NULL 1251
#define ER_COLLATION_CHARSET_MISMATCH 1252
#define ER_SLAVE_WAS_RUNNING 1253
#define ER_SLAVE_WAS_NOT_RUNNING 1254
#define ER_TOO_BIG_FOR_UNCOMPRESS 1255
#define ER_ZLIB_Z_MEM_ERROR 1256
#define ER_ZLIB_Z_BUF_ERROR 1257
#define ER_ZLIB_Z_DATA_ERROR 1258
#define ER_CUT_VALUE_GROUP_CONCAT 1259
#define ER_WARN_TOO_FEW_RECORDS 1260
#define ER_WARN_TOO_MANY_RECORDS 1261
#define ER_WARN_NULL_TO_NOTNULL 1262
#define ER_WARN_DATA_OUT_OF_RANGE 1263
#define ER_WARN_DATA_TRUNCATED 1264
#define ER_WARN_USING_OTHER_HANDLER 1265
#define ER_CANT_AGGREGATE_2COLLATIONS 1266
#define ER_DROP_USER 1267
#define ER_REVOKE_GRANTS 1268
#define ER_CANT_AGGREGATE_3COLLATIONS 1269
#define ER_CANT_AGGREGATE_NCOLLATIONS 1270
#define ER_VARIABLE_IS_NOT_STRUCT 1271
#define ER_UNKNOWN_COLLATION 1272
#define ER_ERROR_MESSAGES 273

View File

@ -822,9 +822,16 @@ btr_page_reorganize_low(
{
page_t* new_page;
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),
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 */
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);
}
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);
/* Restore logging mode */
@ -1945,11 +1965,20 @@ btr_compress(
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_get_max_insert_size(merge_page, n_recs)
== 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);
/* Remove the page from the level list */

View File

@ -1110,6 +1110,10 @@ btr_cur_pessimistic_insert(
if (big_rec_vec == NULL) {
if (n_extents > 0) {
fil_space_release_free_extents(index->space,
n_extents);
}
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
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
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,
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
btr_cur_optimistic_update(
@ -1510,10 +1516,11 @@ btr_cur_optimistic_update(
ut_ad(mtr_memo_contains(mtr, buf_block_align(page),
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
change the size of any field */
/* The simplest and the most common case: the update does not
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,
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);
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);
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),
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
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
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
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);
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)) {
row_upd_index_entry_sys_field(new_entry, index, DATA_ROLL_PTR,
@ -1825,21 +1791,6 @@ btr_cur_pessimistic_update(
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) {
/* We are in a transaction rollback undoing a row
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));
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) >=
page_get_free_space_of_empty() / 2)
|| (rec_get_converted_size(new_entry) >= REC_MAX_DATA_SIZE)) {
@ -1874,10 +1821,31 @@ btr_cur_pessimistic_update(
mem_heap_free(heap);
err = DB_TOO_BIG_RECORD;
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,
&dummy_reorganized, mtr);
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
+ 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
+ BTR_EXTERN_LEN + 4);

View File

@ -381,6 +381,8 @@ btr_pcur_move_to_next_page(
btr_leaf_page_release(page, cursor->latch_mode, mtr);
page_cur_set_before_first(next_page, btr_pcur_get_page_cur(cursor));
page_check_dir(next_page);
}
/*************************************************************

View File

@ -34,6 +34,7 @@ Created 11/5/1995 Heikki Tuuri
#include "ibuf0ibuf.h"
#include "dict0dict.h"
#include "log0recv.h"
#include "log0log.h"
#include "trx0undo.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
to a file. Note that we must be careful to calculate the same value
on 32-bit and 64-bit architectures. */
to a file. Note that we must be careful to calculate the same value on
32-bit and 64-bit architectures. */
ulint
buf_calc_page_checksum(
/*===================*/
buf_calc_page_new_checksum(
/*=======================*/
/* out: checksum */
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
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);
+ ut_fold_binary(page + FIL_PAGE_DATA,
UNIV_PAGE_SIZE - FIL_PAGE_DATA
- FIL_PAGE_END_LSN);
checksum = checksum & 0xFFFFFFFF;
return(checksum);
@ -265,27 +293,69 @@ buf_page_is_corrupted(
byte* read_buf) /* in: a database page */
{
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);
}
#ifndef UNIV_HOTBACKUP
if (recv_lsn_checks_on && log_peek_lsn(&current_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);
}
@ -299,6 +369,7 @@ buf_page_print(
{
dict_index_t* index;
ulint checksum;
ulint old_checksum;
char* buf;
buf = mem_alloc(4 * UNIV_PAGE_SIZE);
@ -313,19 +384,23 @@ buf_page_print(
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);
fprintf(stderr, " InnoDB: Page checksum %lu stored checksum %lu\n",
checksum, mach_read_from_4(read_buf
+ UNIV_PAGE_SIZE
- FIL_PAGE_END_LSN));
fprintf(stderr,
" InnoDB: Page checksum %lu, prior-to-4.0.14-form checksum %lu\n"
"InnoDB: stored checksum %lu, prior-to-4.0.14-form stored checksum %lu\n",
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,
"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 + 4),
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)
== TRX_UNDO_INSERT) {
fprintf(stderr,

View File

@ -361,21 +361,29 @@ buf_flush_init_for_writing(
ulint space, /* in: space id */
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 + 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);
/* We overwrite the first 4 bytes of the end lsn field to store
a page checksum */
/* Store the new formula checksum */
mach_write_to_4(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN,
buf_calc_page_checksum(page));
mach_write_to_4(page + FIL_PAGE_SPACE_OR_CHKSUM,
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));
}
/************************************************************************

View File

@ -584,8 +584,7 @@ dtuple_convert_big_rec(
* sizeof(big_rec_field_t));
/* Decide which fields to shorten: the algorithm is to look for
the longest field which does not occur in the ordering part
of any index on the table */
the longest field whose type is DATA_BLOB */
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_field_get_col(
dict_index_get_nth_field(index, i))
->ord_part == 0) {
if (!is_externally_stored
&& dict_index_get_nth_type(index, i)->mtype
== DATA_BLOB) {
dfield = dtuple_get_nth_field(entry, i);
@ -629,9 +625,13 @@ dtuple_convert_big_rec(
}
}
if (longest < BTR_EXTERN_FIELD_REF_SIZE + 10
+ REC_1BYTE_OFFS_LIMIT) {
/* We do not store externally fields which are smaller than
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 */
mem_heap_free(heap);
@ -644,13 +644,19 @@ dtuple_convert_big_rec(
drop below 128 which is the limit for the 2-byte
offset storage format in a physical record. This
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);
vector->fields[n_fields].field_no = longest_i;
ut_a(dfield->len > DICT_MAX_COL_PREFIX_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].len);

View File

@ -85,8 +85,6 @@ dtype_print(
printf("DATA_MIX_ID");
} else if (prtype == DATA_ENGLISH) {
printf("DATA_ENGLISH");
} else if (prtype == DATA_FINNISH) {
printf("DATA_FINNISH");
} else {
printf("prtype %lu", mtype);
}

View File

@ -276,7 +276,7 @@ dict_boot(void)
DICT_HDR_SPACE,
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,
MLOG_4BYTES, &mtr);
@ -287,7 +287,7 @@ dict_boot(void)
index = dict_mem_index_create((char *) "SYS_TABLES",
(char *) "ID_IND", DICT_HDR_SPACE,
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,
MLOG_4BYTES, &mtr);
@ -313,8 +313,8 @@ dict_boot(void)
(char *) "CLUST_IND", DICT_HDR_SPACE,
DICT_UNIQUE | DICT_CLUSTERED, 2);
dict_mem_index_add_field(index, (char *) "TABLE_ID", 0);
dict_mem_index_add_field(index, (char *) "POS", 0);
dict_mem_index_add_field(index, (char *) "TABLE_ID", 0, 0);
dict_mem_index_add_field(index, (char *) "POS", 0, 0);
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_COLUMNS,
MLOG_4BYTES, &mtr);
@ -343,8 +343,8 @@ dict_boot(void)
(char *) "CLUST_IND", DICT_HDR_SPACE,
DICT_UNIQUE | DICT_CLUSTERED, 2);
dict_mem_index_add_field(index, (char *) "TABLE_ID", 0);
dict_mem_index_add_field(index, (char *) "ID", 0);
dict_mem_index_add_field(index, (char *) "TABLE_ID", 0, 0);
dict_mem_index_add_field(index, (char *) "ID", 0, 0);
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_INDEXES,
MLOG_4BYTES, &mtr);
@ -365,8 +365,8 @@ dict_boot(void)
(char *) "CLUST_IND", DICT_HDR_SPACE,
DICT_UNIQUE | DICT_CLUSTERED, 2);
dict_mem_index_add_field(index, (char *) "INDEX_ID", 0);
dict_mem_index_add_field(index, (char *) "POS", 0);
dict_mem_index_add_field(index, (char *) "INDEX_ID", 0, 0);
dict_mem_index_add_field(index, (char *) "POS", 0, 0);
index->page_no = mtr_read_ulint(dict_hdr + DICT_HDR_FIELDS,
MLOG_4BYTES, &mtr);

View File

@ -337,7 +337,7 @@ dict_create_index_for_cluster_step(
for (i = 0; i < table->n_cols; 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;
@ -450,9 +450,17 @@ dict_create_sys_fields_tuple(
dict_field_t* field;
dfield_t* dfield;
byte* ptr;
ibool index_contains_column_prefix_field = FALSE;
ulint j;
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);
sys_fields = dict_sys->sys_fields;
@ -466,11 +474,25 @@ dict_create_sys_fields_tuple(
mach_write_to_8(ptr, index->id);
dfield_set_data(dfield, ptr, 8);
/* 1: POS ----------------------------*/
/* 1: POS + PREFIX LENGTH ----------------------------*/
dfield = dtuple_get_nth_field(entry, 1);
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);
/* 4: COL_NAME -------------------------*/

View File

@ -88,15 +88,6 @@ dict_index_remove_from_cache(
dict_table_t* table, /* in: table */
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. */
static
void
@ -482,8 +473,9 @@ dict_index_get_nth_col_pos(
ut_ad(index);
ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
col = dict_table_get_nth_col(index->table, n);
if (index->type & DICT_CLUSTERED) {
col = dict_table_get_nth_col(index->table, n);
return(col->clust_pos);
}
@ -492,9 +484,8 @@ dict_index_get_nth_col_pos(
for (pos = 0; pos < n_fields; 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);
}
@ -502,7 +493,86 @@ dict_index_get_nth_col_pos(
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. */
@ -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_get_and_increment_handle_count(
@ -732,11 +801,12 @@ dict_table_add_to_cache(
}
/* 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 */
HASH_INSERT(dict_table_t, id_hash, dict_sys->table_id_hash, id_fold,
table);
table);
/* Add table to LRU list of tables */
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 */
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);
@ -837,7 +907,8 @@ dict_table_rename_in_cache(
table->name = name_buf;
/* 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);
@ -1128,7 +1199,6 @@ dict_index_add_to_cache(
ulint n_ord;
ibool success;
ulint i;
ulint j;
ut_ad(index);
ut_ad(mutex_own(&(dict_sys->mutex)));
@ -1158,28 +1228,6 @@ dict_index_add_to_cache(
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,
containing also the added system fields */
@ -1223,8 +1271,8 @@ dict_index_add_to_cache(
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->page_no = tree->page;
} else {
@ -1352,13 +1400,14 @@ UNIV_INLINE
void
dict_index_add_col(
/*===============*/
dict_index_t* index, /* in: index */
dict_col_t* col, /* in: column */
ulint order) /* in: order criterion */
dict_index_t* index, /* in: index */
dict_col_t* col, /* in: column */
ulint order, /* in: order criterion */
ulint prefix_len) /* in: column prefix length */
{
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);
@ -1384,7 +1433,8 @@ dict_index_copy(
for (i = start; i < end; 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 */
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 */
dict_index_copy(new_index, index, table->mix_len,
@ -1525,14 +1575,15 @@ dict_index_build_internal_clust(
if (!(index->type & DICT_UNIQUE)) {
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++;
}
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_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++) {
@ -1561,7 +1612,14 @@ dict_index_build_internal_clust(
for (i = 0; i < new_index->n_def; 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
@ -1572,7 +1630,7 @@ dict_index_build_internal_clust(
ut_ad(col->type.mtype != DATA_SYS);
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++) {
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;
@ -1646,25 +1708,33 @@ dict_index_build_internal_non_clust(
for (i = 0; i < clust_index->n_uniq; 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 */
for (i = 0; i < new_index->n_def; 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 */
for (i = 0; i < clust_index->n_uniq; i++) {
field = dict_index_get_nth_field(clust_index, i);
if ((field->col)->aux == ULINT_UNDEFINED) {
dict_index_add_col(new_index, field->col, 0);
if (field->col->aux == ULINT_UNDEFINED) {
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++) {
col_name = dict_index_get_nth_field(index, i)
->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]) !=
ut_strlen(col_name)
|| 0 != ut_cmp_in_lower_case(columns[i],
@ -2327,9 +2405,12 @@ dict_strip_comments(
ptr = str;
for (;;) {
scan_more:
if (*sptr == '\0') {
*ptr = '\0';
ut_a(ptr <= str + strlen(sql_string));
return(str);
}
@ -2343,7 +2424,7 @@ dict_strip_comments(
|| *sptr == (char)0x0D
|| *sptr == '\0') {
break;
goto scan_more;
}
sptr++;
@ -2357,12 +2438,12 @@ dict_strip_comments(
sptr += 2;
break;
goto scan_more;
}
if (*sptr == '\0') {
break;
goto scan_more;
}
sptr++;
@ -3776,6 +3857,10 @@ dict_field_print_low(
ut_ad(mutex_own(&(dict_sys->mutex)));
printf(" %s", field->name);
if (field->prefix_len != 0) {
printf("(%lu)", field->prefix_len);
}
}
/**************************************************************************

View File

@ -301,6 +301,8 @@ dict_load_fields(
dtuple_t* tuple;
dfield_t* dfield;
char* col_name;
ulint pos_and_prefix_len;
ulint prefix_len;
rec_t* rec;
byte* field;
ulint len;
@ -345,8 +347,28 @@ dict_load_fields(
ut_a(ut_memcmp(buf, field, len) == 0);
field = rec_get_nth_field(rec, 1, &len);
ut_ad(len == 4);
ut_a(i == mach_read_from_4(field));
ut_a(len == 4);
/* 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",
dict_field_get_col(
@ -359,7 +381,7 @@ dict_load_fields(
ut_memcpy(col_name, field, len);
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);
}

View File

@ -266,10 +266,13 @@ by the column name may be released only after publishing the index. */
void
dict_mem_index_add_field(
/*=====================*/
dict_index_t* index, /* in: index */
char* name, /* in: column name */
ulint order) /* in: order criterion; 0 means an ascending
order */
dict_index_t* index, /* in: index */
char* name, /* in: column name */
ulint order, /* in: order criterion; 0 means an
ascending order */
ulint prefix_len) /* in: 0 or the column prefix length
in a MySQL index like
INDEX (textcol(25)) */
{
dict_field_t* field;
@ -282,6 +285,8 @@ dict_mem_index_add_field(
field->name = name;
field->order = order;
field->prefix_len = prefix_len;
}
/**************************************************************************

View File

@ -632,7 +632,7 @@ fil_space_create(
/* Spaces with an odd id number are reserved to replicate spaces
used in log debugging */
ut_a((purpose == FIL_LOG) || (id % 2 == 0));
ut_anp((purpose == FIL_LOG) || (id % 2 == 0));
#endif
mutex_enter(&(system->mutex));
@ -831,6 +831,34 @@ fil_space_release_free_extents(
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
pending i/o's field in the node and the system appropriately. Takes the node
@ -1202,8 +1230,8 @@ loop:
/* Do aio */
ut_a(byte_offset % OS_FILE_LOG_BLOCK_SIZE == 0);
ut_a((len % OS_FILE_LOG_BLOCK_SIZE) == 0);
ut_anp(byte_offset % OS_FILE_LOG_BLOCK_SIZE == 0);
ut_anp((len % OS_FILE_LOG_BLOCK_SIZE) == 0);
/* Queue the aio request */
ret = os_aio(type, mode | wake_later, node->name, node->handle, buf,

View File

@ -778,7 +778,7 @@ fsp_init_file_page_low(
page[i] = 0xFF;
}
#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);
mach_write_to_8(page + FIL_PAGE_LSN, ut_dulint_zero);
}
@ -2709,10 +2709,52 @@ fseg_free_page_low(
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 */
ut_a(0 == ut_dulint_cmp(
if (0 != ut_dulint_cmp(
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,
MLOG_4BYTES, mtr);
@ -2875,7 +2917,7 @@ fseg_free_step(
freed yet */
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);
inode = fseg_inode_get(header, mtr);

View File

@ -293,11 +293,13 @@ ha_print_info(
hash_table_t* table) /* in: hash table */
{
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 len = 0; */
/* ulint max_len = 0; */
ulint n_bufs;
ulint i;

View File

@ -170,7 +170,7 @@ dropped! So, there seems to be no problem. */
/**********************************************************************
Validates the ibuf data structures when the caller owns ibuf_mutex. */
static
ibool
ibuf_validate_low(void);
/*===================*/
@ -484,8 +484,8 @@ ibuf_data_init_for_space(
index = dict_mem_index_create(buf, (char *) "CLUST_IND", space,
DICT_CLUSTERED | DICT_UNIVERSAL | DICT_IBUF,2);
dict_mem_index_add_field(index, (char *) "PAGE_NO", 0);
dict_mem_index_add_field(index, (char *) "TYPES", 0);
dict_mem_index_add_field(index, (char *) "PAGE_NO", 0, 0);
dict_mem_index_add_field(index, (char *) "TYPES", 0, 0);
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. */
static
ibool
ibuf_validate_low(void)
/*===================*/

View File

@ -690,7 +690,13 @@ and sleep this many microseconds in between */
#define BTR_CUR_RETRY_DELETE_N_TIMES 100
#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_PAGE_NO 4 /* page no where stored */

View File

@ -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. */
ulint
buf_calc_page_checksum(
/*===================*/
buf_calc_page_new_checksum(
/*=======================*/
/* out: checksum */
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. */
ibool

View File

@ -453,8 +453,6 @@ struct dfield_struct{
void* data; /* pointer to data */
ulint len; /* data length; UNIV_SQL_NULL if SQL null; */
dtype_t type; /* type of data */
ulint col_no; /* when building index entries, the column
number can be stored here */
};
struct dtuple_struct {

View File

@ -18,14 +18,16 @@ typedef struct dtype_struct dtype_t;
data type */
extern dtype_t* dtype_binary;
/* Data main types of SQL data; NOTE! character data types requiring
collation transformation must have the smallest codes! All codes must be
less than 256! */
/* Data main types of SQL data */
#define DATA_VARCHAR 1 /* character varying */
#define DATA_CHAR 2 /* fixed length character */
#define DATA_FIXBINARY 3 /* binary string of fixed length */
#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_SYS_CHILD 7 /* address of the child page in node pointer */
#define DATA_SYS 8 /* system column */
@ -34,35 +36,55 @@ binary strings */
#define DATA_FLOAT 9
#define DATA_DOUBLE 10
#define DATA_DECIMAL 11 /* decimal number stored as an ASCII string */
#define DATA_VARMYSQL 12 /* data types for which comparisons must be */
#define DATA_MYSQL 13 /* made by MySQL */
#define DATA_ERROR 111 /* error value */
#define DATA_MTYPE_MAX 255
#define DATA_VARMYSQL 12 /* non-latin1 varying length char */
#define DATA_MYSQL 13 /* non-latin1 fixed length char */
#define DATA_MTYPE_MAX 63 /* dtype_store_for_order_and_null_size()
requires the values are <= 63 */
/*-------------------------------------------*/
/* Precise data types for system columns; NOTE: the values must run
from 0 up in the order given! All codes must be less than 256! */
/* In the lowest byte in the precise type we store the MySQL type code
(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_LEN 6 /* stored length for row id */
#define DATA_TRX_ID 1 /* transaction id: 6 bytes */
#define DATA_TRX_ID_LEN 6
#define DATA_ROLL_PTR 2 /* rollback data pointer: 7 bytes */
#define DATA_ROLL_PTR_LEN 7
#define DATA_MIX_ID 3 /* mixed index label: a dulint, stored in
a row in a compressed form */
#define DATA_MIX_ID_LEN 9 /* maximum stored length for mix id (in a
compressed dulint form) */
#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
the column is declared as NOT NULL */
#define DATA_UNSIGNED 512 /* this id ORed to the precise type when
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
alphabetical order for a single field and decide the storage size of an
SQL null*/
@ -123,7 +145,7 @@ dtype_get_pad_char(
/*===============*/
/* out: padding character code, or
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. */
UNIV_INLINE
@ -150,24 +172,24 @@ dtype_is_fixed_size(
/* out: TRUE if fixed size */
dtype_t* type); /* in: type */
/**************************************************************************
Stores to a type the information which determines its alphabetical
ordering. */
Stores for a type the information which determines its alphabetical ordering
and the storage size of an SQL NULL value. */
UNIV_INLINE
void
dtype_store_for_order_and_null_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 */
/**************************************************************************
Reads of a type the stored information which determines its alphabetical
ordering. */
Reads to a type the stored information which determines its alphabetical
ordering and the storage size of an SQL NULL value. */
UNIV_INLINE
void
dtype_read_for_order_and_null_size(
/*===============================*/
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. */

View File

@ -110,7 +110,9 @@ dtype_get_pad_char(
if (type->mtype == DATA_CHAR
|| type->mtype == DATA_VARCHAR
|| 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
strings */
@ -124,39 +126,56 @@ dtype_get_pad_char(
}
/**************************************************************************
Stores to a type the information which determines its alphabetical
ordering. */
Stores for a type the information which determines its alphabetical ordering
and the storage size of an SQL NULL value. */
UNIV_INLINE
void
dtype_store_for_order_and_null_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 */
{
ut_ad(4 == DATA_ORDER_NULL_TYPE_BUF_SIZE);
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);
mach_write_to_2(buf + 2, type->len & 0xFFFF);
}
/**************************************************************************
Reads of a type the stored information which determines its alphabetical
ordering. */
Reads to a type the stored information which determines its alphabetical
ordering and the storage size of an SQL NULL value. */
UNIV_INLINE
void
dtype_read_for_order_and_null_size(
/*===============================*/
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);
type->mtype = buf[0];
type->mtype = buf[0] & 63;
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);
}

View File

@ -44,8 +44,10 @@ Created 5/24/1996 Heikki Tuuri
#define DB_CORRUPTION 39 /* data structure corruption noticed */
#define DB_COL_APPEARS_TWICE_IN_INDEX 40 /* InnoDB cannot handle an index
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 */
#define DB_NO_SAVEPOINT 42 /* no savepoint exists with the given
name */
/* The following are partial failure codes */
#define DB_FAIL 1000

View File

@ -569,6 +569,29 @@ dict_index_get_nth_col_pos(
dict_index_t* index, /* in: index */
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. */
ulint

View File

@ -203,7 +203,6 @@ dict_index_get_n_fields(
{
ut_ad(index);
ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
ut_ad(index->cached);
return(index->n_fields);
}

View File

@ -111,10 +111,13 @@ by the column name may be released only after publishing the index. */
void
dict_mem_index_add_field(
/*=====================*/
dict_index_t* index, /* in: index */
char* name, /* in: column name */
ulint order); /* in: order criterion; 0 means an ascending
order */
dict_index_t* index, /* in: index */
char* name, /* in: column name */
ulint order, /* in: order criterion; 0 means an
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. */
@ -158,12 +161,18 @@ struct dict_col_struct{
in some of the functions below */
};
#define DICT_MAX_COL_PREFIX_LEN 512
/* Data structure for a field in an index */
struct dict_field_struct{
dict_col_t* col; /* pointer to the table column */
char* name; /* name of the column */
ulint order; /* flags for ordering this field:
DICT_DESCEND, ... */
dict_col_t* col; /* pointer to the table column */
char* name; /* name of the column */
ulint order; /* flags for ordering this field:
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 */

View File

@ -43,7 +43,10 @@ struct fil_addr_struct{
extern fil_addr_t fil_addr_null;
/* 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_PREV 8 /* if there is a 'natural' predecessor
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 */
/* 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
last 4 bytes should be identical
to the last 4 bytes of FIL_PAGE_LSN */
@ -383,6 +386,14 @@ fil_space_release_free_extents(
/*===========================*/
ulint id, /* in: space id */
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;

View File

@ -450,6 +450,18 @@ lock_rec_get_mutex_for_addr(
ulint space, /* in: space id */
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. */
ibool

View File

@ -173,6 +173,12 @@ log_write_up_to(
/* in: TRUE if we want the written log also to be
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
buffer pool and also may make a new checkpoint. NOTE: this function may only
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_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. */
@ -779,6 +794,11 @@ struct log_struct{
called */
/* 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;
/* when this recommended value for lsn
- buf_pool_get_oldest_modification()

View File

@ -333,6 +333,8 @@ extern ibool recv_recovery_on;
extern ibool recv_no_ibuf_operations;
extern ibool recv_needed_recovery;
extern ibool recv_lsn_checks_on;
extern ibool recv_is_making_a_backup;
extern ulint recv_max_parsed_page_no;

View File

@ -146,6 +146,21 @@ os_file_create_simple(
ulint access_type,/* in: OS_FILE_READ_ONLY or OS_FILE_READ_WRITE */
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. */
os_file_t
@ -160,7 +175,11 @@ os_file_create(
file is created (if exists, error), OS_FILE_OVERWRITE
if a new file is created or an old overwritten */
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 */
ibool* success);/* out: TRUE if succeed, FALSE if error */
/***************************************************************************
@ -173,6 +192,14 @@ os_file_close(
/* out: TRUE if success */
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. */
ibool

Some files were not shown because too many files have changed in this diff Show More