Commit e1303c7b authored by pem@mysql.com's avatar pem@mysql.com

Merge pmartin@work.mysql.com:/home/bk/mysql-4.0

into mysql.com:/home/pem/work/mysql-4.0
parents 8bd61c3f d50045ed
Administrador@light.
Administrator@co3064164-a. Administrator@co3064164-a.
Administrator@co3064164-a.rochd1.qld.optushome.com.au Administrator@co3064164-a.rochd1.qld.optushome.com.au
Administrator@fred. Administrator@fred.
...@@ -33,6 +34,7 @@ lenz@kallisto.mysql.com ...@@ -33,6 +34,7 @@ lenz@kallisto.mysql.com
lenz@mysql.com lenz@mysql.com
miguel@hegel.br miguel@hegel.br
miguel@hegel.local miguel@hegel.local
miguel@light.
miguel@light.local miguel@light.local
monty@bitch.mysql.fi monty@bitch.mysql.fi
monty@donna.mysql.fi monty@donna.mysql.fi
...@@ -47,10 +49,12 @@ monty@tramp.mysql.fi ...@@ -47,10 +49,12 @@ monty@tramp.mysql.fi
monty@work.mysql.com monty@work.mysql.com
mwagner@cash.mwagner.org mwagner@cash.mwagner.org
mwagner@evoq.mwagner.org mwagner@evoq.mwagner.org
mwagner@work.mysql.com
nick@mysql.com nick@mysql.com
nick@nick.leippe.com nick@nick.leippe.com
paul@central.snake.net paul@central.snake.net
paul@teton.kitebird.com paul@teton.kitebird.com
pem@mysql.com
peter@linux.local peter@linux.local
peter@mysql.com peter@mysql.com
ram@ram.(none) ram@ram.(none)
...@@ -62,6 +66,7 @@ serg@build.mysql2.com ...@@ -62,6 +66,7 @@ serg@build.mysql2.com
serg@serg.mysql.com serg@serg.mysql.com
serg@sergbook.mysql.com serg@sergbook.mysql.com
sinisa@rhols221.adsl.netsonic.fi sinisa@rhols221.adsl.netsonic.fi
tfr@beta.frontier86.ee
tfr@indrek.tfr.cafe.ee tfr@indrek.tfr.cafe.ee
tfr@sarvik.tfr.cafe.ee tfr@sarvik.tfr.cafe.ee
tim@bitch.mysql.fi tim@bitch.mysql.fi
...@@ -82,7 +87,3 @@ worm@altair.is.lan ...@@ -82,7 +87,3 @@ worm@altair.is.lan
zak@balfor.local zak@balfor.local
zak@linux.local zak@linux.local
zgreant@mysql.com zgreant@mysql.com
tfr@beta.frontier86.ee
Administrador@light.
mwagner@work.mysql.com
pem@mysql.com
...@@ -93,11 +93,11 @@ sub main ...@@ -93,11 +93,11 @@ sub main
$pec= $? >> 8; $pec= $? >> 8;
abort($dir, "Extracting from tar failed!\n") if ($pec); abort($dir, "Extracting from tar failed!\n") if ($pec);
# remove the 'PUBLIC' file from distribution and copy LICENSE # remove the 'PUBLIC' file from distribution and copy MySQLEULA.txt
# on the toplevel of the directory instead. file 'PUBLIC' shouldn't # on the toplevel of the directory instead. file 'PUBLIC' shouldn't
# exist in the new mysql distributions, but let's be sure.. # exist in the new mysql distributions, but let's be sure..
`rm -f $destdir/PUBLIC $destdir/README`; `rm -f $destdir/PUBLIC $destdir/README`;
`cp -p $WD/Docs/LICENSE $destdir/`; `cp -p $WD/Docs/MySQLEULA.txt $destdir/`;
# fix file copyrights # fix file copyrights
&fix_usage_copyright(); &fix_usage_copyright();
...@@ -129,7 +129,7 @@ sub fix_usage_copyright ...@@ -129,7 +129,7 @@ sub fix_usage_copyright
foreach my $Cfile (@Cfiles) foreach my $Cfile (@Cfiles)
{ {
chop $Cfile; chop $Cfile;
`replace "This is free software," "This is commercial software," "and you are welcome to modify and redistribute it under the GPL license" "please see the file LICENSE for details" -- $Cfile`; `replace "This is free software," "This is commercial software," "and you are welcome to modify and redistribute it under the GPL license" "please see the file MySQLEULA.txt for details" -- $Cfile`;
} }
} }
......
...@@ -15,10 +15,10 @@ Getopts("v") || die "Aborted"; ...@@ -15,10 +15,10 @@ Getopts("v") || die "Aborted";
"This software is distributed with NO WARRANTY OF ANY KIND. No author or", "This software is distributed with NO WARRANTY OF ANY KIND. No author or",
"distributor accepts any responsibility for the consequences of using it, or", "distributor accepts any responsibility for the consequences of using it, or",
"for whether it serves any particular purpose or works at all, unless he or", "for whether it serves any particular purpose or works at all, unless he or",
"she says so in writing. Refer to the LICENSE file for details.", "she says so in writing. Refer to the MySQLEULA.txt file for details.",
"", "",
"Every copy of this file must include a copy of the License, normally in a", "Every copy of this file must include a copy of the License, normally in a",
"plain ASCII text file named LICENSE. The License grants you the right to", "plain ASCII text file named MySQLEULA.txt. The License grants you the right to",
"copy, modify and redistribute this file, but only under certain conditions", "copy, modify and redistribute this file, but only under certain conditions",
"described in the License. Among other things, the License requires that", "described in the License. Among other things, the License requires that",
"the copyright notice and this notice be preserved on all copies" "the copyright notice and this notice be preserved on all copies"
......
End-User License Agreement for MySQL Commercial Server
(Version 6, July 13, 2000)
Copyright (C) 2000, MySQL AB & MySQL Finland AB
Stockholm SWEDEN, Helsingfors FINLAND and Uppsala SWEDEN
All rights reserved.
Definitions. This End-User License Agreement ("License") is a legal
agreement between you, either an individual or a single entity,
("Licensee") and MySQL AB, MySQL Finland AB and Detron HB ("Licensor")
for the software product identified above, which includes computer
software and may include associated media, printed materials, and
online or electronic documentation ("Software"). The Software also
includes any updates and supplements to the original Software product
provided to you by Licensor. Any software provided along with the
Software that is associated with a separate end-user license agreement
is licensed to you under the terms of that license agreement.
Agreement to the License. The Software is protected by copyright laws
and international copyright treaties, as well as other intellectual
property laws and treaties. The Software is licensed, not sold. If you
do not agree to the terms of this License, do not install or use the
Software. By installing, copying, modifying, downloading,
distributing, accessing or otherwise using the Software, you agree to
be bound by the following terms of this License:
1. Grant for Authorized Use of the Software
Licensor hereby grants to Licensee a non-exclusive, non-transferable
right to use the Software in: - Installing. You may install copies of
the Software for authorized use on your computers, including
workstations, terminals and other digital electronic devices
("Computer"). - Single Computer use. You may only use the Software on
one Computer at a time regardless the number of Computers with
installed copies. This right covers any number of concurrent users,
CPUs and MySQL-servers with any number of copies running on one
Computer.
2. Description of Other Rights
Licensor grants no other rights to the Software except as expressly
set forth herein:
- Copying. You may not copy the Software unless copies or adaptations
are meant for authorized use, archival purposes or when copying or
adaptation is a necessary step in the authorized use of the Software.
- Distribution. You may not distribute the Software.
- Modifying. You may modify the Software but you must reproduce all
copyright notices in the Software on all modified copies and
adaptations.
- License transfer. You may resell or rent this License. If any
modifications have been made to the Software, you must include a
proper notification that the Software is modified.
- Support services. Licensor may provide you with support services
related to the Software. Use and terms of support services are not
governed in this License.
3. Term
This license is effective until terminated. Licensor has the
right to terminate your License immediately if you fail to comply with
any term of this License.
4. No Warranty
The Software is provided "as is". Licensor makes no warranties,
express or implied, arising from course of dealing or usage of trade,
or statutory, as to any matter whatsoever. In particular, any and all
warranties or merchantability, fitness for a particular purpose or
non-infringement of third party rights are expressly excluded. The
entire risk as to the quality and performance of the Software is with
you. If the Software proves defective, you assume all the cost of
necessary service, repair or correction.
5. Limited Liability
In no event will Licensor be liable to you for any consequential or
incidental damages, including any lost profits or lost savings, or for
any claim by any party, even if a Licensor representative has been
advised of the possibility of such damages. Some states do not allow
the exclusion or limitation of liability. Therefore, in any case, the
entire liability of Licensor under any provision of this License is
limited to the amount actually paid by you for the Software.
6. Governing Law and Jurisdiction
This License will be governed by the laws in force in
Sweden. Jurisdiction is with Tingsrätten of Stockholm, Sweden.
Should you have any questions concerning the validity of this License,
please contact: mysql-licensing@mysql.com.
License Agreement for Commercial Use of MySQL[tm] Software
This Agreement ("License") is between MySQL AB, a Swedish company
("Licensor"), and the customer ("Licensee") identified on the electronic order
form submitted on behalf of Licensee (the "Order Form"). In consideration of
the mutual promises, covenants and conditions contained herein, the
sufficiency of which is hereby acknowledged, the parties agree as follows.
1. License Grant.
"Licensed Software" means a complete and unchanged copy of the object code
version of the MySQL relational database management software identified in the
Order Form and posted on a special download page of the MySQL AB web site (the
"Download Page") made available to Licensee immediately after payment as
provided in Section 4. Subject to payment and the other terms and conditions
hereof, Licensor grants to Licensee a limited, non-exclusive and
non-transferable right to: (a) make one copy of the Licensed Software for each
license purchased (each, a "Licensed Copy"); (b) compile and/or link each
Licensed Copy to one copy of the Licensee software identified in the Order
Form (the "Licensee Application") without modifying the Licensed Software
(each, an "Integrated Product"); and (c) load and use the Licensed Copy
portion of an Integrated Product on one machine or instrument in the operating
system environment(s), and on the hardware platform(s) specified in the Order
Form, and solely for running and extracting data from, the Licensee
Application. "Use" means operation by one person for internal business
purposes in accordance with the terms and conditions hereof. Licensed Copies
shall be deemed accepted by Licensee immediately upon download. Licensee may
make one additional copy of each Licensed Copy for backup and archival
purposes only.
2. Transfer.
Only after Licensee has linked or compiled a Licensed Copy as permitted in
Section 1, Licensee may transfer to a third party (the "Transferee") the right
to use such copy as described in Section 1. As a condition to any such
transfer: (a) Licensee must deliver the Licensed Copy and any backup copy to
the Transferee along with a copy of this License (including the Sales Order);
and (b) the Transferee must accept the terms and conditions of this License.
Any and all of Licensee's rights to a Licensed Copy shall terminate upon
transfer of the right to use such copy. A Transferee's rights are limited to
the use rights described in Section 1(c), and do not include the linking,
compilation or copying rights (except for backup and archival copies)
described in Section 1. If you did not purchase this License directly from
MySQL AB, then you are a Transferee. Licensee and any Transferee must comply
with all applicable export laws and regulations.
3. Restrictions.
Licensee may use the Licensed Software only as expressly provided in Section
1. Without limiting the foregoing, Licensee shall not: (a) lease, license,
use, make available, distribute or modify all or any part of the Licensed
Software to any third party, except as otherwise expressly permitted herein;
(b) use the Licensed Software to operate in or as a time-sharing, outsourcing,
service bureau, application service provider or managed service provider
environment; (c) lease, license, use, make available or distribute the
Licensed Software as a general SQL server, as a stand alone application or
with applications other than the Licensee Application under this License; (d)
copy the Licensed Software onto any public or distributed network; (e)
distribute Integrated Products pursuant to a public or open source license;
(f) port the Licensed Software to any operating system other than as described
in the Order Form; or (g) change any proprietary rights notices which appear
in the Licensed Software. Except as otherwise provided in Section 2, the
rights granted to Licensee herein are rights that may be exercised solely by
Licensee.
4. Price and payment.
No later than thirty (30) days after submission of the Order Form, Licensee
shall remit one non-refundable license fee per Licensed Copy as posted on
http://order.mysql.com on the date Licensee submitted the Order Form (the
"License Fee"). All payments shall be made in Euros or U.S. dollars. Licensee
shall be responsible for paying all local, state, federal and international
sales, value added, excise and other taxes and duties payable in connection
with this License, other than taxes based upon Licensor's net income. Licensee
shall not be permitted to access the Download Page until Licensor has received
payment in full.
5. Termination.
Licensor may terminate this License immediately if the Licensee shall breach
any of the provisions of this License and such breach remains uncured 30 days
after receipt of notice. In the event that Licensee becomes liquidated,
dissolved, bankrupt or insolvent, whether voluntarily or involuntarily, or
shall take any action to be so declared, Licensor shall have the right to
terminate this License immediately. Upon expiration, cancellation or other
termination of this License, Licensee shall immediately: (a) discontinue
distribution of Integrated Products that include Licensed Software; and (b)
destroy all copies of the Licensed Software, including (without limitation) as
linked or compiled in any Integrated Product. Sections 4 through 10 shall
survive the termination of this License for any reason.
6. Proprietary Rights.
Licensee agrees that the copyright, patent, trade secrets and all other
intellectual proprietary rights of whatever nature in the Licensed Software
and related documentation, including derivative works, are and shall remain
the exclusive property of Licensor and any third party suppliers. Nothing in
this License should be construed as transferring any aspects of such rights to
Licensee or any third party. Licensor reserves any and all rights not
expressly granted herein. MySQL is a trademark of MySQL AB, and shall not be
used by Licensee without Licensor's express written authorization. Licensee
shall include in the Integrated Products a conspicuous notice that the
Integrated Products include software whose copyright is owned by MySQL AB.
7. Disclaimer of Warranties.
THE LICENSED SOFTWARE IS LICENSED "AS IS," WITHOUT ANY WARRANTIES WHATSOEVER.
LICENSOR EXPRESSLY DISCLAIMS, AND LICENSEE EXPRESSLY WAIVES, ALL WARRANTIES,
WHETHER EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTIBILITY, FITNESS
FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, SYSTEM INTEGRATION,
NON-INTERFERENCE AND ACCURACY OF INFORMATIONAL CONTENT. LICENSOR DOES NOT
WARRANT THAT THE LICENSED SOFTWARE WILL MEET LICENSEE'S REQUIREMENTS OR THAT
THE OPERATION OF THE LICENSED SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE, OR
THAT ERRORS WILL BE CORRECTED. THE ENTIRE RISK OF THE LICENSED SOFTWARE'S
QUALITY AND PERFORMANCE IS WITH LICENSEE. Without limiting the generality of
the foregoing disclaimer, Licensee acknowledges that the Licensed Software is
not specifically designed, manufactured or intended for use in the planning,
construction, maintenance, control or direct operation of nuclear facilities,
aircraft navigation, control or communication systems, weapons systems or
direct life support systems.
8. Indemnification.
Licensee hereby indemnifies and agrees to defend Licensor against any and all
damages, judgments and costs (including reasonable attorneys' fees) related to
any claim based upon: (a) an allegation that the Licensee Application
infringes the intellectual property of a third party; (b) use of the Licensed
Software in a manner prohibited under this License or in a manner for which
the Licensed Software was not designed; (c) integration or use of the Licensed
Software with the Licensee Application (where use of the Licensed Software
alone would not infringe); (d) changes made by Licensee to the Licensed
Software (where use of unmodified Licensed Software would not infringe); (e)
changes made, or actions taken, by Licensor upon Licensee's direct
instructions; or (f) bodily injury, property damage or any other damage or
injury due to the use or inability to use an Integrated Product.
9. Limitation of Liability.
LICENSOR SHALL HAVE NO LIABILITY WITH RESPECT TO ITS OBLIGATIONS UNDER THIS
AGREEMENT OR OTHERWISE FOR CONSEQUENTIAL, EXEMPLARY, SPECIAL, INDIRECT,
INCIDENTAL OR PUNITIVE DAMAGES, INCLUDING (WITHOUT LIMITATION) ANY LOST
PROFITS OR LOST SAVINGS (WHETHER RESULTING FROM IMPAIRED OR LOST DATA,
SOFTWARE OR COMPUTER FAILURE OR ANY OTHER CAUSE), EVEN IF IT HAS BEEN ADVISED
OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING ANY OTHER PROVISION IN
THIS AGREEMENT, THE LIABILITY OF LICENSOR FOR ANY REASON AND UPON ANY CAUSE OF
ACTION SHALL BE LIMITED TO THE AMOUNT PAID TO LICENSOR BY LICENSEE UNDER THIS
AGREEMENT. THIS LIMITATION APPLIES TO ALL CAUSES OF ACTION IN THE AGGREGATE,
INCLUDING (WITHOUT LIMITATION) BREACH OF CONTRACT, BREACH OF WARRANTY,
NEGLIGENCE, MISREPRESENTATIONS AND OTHER TORTS. THE PARTIES AGREE THAT THE
REMEDIES AND LIMITATIONS HEREIN ALLOCATE THE RISKS BETWEEN THE PARTIES AS
AUTHORIZED BY APPLICABLE LAWS. THE LICENSE FEES ARE SET IN RELIANCE UPON THIS
ALLOCATION OF RISK AND THE EXCLUSION OF CERTAIN DAMAGES AS SET FORTH IN THIS
AGREEMENT.
10. Miscellaneous.
10.1 Interpretation.
Failure by Licensor to exercise any right or remedy does not signify
acceptance of the event giving rise to such right or remedy. No action arising
out of this License may be brought by Licensee more than one year after the
cause of action has accrued. If any part of this License is held by a court of
competent jurisdiction to be illegal or unenforceable, the validity or
enforceability of the remainder of this License shall not be affected and such
provision shall be deemed modified to the minimum extent necessary to make
such provision consistent with applicable law and, in its modified form, such
provision shall be enforceable and enforced. Licensor reserves the right not
to accept any Order Form. Any invoice issued by Licensor in connection with
this License shall be deemed a part of this Agreement. To the extent of any
inconsistency between an Order Form and an invoice issued by Licensor, the
terms and conditions of the invoice shall prevail; Licensee shall be deemed to
have accepted an invoice upon payment of such invoice. In the event that
Licensee placed an order by telephone or through an authorized sales
representative, the invoice issued by Licensor shall constitute the Order
Form. The terms and conditions of this Agreement shall replace and serve as a
novation of the terms and conditions of any commercial (i.e., non-GPL) license
purchased online by Licensee prior to August 2002.
10.2 Binding.
This Agreement will be binding upon and inure to the benefit of the parties,
their respective successors and permitted assigns. Except as otherwise
provided in Section 2, without the prior written consent of Licensor, Licensee
may not assign this License or its rights or obligations under this License to
any person or party, whether by operation of law or otherwise; any attempt by
Licensee to assign this License without Licensor's prior written consent shall
be null and void. There are no intended third party beneficiaries of this
License. The parties are, and shall remain, independent contractors; nothing
in this License is designed to create, nor shall create between them, a
partnership, joint venture, agency, or employment relationship.
10.3 Governing Law; Dispute Forum.
If Licensee's residence, principal place of business or place of organization
is in the United States of America ("USA"), then this License shall be deemed
to have been executed in the USA and shall be governed by the laws of the
State of Delaware, without regard to the conflict of laws provisions thereof.
If Licensee's residence, principal place of business or place of organization
is in any country other than the USA, then this License shall be deemed to
have been executed in Sweden and shall be governed by the laws of Sweden,
without regard to the conflict of laws provisions thereof. In no event shall
the United Nations Convention on Contracts for the International Sale of Goods
apply to, or govern, this License. The parties consent to the exclusive
jurisdiction of the courts of Sweden and the USA, as provided in this Section.
In the event that Licensor initiates an action in connection with this License
or any other dispute between the parties, the exclusive jurisdiction of such
action shall be in: (a) Newark, Delaware, if Licensee's residence, principal
place of business or place of organization is in the USA; or (b) Uppsala,
Sweden, if Licensee's residence, principal place of business or place of
organization is in any country other than the USA. In the event that Licensee
initiates an action in connection with this License or any other dispute
between the parties, the exclusive jurisdiction of such action shall be in
Stockholm, Sweden. Notwithstanding the foregoing, either party may bring a
counterclaim in an action in the same jurisdiction in which the originating
claim was filed, and either party may enforce any judgment rendered by such
court in any court of competent jurisdiction. Licensee shall comply at its own
expense with all relevant and applicable laws related to use and distribution
of the Licensed Software as permitted in this License. Notwithstanding the
foregoing, Licensor may seek injunctive or other equitable relief in any
jurisdiction in order to protect its intellectual property rights. The parties
have agreed to execute this License in the English language, and the English
language version of the Agreement will control for all purposes. Any action
brought under this License shall be conducted in the English language.
Licensee shall be responsible for Licensor's attorneys fees and other expenses
associated with the enforcement of this License or the collection of any
amounts due under this License.
10.4 Notice.
Unless otherwise agreed, any notice under this License shall be delivered and
addressed to Licensee at the address set forth on the Order Form, and to
Licensor at Bangardsgatan 8, 753 20, Uppsala, Sweden. Notice shall be deemed
received by any party: (a) on the day given, if personally delivered or if
sent by confirmed facsimile transmission, receipt verified; (b) on the third
day after deposit, if mailed by certified, first class, postage prepaid,
return receipt requested mail, or by reputable, expedited overnight courier;
or (c) on the fifth day after deposit, if sent by reputable, expedited
international courier. Either party may change its address for notice
purposes upon notice in accordance with this Section. Licensor may identify
Licensee as a commercial licensee, including on the MySQL web site.
10.5 GPL.
The GPL License shall continue to apply to any and all uses and distributions
of the Licensed Software undertaken by Licensee either prior to the Effective
Date, after termination, or otherwise outside the scope of this License. This
Agreement shall not be deemed to replace or otherwise amend any Licensee
rights or obligations pursuant to the GPL License with respect to any uses of
the Licensed Software described in the preceding sentence.
10.6 Entire Agreement.
This Agreement (including the Order Form and the invoice) comprises the entire
agreement, and supercedes and merges all prior proposals, understandings and
agreements, oral and written, between the parties relating to the subject
matter of this License. This Agreement may be amended or modified only in a
writing executed by both parties. To the extent of any conflict or
inconsistency between this License and any invoice or other document submitted
by Licensee to Licensor, this License will control. Licensor's acceptance of
any document shall not be construed as an acceptance of provisions which are
in any way in conflict or inconsistent with, or in addition to, this License,
unless such terms are separately and specifically accepted in writing by an
authorized officer of Licensor.
10.7 Print this License.
For record keeping purposes, we encourage Licensee to print this License and
the Order Form on the date that the Order Form is submitted.
...@@ -50797,6 +50797,11 @@ each individual 4.0.x release. ...@@ -50797,6 +50797,11 @@ each individual 4.0.x release.
@appendixsubsec Changes in release 4.0.5 @appendixsubsec Changes in release 4.0.5
@itemize @itemize
@item @item
Fixed a bug in multi-table deletes when outer join is used on an empty
table, which get's first to be deleted
@item
Fixed a bug in multi-table updates when a single table is updated
@item
Updated source tree to be built using @code{automake 1.5} and Updated source tree to be built using @code{automake 1.5} and
@code{libtool 1.4}. @code{libtool 1.4}.
@item @item
# ---------------------------------------------------------------------------
!if !$d(BCB)
BCB = $(MAKEDIR)\..
!endif
# ---------------------------------------------------------------------------
# IDE SECTION
# ---------------------------------------------------------------------------
# The following section of the project makefile is managed by the BCB IDE.
# It is recommended to use the IDE to change any of the values in this
# section.
# ---------------------------------------------------------------------------
VERSION = BCB.04.04
# ---------------------------------------------------------------------------
PROJECT = emb_sample.exe
OBJFILES = emb_sample.obj emb_samples.obj
RESFILES = emb_sample.res
RESDEPEN = $(RESFILES) emb_samples.dfm
LIBFILES = libmysqld.lib
LIBRARIES =
SPARELIBS = Vcl40.lib
PACKAGES = Vcl40.bpi Vclx40.bpi vcljpg40.bpi bcbsmp40.bpi Qrpt40.bpi Vcldb40.bpi \
ibsmp40.bpi vcldbx40.bpi TeeUI40.bpi teedb40.bpi tee40.bpi nmfast40.bpi \
dclocx40.bpi
DEFFILE =
# ---------------------------------------------------------------------------
PATHCPP = .;
PATHASM = .;
PATHPAS = .;
PATHRC = .;
DEBUGLIBPATH = $(BCB)\lib\debug
RELEASELIBPATH = $(BCB)\lib\release
USERDEFINES =
SYSDEFINES = _RTLDLL;NO_STRICT;USEPACKAGES
# ---------------------------------------------------------------------------
CFLAG1 = -I$(BCB)\include;$(BCB)\include\vcl;..\..\..\include -Od -Hc \
-H=$(BCB)\lib\vcl40.csm -w -Ve -r- -a8 -k -y -v -vi- -c -b- -w-par -w-inl -Vx \
-tW -tWM -D$(SYSDEFINES);$(USERDEFINES)
PFLAGS = -U$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \
-I$(BCB)\include;$(BCB)\include\vcl;..\..\..\include -$YD -$W -$O- -v -JPHNE -M
RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl;..\..\..\include
AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /i..\..\..\include /mx /w2 /zd
LFLAGS = -L$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) -aa -Tpe -x -Gn -v
# ---------------------------------------------------------------------------
ALLOBJ = c0w32.obj Memmgr.Lib $(PACKAGES) sysinit.obj $(OBJFILES)
ALLRES = $(RESFILES)
ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib
# ---------------------------------------------------------------------------
!ifdef IDEOPTIONS
[Version Info]
IncludeVerInfo=1
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1046
CodePage=1252
[Version Info Keys]
CompanyName=MySQL AB
FileDescription=Embedded Server Sample
FileVersion=1.0.0.0
InternalName=Builder Embedded Server Sample
LegalCopyright=GNU
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[HistoryLists\hlIncludePath]
Count=2
Item0=$(BCB)\include;$(BCB)\include\vcl;..\..\..\include
Item1=$(BCB)\include;$(BCB)\include\vcl;..\..\..\inluce
[HistoryLists\hlLibraryPath]
Count=1
Item0=$(BCB)\lib\obj;$(BCB)\lib
[HistoryLists\hlDebugSourcePath]
Count=1
Item0=$(BCB)\source\vcl
[Debugging]
DebugSourceDirs=$(BCB)\source\vcl
[Parameters]
RunParams=
HostApplication=
RemoteHost=
RemotePath=
RemoteDebug=0
[Compiler]
InMemoryExe=0
ShowInfoMsgs=0
!endif
# ---------------------------------------------------------------------------
# MAKE SECTION
# ---------------------------------------------------------------------------
# This section of the project file is not used by the BCB IDE. It is for
# the benefit of building from the command-line using the MAKE utility.
# ---------------------------------------------------------------------------
.autodepend
# ---------------------------------------------------------------------------
!if !$d(BCC32)
BCC32 = bcc32
!endif
!if !$d(CPP32)
CPP32 = cpp32
!endif
!if !$d(DCC32)
DCC32 = dcc32
!endif
!if !$d(TASM32)
TASM32 = tasm32
!endif
!if !$d(LINKER)
LINKER = ilink32
!endif
!if !$d(BRCC32)
BRCC32 = brcc32
!endif
# ---------------------------------------------------------------------------
!if $d(PATHCPP)
.PATH.CPP = $(PATHCPP)
.PATH.C = $(PATHCPP)
!endif
!if $d(PATHPAS)
.PATH.PAS = $(PATHPAS)
!endif
!if $d(PATHASM)
.PATH.ASM = $(PATHASM)
!endif
!if $d(PATHRC)
.PATH.RC = $(PATHRC)
!endif
# ---------------------------------------------------------------------------
$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE)
$(BCB)\BIN\$(LINKER) @&&!
$(LFLAGS) +
$(ALLOBJ), +
$(PROJECT),, +
$(ALLLIB), +
$(DEFFILE), +
$(ALLRES)
!
# ---------------------------------------------------------------------------
.pas.hpp:
$(BCB)\BIN\$(DCC32) $(PFLAGS) {$< }
.pas.obj:
$(BCB)\BIN\$(DCC32) $(PFLAGS) {$< }
.cpp.obj:
$(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< }
.c.obj:
$(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< }
.c.i:
$(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< }
.cpp.i:
$(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< }
.asm.obj:
$(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@
.rc.res:
$(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $<
# ---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
USERES("emb_sample.res");
USEFORM("emb_samples.cpp", Form1);
USELIB("libmysqld.lib");
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->Title = "MySQL Embedded Server Sample";
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "emb_samples.h"
#include <winsock.h>
#include <mysql.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <deque.h>
bool b_new_line = false;
const char *server_groups[] = {
"", "embedded", "server", NULL
};
MYSQL *MySQL;
deque<string> fill_rows(MYSQL_RES *res);
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
deque<string> fill_rows(MYSQL_RES *res)
{
MYSQL_ROW row;
deque<string> rows;
while ((row=mysql_fetch_row(res)) != 0)
{
mysql_field_seek(res,0);
for (unsigned int i=0 ; i < mysql_num_fields(res); i++)
rows.push_back(row[i]);
}
return rows;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if (is_server_started)
{
ToggleButton->Caption = "Quit";
Timer1->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
is_server_started = false;
computer_ip(); /* get the computer name and IP number */
/* init the tree database screen */
db_root = DBView->Items->Add(NULL, db_root_caption.UpperCase());
db_root->ImageIndex = 0;
}
//---------------------------------------------------------------------------
/* button which handle the init of mysql server or quit the app */
void __fastcall TForm1::ToggleButtonClick(TObject *Sender)
{
if (!is_server_started)
{
mysql_server_init(NULL, NULL, (char **)server_groups) ;
connect_server();
get_dbs();
}
else
{
mysql_server_end();
Close();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::computer_ip(void)
{
WORD wVersionRequested;
WSADATA WSAData;
wVersionRequested = MAKEWORD(1,1);
WSAStartup(wVersionRequested,&WSAData);
hostent *P;
char s[128];
in_addr in;
char *P2;
gethostname(s, 128);
P = gethostbyname(s);
db_root_caption = P->h_name;
in.S_un.S_un_b.s_b1 = P->h_addr_list[0][0];
in.S_un.S_un_b.s_b2 = P->h_addr_list[0][1];
in.S_un.S_un_b.s_b3 = P->h_addr_list[0][2];
in.S_un.S_un_b.s_b4 = P->h_addr_list[0][3];
P2 = inet_ntoa(in);
db_root_caption += " ( " + (AnsiString)P2 + " )";
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::connect_server()
{
bool ret_value = false;
MySQL = mysql_init(MySQL);
if (!MySQL)
return ret_value;
if (mysql_real_connect(MySQL, NULL, NULL, NULL, NULL, 0, NULL, 0))
{
ret_value = true;
is_server_started = true;
}
return ret_value;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
if (is_server_started)
mysql_server_end();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DBViewClick(TObject *Sender)
{
if (DBView->Selected != db_root && DBView->Selected != NULL)
{
get_tables(DBView->Selected->Text);
clean_desc_grid();
}
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::get_tables(String db_name)
{
MYSQL_RES *res;
AnsiString s_cmd;
TableView->Items->Clear();
s_cmd = "use ";
s_cmd+= db_name.c_str();
if (mysql_query(MySQL, s_cmd.c_str()) ||
!(res=mysql_list_tables(MySQL,"%")))
return false;
tables_node = TableView->Items->Add(NULL, db_name.c_str());
tables_node->ImageIndex = 1;
tables_node->SelectedIndex = 1;
deque<string> rows = fill_rows(res);
mysql_free_result(res);
fill_tree(rows,tables_tree,tables_node,TableView,2);
return true;
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::get_dbs(void)
{
MYSQL_RES *res;
if (!is_server_started)
return false;
if (!(res=mysql_list_dbs(MySQL,"%")))
return false;
deque<string> rows = fill_rows(res);
mysql_free_result(res);
fill_tree(rows,MySQLDbs,db_root,DBView,1);
info_server->Text = mysql_get_server_info(MySQL);
return true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::fill_tree(deque<string> rows,
TTreeNode *root,
TTreeNode *child,
TTreeView *View,
int image_index)
{
deque<string>::iterator r;
for(r = rows.begin(); r != rows.end() ; r++)
{
root = View->Items->AddChild(child, (*r).c_str());
root->ImageIndex = image_index;
root->SelectedIndex = image_index;
}
child->Expanded = true;
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::get_desc_table(String table_name)
{
MYSQL_RES *res, *res1;
MYSQL_ROW row;
AnsiString use_db, show_cols, show_desc;
unsigned int num_fields;
int fields_control = 0, grid_row = 1, fields_number;
b_new_line= true;
clean_desc_grid();
use_db = "use ";
use_db+= DBView->Selected->Text.c_str();
show_desc = "desc ";
show_cols = "show full columns from ";
show_cols+= table_name.c_str();
show_desc+= table_name.c_str();
if (mysql_query(MySQL, use_db.c_str() ))
return false;
if (mysql_query(MySQL, show_cols.c_str() ) ||
!(res1=mysql_store_result(MySQL)))
{
if (mysql_query(MySQL, show_desc.c_str() ) ||
!(res1=mysql_store_result(MySQL)))
return false ;
}
mysql_fetch_row(res1);
mysql_field_seek(res1,0);
fields_number = (mysql_num_fields(res1) - 2);
mysql_free_result(res1);
if (mysql_query(MySQL, show_cols.c_str() ) ||
!(res=mysql_store_result(MySQL)))
{
if (mysql_query(MySQL, show_desc.c_str() ) ||
!(res=mysql_store_result(MySQL)))
return false ;
}
titles_grid();
while ((row=mysql_fetch_row(res)) != 0)
{
mysql_field_seek(res,0);
for (num_fields=0 ; num_fields < mysql_num_fields(res); num_fields++)
{
if (fields_control <= fields_number )
{
desc_table_grid->Cells[fields_control][grid_row] = row[num_fields];
fields_control++;
}
else
{
desc_table_grid->Cells[(fields_control)][grid_row] = row[num_fields];
fields_control = 0;
grid_row++ ;
desc_table_grid->RowCount++;
}
}
}
desc_table_grid->RowCount--;
mysql_free_result(res);
return true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TableViewClick(TObject *Sender)
{
if (DBView->Selected != db_root && DBView->Selected != NULL)
if (DBView->Selected != tables_tree)
get_desc_table(TableView->Selected->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::clean_desc_grid(void)
{
desc_table_grid->RowCount= 2;
desc_table_grid->Cells[0][1] = "";
desc_table_grid->Cells[1][1] = "";
desc_table_grid->Cells[2][1] = "";
desc_table_grid->Cells[3][1] = "";
desc_table_grid->Cells[4][1] = "";
desc_table_grid->Cells[5][1] = "";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::titles_grid(void)
{
desc_table_grid->Cells[0][0] = "Field";
desc_table_grid->Cells[1][0] = "Type";
desc_table_grid->Cells[2][0] = "Null";
desc_table_grid->Cells[3][0] = "Key";
desc_table_grid->Cells[4][0] = "Default";
desc_table_grid->Cells[5][0] = "Extra";
desc_table_grid->Cells[6][0] = "Privileges";
}
//---------------------------------------------------------------------------
#ifndef emb_samplesH
#define emb_samplesH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <Grids.hpp>
#include <ImgList.hpp>
#include <ExtCtrls.hpp>
#include <Graphics.hpp>
#include <Buttons.hpp>
#include <deque.h>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TGroupBox *GroupBox1;
TTreeView *DBView;
TTreeView *TableView;
TStringGrid *desc_table_grid;
TImageList *ImageList2;
TStatusBar *StatusBar1;
TImage *Image1;
TBitBtn *ToggleButton;
TTimer *Timer1;
TLabel *Label1;
TEdit *info_server;
TLabel *Label2;
void __fastcall Timer1Timer(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall ToggleButtonClick(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
void __fastcall DBViewClick(TObject *Sender);
void __fastcall TableViewClick(TObject *Sender);
private: // User declarations
public: // User declarations
bool is_server_started;
AnsiString db_root_caption;
TTreeNode *db_root, *MySQLDbs, *tables_node, *tables_tree;
void __fastcall computer_ip(void);
bool __fastcall get_dbs(void);
bool __fastcall get_tables(String db_name);
bool __fastcall get_desc_table(String table_name);
bool __fastcall connect_server();
void __fastcall clean_desc_grid(void);
void __fastcall titles_grid(void);
void __fastcall fill_tree(deque<string> rows,
TTreeNode *root,
TTreeNode *child,
TTreeView *View,
int image_index);
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
...@@ -135,3 +135,19 @@ ID ParId tst tst1 ...@@ -135,3 +135,19 @@ ID ParId tst tst1
2 2 MSSQL Microsoft 2 2 MSSQL Microsoft
3 3 ORACLE ORACLE 3 3 ORACLE ORACLE
drop table parent, child; drop table parent, child;
drop table if exists t1, t2 ;
create table t1 (n numeric(10));
create table t2 (n numeric(10));
insert into t2 values (1),(2),(4),(8),(16),(32);
select * from t2 left outer join t1 using (n);
n n
1 NULL
2 NULL
4 NULL
8 NULL
16 NULL
32 NULL
delete t1,t2 from t2 left outer join t1 using (n);
select * from t2 left outer join t1 using (n);
n n
drop table if exists t1,t2 ;
...@@ -139,4 +139,12 @@ WHERE child.ParId = parent.Id; ...@@ -139,4 +139,12 @@ WHERE child.ParId = parent.Id;
select * from child; select * from child;
drop table parent, child; drop table parent, child;
\ No newline at end of file drop table if exists t1, t2 ;
create table t1 (n numeric(10));
create table t2 (n numeric(10));
insert into t2 values (1),(2),(4),(8),(16),(32);
select * from t2 left outer join t1 using (n);
delete t1,t2 from t2 left outer join t1 using (n);
select * from t2 left outer join t1 using (n);
drop table if exists t1,t2 ;
...@@ -55,7 +55,7 @@ mkdir $BASE $BASE/bin $BASE/data $BASE/data/mysql $BASE/data/test \ ...@@ -55,7 +55,7 @@ mkdir $BASE $BASE/bin $BASE/data $BASE/data/mysql $BASE/data/test \
chmod o-rwx $BASE/data $BASE/data/* chmod o-rwx $BASE/data $BASE/data/*
for i in ChangeLog COPYING COPYING.LIB README Docs/INSTALL-BINARY \ for i in ChangeLog COPYING COPYING.LIB README Docs/INSTALL-BINARY \
LICENSE Docs/manual.html Docs/manual.txt Docs/manual_toc.html MySQLEULA.txt Docs/manual.html Docs/manual.txt Docs/manual_toc.html
do do
if [ -f $i ] if [ -f $i ]
then then
......
...@@ -329,7 +329,7 @@ bool multi_delete::send_data(List<Item> &values) ...@@ -329,7 +329,7 @@ bool multi_delete::send_data(List<Item> &values)
table->status|= STATUS_DELETED; table->status|= STATUS_DELETED;
if (!(error=table->file->delete_row(table->record[0]))) if (!(error=table->file->delete_row(table->record[0])))
deleted++; deleted++;
else else if (!table_being_deleted->next)
{ {
table->file->print_error(error,MYF(0)); table->file->print_error(error,MYF(0));
DBUG_RETURN(1); DBUG_RETURN(1);
......
...@@ -768,7 +768,7 @@ bool multi_update::send_eof() ...@@ -768,7 +768,7 @@ bool multi_update::send_eof()
thd->proc_info="updating the reference tables"; thd->proc_info="updating the reference tables";
/* Does updates for the last n - 1 tables, returns 0 if ok */ /* Does updates for the last n - 1 tables, returns 0 if ok */
int error = do_updates(false); /* do_updates returns 0 if success */ int error = (num_updated > 1) ? do_updates(false) : 0; /* do_updates returns 0 if success */
/* reset used flags */ /* reset used flags */
#ifndef NOT_USED #ifndef NOT_USED
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment