summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpem@mysql.com <>2002-10-15 16:12:53 +0200
committerpem@mysql.com <>2002-10-15 16:12:53 +0200
commite1303c7b3ccdb41071663c8b64c030ea1a024104 (patch)
tree063d5c4fc101c3dd56f2f73eca3d52f27a1cf470
parent8bd61c3fce74238b8459359a8c9ec588af1b7dc1 (diff)
parentd50045ede7937f688cec5402572695231f225991 (diff)
downloadmariadb-git-e1303c7b3ccdb41071663c8b64c030ea1a024104.tar.gz
Merge pmartin@work.mysql.com:/home/bk/mysql-4.0
into mysql.com:/home/pem/work/mysql-4.0
-rw-r--r--BitKeeper/etc/logging_ok9
-rwxr-xr-xBuild-tools/mysql-copyright6
-rwxr-xr-xBuild-tools/mysql-copyright-24
-rw-r--r--Docs/LICENSE98
-rw-r--r--Docs/MySQLEULA.txt252
-rw-r--r--Docs/manual.texi5
-rw-r--r--libmysqld/examples/builder-sample/emb_sample.bpr192
-rw-r--r--libmysqld/examples/builder-sample/emb_sample.cpp23
-rw-r--r--libmysqld/examples/builder-sample/emb_sample.tdsbin0 -> 2293760 bytes
-rw-r--r--libmysqld/examples/builder-sample/emb_samples.cpp283
-rw-r--r--libmysqld/examples/builder-sample/emb_samples.dfmbin0 -> 15895 bytes
-rw-r--r--libmysqld/examples/builder-sample/emb_samples.h61
-rw-r--r--libmysqld/examples/builder-sample/images/db.icobin0 -> 318 bytes
-rw-r--r--libmysqld/examples/builder-sample/images/find.icobin0 -> 766 bytes
-rw-r--r--libmysqld/examples/builder-sample/images/logo.icobin0 -> 2022 bytes
-rw-r--r--libmysqld/examples/builder-sample/images/mysql.bmpbin0 -> 8760 bytes
-rw-r--r--libmysqld/examples/builder-sample/images/net.icobin0 -> 766 bytes
-rw-r--r--libmysqld/examples/builder-sample/libmysqld.libbin0 -> 7168 bytes
-rw-r--r--libmysqld/examples/builder-sample/snapshot.jpgbin0 -> 36274 bytes
-rw-r--r--mysql-test/r/multi_update.result16
-rw-r--r--mysql-test/t/multi_update.test10
-rw-r--r--scripts/make_binary_distribution.sh2
-rw-r--r--sql/sql_delete.cc2
-rw-r--r--sql/sql_update.cc2
24 files changed, 854 insertions, 111 deletions
diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok
index 000e7588370..851a8f4be33 100644
--- a/BitKeeper/etc/logging_ok
+++ b/BitKeeper/etc/logging_ok
@@ -1,3 +1,4 @@
+Administrador@light.
Administrator@co3064164-a.
Administrator@co3064164-a.rochd1.qld.optushome.com.au
Administrator@fred.
@@ -33,6 +34,7 @@ lenz@kallisto.mysql.com
lenz@mysql.com
miguel@hegel.br
miguel@hegel.local
+miguel@light.
miguel@light.local
monty@bitch.mysql.fi
monty@donna.mysql.fi
@@ -47,10 +49,12 @@ monty@tramp.mysql.fi
monty@work.mysql.com
mwagner@cash.mwagner.org
mwagner@evoq.mwagner.org
+mwagner@work.mysql.com
nick@mysql.com
nick@nick.leippe.com
paul@central.snake.net
paul@teton.kitebird.com
+pem@mysql.com
peter@linux.local
peter@mysql.com
ram@ram.(none)
@@ -62,6 +66,7 @@ serg@build.mysql2.com
serg@serg.mysql.com
serg@sergbook.mysql.com
sinisa@rhols221.adsl.netsonic.fi
+tfr@beta.frontier86.ee
tfr@indrek.tfr.cafe.ee
tfr@sarvik.tfr.cafe.ee
tim@bitch.mysql.fi
@@ -82,7 +87,3 @@ worm@altair.is.lan
zak@balfor.local
zak@linux.local
zgreant@mysql.com
-tfr@beta.frontier86.ee
-Administrador@light.
-mwagner@work.mysql.com
-pem@mysql.com
diff --git a/Build-tools/mysql-copyright b/Build-tools/mysql-copyright
index 68673f3f53f..70b65d3f2cf 100755
--- a/Build-tools/mysql-copyright
+++ b/Build-tools/mysql-copyright
@@ -93,11 +93,11 @@ sub main
$pec= $? >> 8;
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
# exist in the new mysql distributions, but let's be sure..
`rm -f $destdir/PUBLIC $destdir/README`;
- `cp -p $WD/Docs/LICENSE $destdir/`;
+ `cp -p $WD/Docs/MySQLEULA.txt $destdir/`;
# fix file copyrights
&fix_usage_copyright();
@@ -129,7 +129,7 @@ sub fix_usage_copyright
foreach my $Cfile (@Cfiles)
{
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`;
}
}
diff --git a/Build-tools/mysql-copyright-2 b/Build-tools/mysql-copyright-2
index a0d30f308e5..447a2d7c164 100755
--- a/Build-tools/mysql-copyright-2
+++ b/Build-tools/mysql-copyright-2
@@ -15,10 +15,10 @@ Getopts("v") || die "Aborted";
"This software is distributed with NO WARRANTY OF ANY KIND. No author 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",
- "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",
- "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",
"described in the License. Among other things, the License requires that",
"the copyright notice and this notice be preserved on all copies"
diff --git a/Docs/LICENSE b/Docs/LICENSE
deleted file mode 100644
index bd123fe42a5..00000000000
--- a/Docs/LICENSE
+++ /dev/null
@@ -1,98 +0,0 @@
- 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.
diff --git a/Docs/MySQLEULA.txt b/Docs/MySQLEULA.txt
new file mode 100644
index 00000000000..71e630ec81f
--- /dev/null
+++ b/Docs/MySQLEULA.txt
@@ -0,0 +1,252 @@
+ 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.
diff --git a/Docs/manual.texi b/Docs/manual.texi
index b8ff8efaf68..45807e95371 100644
--- a/Docs/manual.texi
+++ b/Docs/manual.texi
@@ -50797,6 +50797,11 @@ each individual 4.0.x release.
@appendixsubsec Changes in release 4.0.5
@itemize
@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
@code{libtool 1.4}.
@item
diff --git a/libmysqld/examples/builder-sample/emb_sample.bpr b/libmysqld/examples/builder-sample/emb_sample.bpr
new file mode 100644
index 00000000000..07b39a6832b
--- /dev/null
+++ b/libmysqld/examples/builder-sample/emb_sample.bpr
@@ -0,0 +1,192 @@
+# ---------------------------------------------------------------------------
+!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$@ $<
+# ---------------------------------------------------------------------------
diff --git a/libmysqld/examples/builder-sample/emb_sample.cpp b/libmysqld/examples/builder-sample/emb_sample.cpp
new file mode 100644
index 00000000000..5ad3bd69319
--- /dev/null
+++ b/libmysqld/examples/builder-sample/emb_sample.cpp
@@ -0,0 +1,23 @@
+//---------------------------------------------------------------------------
+#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;
+}
+//---------------------------------------------------------------------------
diff --git a/libmysqld/examples/builder-sample/emb_sample.tds b/libmysqld/examples/builder-sample/emb_sample.tds
new file mode 100644
index 00000000000..2471b6c112f
--- /dev/null
+++ b/libmysqld/examples/builder-sample/emb_sample.tds
Binary files differ
diff --git a/libmysqld/examples/builder-sample/emb_samples.cpp b/libmysqld/examples/builder-sample/emb_samples.cpp
new file mode 100644
index 00000000000..4dfde111f84
--- /dev/null
+++ b/libmysqld/examples/builder-sample/emb_samples.cpp
@@ -0,0 +1,283 @@
+//---------------------------------------------------------------------------
+#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";
+}
+
diff --git a/libmysqld/examples/builder-sample/emb_samples.dfm b/libmysqld/examples/builder-sample/emb_samples.dfm
new file mode 100644
index 00000000000..399509eeb8e
--- /dev/null
+++ b/libmysqld/examples/builder-sample/emb_samples.dfm
Binary files differ
diff --git a/libmysqld/examples/builder-sample/emb_samples.h b/libmysqld/examples/builder-sample/emb_samples.h
new file mode 100644
index 00000000000..0562bc783cd
--- /dev/null
+++ b/libmysqld/examples/builder-sample/emb_samples.h
@@ -0,0 +1,61 @@
+//---------------------------------------------------------------------------
+#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
diff --git a/libmysqld/examples/builder-sample/images/db.ico b/libmysqld/examples/builder-sample/images/db.ico
new file mode 100644
index 00000000000..ca749002acc
--- /dev/null
+++ b/libmysqld/examples/builder-sample/images/db.ico
Binary files differ
diff --git a/libmysqld/examples/builder-sample/images/find.ico b/libmysqld/examples/builder-sample/images/find.ico
new file mode 100644
index 00000000000..2e0f96c52f9
--- /dev/null
+++ b/libmysqld/examples/builder-sample/images/find.ico
Binary files differ
diff --git a/libmysqld/examples/builder-sample/images/logo.ico b/libmysqld/examples/builder-sample/images/logo.ico
new file mode 100644
index 00000000000..9409cad72b6
--- /dev/null
+++ b/libmysqld/examples/builder-sample/images/logo.ico
Binary files differ
diff --git a/libmysqld/examples/builder-sample/images/mysql.bmp b/libmysqld/examples/builder-sample/images/mysql.bmp
new file mode 100644
index 00000000000..ed5c7f9051f
--- /dev/null
+++ b/libmysqld/examples/builder-sample/images/mysql.bmp
Binary files differ
diff --git a/libmysqld/examples/builder-sample/images/net.ico b/libmysqld/examples/builder-sample/images/net.ico
new file mode 100644
index 00000000000..bb11e34bd1d
--- /dev/null
+++ b/libmysqld/examples/builder-sample/images/net.ico
Binary files differ
diff --git a/libmysqld/examples/builder-sample/libmysqld.lib b/libmysqld/examples/builder-sample/libmysqld.lib
new file mode 100644
index 00000000000..994e67e675e
--- /dev/null
+++ b/libmysqld/examples/builder-sample/libmysqld.lib
Binary files differ
diff --git a/libmysqld/examples/builder-sample/snapshot.jpg b/libmysqld/examples/builder-sample/snapshot.jpg
new file mode 100644
index 00000000000..b132fac8376
--- /dev/null
+++ b/libmysqld/examples/builder-sample/snapshot.jpg
Binary files differ
diff --git a/mysql-test/r/multi_update.result b/mysql-test/r/multi_update.result
index 328eb9b394e..9dff4fba825 100644
--- a/mysql-test/r/multi_update.result
+++ b/mysql-test/r/multi_update.result
@@ -135,3 +135,19 @@ ID ParId tst tst1
2 2 MSSQL Microsoft
3 3 ORACLE ORACLE
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 ;
diff --git a/mysql-test/t/multi_update.test b/mysql-test/t/multi_update.test
index 205dbb10ccf..7d855dd54ea 100644
--- a/mysql-test/t/multi_update.test
+++ b/mysql-test/t/multi_update.test
@@ -139,4 +139,12 @@ WHERE child.ParId = parent.Id;
select * from child;
-drop table parent, child; \ No newline at end of file
+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);
+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 ;
diff --git a/scripts/make_binary_distribution.sh b/scripts/make_binary_distribution.sh
index e5d7f20c6df..9d25943bb52 100644
--- a/scripts/make_binary_distribution.sh
+++ b/scripts/make_binary_distribution.sh
@@ -55,7 +55,7 @@ mkdir $BASE $BASE/bin $BASE/data $BASE/data/mysql $BASE/data/test \
chmod o-rwx $BASE/data $BASE/data/*
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
if [ -f $i ]
then
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index eaa8c6c2a67..b40e0b7b093 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -329,7 +329,7 @@ bool multi_delete::send_data(List<Item> &values)
table->status|= STATUS_DELETED;
if (!(error=table->file->delete_row(table->record[0])))
deleted++;
- else
+ else if (!table_being_deleted->next)
{
table->file->print_error(error,MYF(0));
DBUG_RETURN(1);
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index b5df0e03823..4af5777a53f 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -768,7 +768,7 @@ bool multi_update::send_eof()
thd->proc_info="updating the reference tables";
/* 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 */
#ifndef NOT_USED