1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

Merge mysql.com:/windows/Linux_space/MySQL/mysql-5.1

into  mysql.com:/windows/Linux_space/MySQL/mysql-5.1-new-ndb


client/mysqldump.c:
  Auto merged
sql/ha_ndbcluster.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
storage/ndb/src/ndbapi/NdbTransaction.cpp:
  Auto merged
sql/sql_class.h:
  Fixed indentation
This commit is contained in:
unknown
2006-11-10 11:38:54 +01:00
307 changed files with 22087 additions and 7545 deletions

View File

@ -567,8 +567,10 @@ heap/hp_test2
help
help.c
help.h
include/check_abi
include/my_config.h
include/my_global.h
include/mysql_h.ic
include/mysql_version.h
include/mysqld_ername.h
include/mysqld_error.h
@ -1260,6 +1262,7 @@ mysql-test/r/bdb-deadlock.err
mysql-test/r/bdb.err
mysql-test/r/bdb.log
mysql-test/r/bdb_cache.err
mysql-test/r/blackhole.log
mysql-test/r/client_test.err
mysql-test/r/csv.err
mysql-test/r/ctype_ucs.err

View File

@ -106,7 +106,7 @@ else
cxx_warnings="$warnings -std=c++98"
# NOTE: warning mode should not influence optimize/debug mode.
# Please feel free to add a separate option if you don't feel it's an overkill.
debug_extra_flags="-O0"
debug_extra_cflags="-O0"
# Reset CPU flags (-mtune), they don't work in -pedantic mode
check_cpu_cflags=""
fi

View File

@ -5,5 +5,15 @@
45001f7c3b2hhCXDKfUvzkX9TNe6VA
45002051rHJfMEXAIMiAZV0clxvKSA
4513d8e4Af4dQWuk13sArwofRgFDQw
45143312u0Tz4r0wPXCbUKwdHa2jWA
45143b90ewOQuTW8-jrB3ZSAQvMRJw
45184588w9U72A6KX1hUFeAC4shSHA
45185df8mZbxfp85FbA0VxUXkmDewA
4519a6c5BVUxEHTf5iJnjZkixMBs8g
451ab499rgdjXyOnUDqHu-wBDoS-OQ
451b110a3ZV6MITl93ehXk2wxrbW7g
45214442pBGT9KuZEGixBH71jTzbOA
45214a07hVsIGwvwa-WrO-jpeaSwVw
452a92d0-31-8wSzSfZi165fcGcXPA
454a7ef8gdvE_ddMlJyghvOAkKPNOQ
454f8960jsVT_kMKJtZ9OCgXoba0xQ

View File

@ -9,8 +9,6 @@ unless($event eq 'outgoing pull' || $event eq 'outgoing push' ||
exit 0;
}
print "Checking for bad changesets from old crashed 5.1 tree...\n";
my @bad_csets=
( 'monty@mysql.com|ChangeSet|20060418090255|16983',
'monty@mysql.com|ChangeSet|20060418090458|02628',
@ -80,6 +78,4 @@ END
}
}
print "No bad changesets found, proceeding.\n";
exit 0;

View File

@ -9,8 +9,6 @@ unless($event eq 'outgoing pull' || $event eq 'outgoing push' ||
exit 0;
}
print "Checking for bad changesets from old crashed 5.1 tree...\n";
my @bad_csets=
( 'monty@mysql.com|ChangeSet|20060418090255|16983',
'monty@mysql.com|ChangeSet|20060418090458|02628',
@ -80,6 +78,4 @@ END
}
}
print "No bad changesets found, proceeding.\n";
exit 0;

View File

@ -1,252 +0,0 @@
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://shop.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.

14
README
View File

@ -2,8 +2,9 @@ This is a release of MySQL, a dual-license SQL database server.
MySQL is brought to you by the MySQL team at MySQL AB.
License information can be found in these files:
- For GPL (free) distributions, see the COPYING file.
- For commercial distributions, see the MySQLEULA.txt file.
- For GPL (free) distributions, see the COPYING file and
the EXCEPTIONS-CLIENT file.
- For commercial distributions, see the LICENSE.mysql file.
For further information about MySQL or additional documentation, see:
@ -15,11 +16,10 @@ Some manual sections of special interest:
- If you are migrating from an older version of MySQL, please read the
"Upgrading from..." section first!
- To see what MySQL can do, take a look at the features section.
- For installation instructions, see the Installation chapter.
- For future plans, see the TODO appendix.
- For the new features/bugfix history, see the News appendix.
- For the currently known bugs/misfeatures (known errors) see the problems
appendix.
- For installation instructions, see the Installing and Upgrading chapter.
- For the new features/bugfix history, see the Change History appendix.
- For the currently known bugs/misfeatures (known errors) see the Problems
and Common Errors appendix.
- For a list of developers and other contributors, see the Credits
appendix.

View File

@ -46,7 +46,8 @@ mysqladmin_SOURCES = mysqladmin.cc
mysql_LDADD = @readline_link@ @TERMCAP_LIB@ $(LDADD) $(CXXLDFLAGS)
mysqltest_SOURCES= mysqltest.c $(top_srcdir)/mysys/my_getsystime.c \
$(yassl_dummy_link_fix)
mysqltest_LDADD = $(top_builddir)/regex/libregex.a $(LDADD)
mysqltest_LDADD = $(top_builddir)/regex/libregex.a $(LDADD) \
$(top_builddir)/mysys/libmysys.a
mysqlbinlog_SOURCES = mysqlbinlog.cc $(top_srcdir)/mysys/mf_tempdir.c \
$(top_srcdir)/mysys/my_new.cc \
$(top_srcdir)/mysys/my_bit.c \

View File

@ -386,6 +386,21 @@ int main(int argc,char *argv[])
else
status.add_to_history=1;
status.exit_status=1;
{
/*
The file descriptor-layer may be out-of-sync with the file-number layer,
so we make sure that "stdout" is really open. If its file is closed then
explicitly close the FD layer.
*/
int stdout_fileno_copy;
stdout_fileno_copy= dup(fileno(stdout)); /* Okay if fileno fails. */
if (stdout_fileno_copy == -1)
fclose(stdout);
else
close(stdout_fileno_copy); /* Clean up dup(). */
}
load_defaults("my",load_default_groups,&argc,&argv);
defaults_argv=argv;
if (get_options(argc, (char **) argv))
@ -2091,6 +2106,8 @@ com_go(String *buffer,char *line __attribute__((unused)))
(long) mysql_num_rows(result),
(long) mysql_num_rows(result) == 1 ? "row" : "rows");
end_pager();
if (mysql_errno(&mysql))
error= put_error(&mysql);
}
}
else if (mysql_affected_rows(&mysql) == ~(ulonglong) 0)
@ -2905,7 +2922,11 @@ com_connect(String *buffer, char *line)
bzero(buff, sizeof(buff));
if (buffer)
{
strmake(buff, line, sizeof(buff) - 1);
/*
Two null bytes are needed in the end of buff to allow
get_arg to find end of string the second time it's called.
*/
strmake(buff, line, sizeof(buff)-2);
tmp= get_arg(buff, 0);
if (tmp && *tmp)
{

View File

@ -45,6 +45,7 @@
#include <m_string.h>
#include <m_ctype.h>
#include <hash.h>
#include <stdarg.h>
#include "client_priv.h"
#include "mysql.h"
@ -544,6 +545,8 @@ static void write_header(FILE *sql_file, char *db_name)
if (opt_xml)
{
fputs("<?xml version=\"1.0\"?>\n", sql_file);
/* Schema reference. Allows use of xsi:nil for NULL values and
xsi:type to define an element's data type. */
fputs("<mysqldump ", sql_file);
fputs("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"",
sql_file);
@ -1144,7 +1147,7 @@ static char *quote_for_like(const char *name, char *buff)
SYNOPSIS
print_quoted_xml()
output - output file
xml_file - output file
str - string to print
len - its length
@ -1181,34 +1184,63 @@ static void print_quoted_xml(FILE *xml_file, const char *str, ulong len)
/*
Print xml tag with one attribute.
Print xml tag. Optionally add attribute(s).
SYNOPSIS
print_xml_tag1()
print_xml_tag(xml_file, sbeg, send, tag_name, first_attribute_name,
..., attribute_name_n, attribute_value_n, NullS)
xml_file - output file
sbeg - line beginning
stag_atr - tag and attribute
sval - value of attribute
send - line ending
tag_name - XML tag name.
first_attribute_name - tag and first attribute
first_attribute_value - (Implied) value of first attribute
attribute_name_n - attribute n
attribute_value_n - value of attribute n
DESCRIPTION
Print tag with one attribute to the xml_file. Format is:
sbeg<stag_atr="sval">send
Print XML tag with any number of attribute="value" pairs to the xml_file.
Format is:
sbeg<tag_name first_attribute_name="first_attribute_value" ...
attribute_name_n="attribute_value_n">send
NOTE
sval MUST be a NULL terminated string.
sval string will be qouted before output.
Additional arguments must be present in attribute/value pairs.
The last argument should be the null character pointer.
All attribute_value arguments MUST be NULL terminated strings.
All attribute_value arguments will be quoted before output.
*/
static void print_xml_tag1(FILE * xml_file, const char* sbeg,
const char* stag_atr, const char* sval,
const char* send)
static void print_xml_tag(FILE * xml_file, const char* sbeg, const char* send,
const char* tag_name,
const char* first_attribute_name, ...)
{
va_list arg_list;
const char *attribute_name, *attribute_value;
fputs(sbeg, xml_file);
fputs("<", xml_file);
fputs(stag_atr, xml_file);
fputs("\"", xml_file);
print_quoted_xml(xml_file, sval, strlen(sval));
fputs("\">", xml_file);
fputc('<', xml_file);
fputs(tag_name, xml_file);
va_start(arg_list, first_attribute_name);
attribute_name= first_attribute_name;
while (attribute_name != NullS)
{
attribute_value= va_arg(arg_list, char *);
DBUG_ASSERT(attribute_value != NullS);
fputc(' ', xml_file);
fputs(attribute_name, xml_file);
fputc('\"', xml_file);
print_quoted_xml(xml_file, attribute_value, strlen(attribute_value));
fputc('\"', xml_file);
attribute_name= va_arg(arg_list, char *);
}
va_end(arg_list);
fputc('>', xml_file);
fputs(send, xml_file);
check_io(xml_file);
}
@ -1418,6 +1450,28 @@ static uint dump_events_for_db(char *db)
}
/*
Print hex value for blob data.
SYNOPSIS
print_blob_as_hex()
output_file - output file
str - string to print
len - its length
DESCRIPTION
Print hex value for blob data.
*/
static void print_blob_as_hex(FILE *output_file, const char *str, ulong len)
{
/* sakaik got the idea to to provide blob's in hex notation. */
const char *ptr= str, *end= ptr + len;
for (; ptr < end ; ptr++)
fprintf(output_file, "%02X", *((uchar *)ptr));
check_io(output_file);
}
/*
dump_routines_for_db
-- retrieves list of routines for a given db, and prints out
@ -1865,7 +1919,8 @@ static uint get_table_structure(char *table, char *db, char *table_type,
if (!opt_xml)
fprintf(sql_file, "CREATE TABLE %s (\n", result_table);
else
print_xml_tag1(sql_file, "\t", "table_structure name=", table, "\n");
print_xml_tag(sql_file, "\t", "\n", "table_structure", "name=", table,
NullS);
check_io(sql_file);
}
@ -2437,8 +2492,8 @@ static void dump_table(char *table, char *db)
rownr=0;
init_length=(uint) insert_pat.length+4;
if (opt_xml)
print_xml_tag1(md_result_file, "\t", "table_data name=", table, "\n");
print_xml_tag(md_result_file, "\t", "\n", "table_data", "name=", table,
NullS);
if (opt_autocommit)
{
fprintf(md_result_file, "set autocommit=0;\n");
@ -2492,7 +2547,7 @@ static void dump_table(char *table, char *db)
field->type == MYSQL_TYPE_LONG_BLOB ||
field->type == MYSQL_TYPE_MEDIUM_BLOB ||
field->type == MYSQL_TYPE_TINY_BLOB)) ? 1 : 0;
if (extended_insert)
if (extended_insert && !opt_xml)
{
if (i == 0)
dynstr_set(&extended_row,"(");
@ -2581,18 +2636,25 @@ static void dump_table(char *table, char *db)
{
if (opt_xml)
{
print_xml_tag1(md_result_file, "\t\t", "field name=",
field->name, "");
if (opt_hex_blob && is_blob && length)
{
/* Define xsi:type="xs:hexBinary" for hex encoded data */
print_xml_tag(md_result_file, "\t\t", "", "field", "name=",
field->name, "xsi:type=", "xs:hexBinary", NullS);
print_blob_as_hex(md_result_file, row[i], length);
}
else
{
print_xml_tag(md_result_file, "\t\t", "", "field", "name=",
field->name, NullS);
print_quoted_xml(md_result_file, row[i], length);
}
fputs("</field>\n", md_result_file);
}
else if (opt_hex_blob && is_blob && length)
{
/* sakaik got the idea to to provide blob's in hex notation. */
char *ptr= row[i], *end= ptr + length;
fputs("0x", md_result_file);
for (; ptr < end ; ptr++)
fprintf(md_result_file, "%02X", *((uchar *)ptr));
print_blob_as_hex(md_result_file, row[i], length);
}
else
unescape(md_result_file, row[i], length);
@ -2603,8 +2665,8 @@ static void dump_table(char *table, char *db)
char *ptr= row[i];
if (opt_xml)
{
print_xml_tag1(md_result_file, "\t\t", "field name=",
field->name, "");
print_xml_tag(md_result_file, "\t\t", "", "field", "name=",
field->name, NullS);
fputs(!my_isalpha(charset_info, *ptr) ? ptr: "NULL",
md_result_file);
fputs("</field>\n", md_result_file);
@ -3187,7 +3249,7 @@ static int dump_all_tables_in_db(char *database)
if (init_dumping(database, init_dumping_tables))
return 1;
if (opt_xml)
print_xml_tag1(md_result_file, "", "database name=", database, "\n");
print_xml_tag(md_result_file, "", "\n", "database", "name=", database, NullS);
if (lock_tables)
{
DYNAMIC_STRING query;
@ -3270,7 +3332,7 @@ static my_bool dump_all_views_in_db(char *database)
if (init_dumping(database, init_dumping_views))
return 1;
if (opt_xml)
print_xml_tag1(md_result_file, "", "database name=", database, "\n");
print_xml_tag(md_result_file, "", "\n", "database", "name=", database, NullS);
if (lock_tables)
{
DYNAMIC_STRING query;
@ -3409,7 +3471,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
/* We shall countinue here, if --force was given */
}
if (opt_xml)
print_xml_tag1(md_result_file, "", "database name=", db, "\n");
print_xml_tag(md_result_file, "", "\n", "database", "name=", db, NullS);
/* Dump each selected table */
for (pos= dump_tables; pos < end; pos++)
@ -3522,7 +3584,7 @@ static int do_reset_master(MYSQL *mysql_con)
}
static int start_transaction(MYSQL *mysql_con, my_bool consistent_read_now)
static int start_transaction(MYSQL *mysql_con)
{
/*
We use BEGIN for old servers. --single-transaction --master-data will fail
@ -3537,10 +3599,8 @@ static int start_transaction(MYSQL *mysql_con, my_bool consistent_read_now)
"SET SESSION TRANSACTION ISOLATION "
"LEVEL REPEATABLE READ") ||
mysql_query_with_error_report(mysql_con, 0,
consistent_read_now ?
"START TRANSACTION "
"WITH CONSISTENT SNAPSHOT" :
"BEGIN"));
"/*!40100 WITH CONSISTENT SNAPSHOT */"));
}
@ -4030,7 +4090,7 @@ int main(int argc, char **argv)
if ((opt_lock_all_tables || opt_master_data) &&
do_flush_tables_read_lock(mysql))
goto err;
if (opt_single_transaction && start_transaction(mysql, test(opt_master_data)))
if (opt_single_transaction && start_transaction(mysql))
goto err;
if (opt_delete_master_logs && do_reset_master(mysql))
goto err;

File diff suppressed because it is too large Load Diff

View File

@ -415,6 +415,10 @@ AC_SUBST(HOSTNAME)
AC_SUBST(PERL)
AC_SUBST(PERL5)
# icheck, used for ABI check
AC_PATH_PROG(ICHECK, icheck, no)
AC_SUBST(ICHECK)
# Lock for PS
AC_PATH_PROG(PS, ps, ps)
AC_MSG_CHECKING("how to check if pid exists")
@ -1058,6 +1062,18 @@ EOF
extra/Makefile.in)
cat > $filesed << EOF
s,\(extra/comp_err\)\$(EXEEXT),\1.linux,
EOF
;;
libmysql/Makefile.in)
cat > $filesed << EOF
s,libyassl.la,.libs/libyassl.a,
s,libtaocrypt.la,.libs/libtaocrypt.a,
EOF
;;
libmysql_r/Makefile.in)
cat > $filesed << EOF
s,libyassl.la,.libs/libyassl.a,
s,libtaocrypt.la,.libs/libtaocrypt.a,
EOF
;;
client/Makefile.in)
@ -1696,6 +1712,13 @@ then
AC_MSG_ERROR("MySQL needs a off_t type.")
fi
dnl
dnl check if time_t is unsigned
dnl
MYSQL_CHECK_TIME_T
# do we need #pragma interface/#pragma implementation ?
# yes if it's gcc 2.x, and not icc pretending to be gcc, and not cygwin
AC_MSG_CHECKING(the need for @%:@pragma interface/implementation)

View File

@ -40,6 +40,13 @@
#include "lock.hpp"
#include "openssl/ssl.h" // ASN1_STRING and DH
// Check if _POSIX_THREADS should be forced
#if !defined(_POSIX_THREADS) && (defined(__NETWARE__) || defined(__hpux))
// HPUX does not define _POSIX_THREADS as it's not _fully_ implemented
// Netware supports pthreads but does not announce it
#define _POSIX_THREADS
#endif
#ifdef _POSIX_THREADS
#include <pthread.h>
#endif

View File

@ -60,12 +60,12 @@ private:
T mac_;
// MSVC 6 HACK, gives compiler error if calculated in array
enum { BSIZE = T::BLOCK_SIZE / sizeof(word32),
DSIZE = T::DIGEST_SIZE / sizeof(word32) };
enum { HMAC_BSIZE = T::BLOCK_SIZE / sizeof(word32),
HMAC_DSIZE = T::DIGEST_SIZE / sizeof(word32) };
word32 ip_[BSIZE]; // align ipad_ on word32
word32 op_[BSIZE]; // align opad_ on word32
word32 innerH_[DSIZE]; // align innerHash_ on word32
word32 ip_[HMAC_BSIZE]; // align ipad_ on word32
word32 op_[HMAC_BSIZE]; // align opad_ on word32
word32 innerH_[HMAC_DSIZE]; // align innerHash_ on word32
void KeyInnerHash();

View File

@ -27,9 +27,12 @@
#endif /* _WIN32 */
#if !defined(_SOCKLEN_T) && (defined(_WIN32) || defined(__NETWARE__))
#if !defined(_SOCKLEN_T) && defined(_WIN32)
typedef int socklen_t;
#endif
#if !defined(_SOCKLEN_T) && defined(__NETWARE__)
typedef size_t socklen_t;
#endif
// Check type of third arg to accept

View File

@ -15,14 +15,14 @@
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
# MA 02111-1307, USA
BUILT_SOURCES = mysql_version.h m_ctype.h my_config.h
BUILT_SOURCES = mysql_version.h my_config.h
pkginclude_HEADERS = my_dbug.h m_string.h my_sys.h my_list.h my_xml.h \
mysql.h mysql_com.h mysql_embed.h \
my_semaphore.h my_pthread.h my_no_pthread.h \
errmsg.h my_global.h my_net.h my_alloc.h \
my_getopt.h sslopt-longopts.h my_dir.h typelib.h \
sslopt-vars.h sslopt-case.h sql_common.h keycache.h \
mysql_time.h mysql/plugin.h $(BUILT_SOURCES)
mysql_time.h m_ctype.h mysql/plugin.h $(BUILT_SOURCES)
noinst_HEADERS = config-win.h config-netware.h \
heap.h my_bitmap.h my_uctype.h \
myisam.h myisampack.h myisammrg.h ft_global.h\
@ -35,8 +35,10 @@ noinst_HEADERS = config-win.h config-netware.h \
atomic/rwlock.h atomic/x86-gcc.h atomic/x86-msvc.h \
my_libwrap.h
# mysql_version.h are generated
CLEANFILES = mysql_version.h my_config.h readline openssl
# Remove built files and the symlinked directories
CLEANFILES = $(BUILT_SOURCES) readline openssl
EXTRA_DIST = mysql_h.ic
# Some include files that may be moved and patched by configure
DISTCLEANFILES = sched.h $(CLEANFILES)
@ -54,5 +56,22 @@ my_config.h: ../config.h
dist-hook:
$(RM) -f $(distdir)/mysql_version.h $(distdir)/my_config.h
#
# Rules for checking that ABI has not changed
#
# Create a icheck file and compare it to the reference
abi_check: mysql.h mysql_version.h mysql_com.h mysql_time.h my_list.h \
my_alloc.h typelib.h mysql_h.ic
@set -ex; \
if [ @ICHECK@ != no ] ; then \
@ICHECK@ --canonify --skip-from-re /usr/ -o $@.ic mysql.h; \
@ICHECK@ --compare mysql_h.ic $@.ic; \
fi; \
touch abi_check;
#all: abi_check
# Don't update the files from bitkeeper
%::SCCS/s.%

0
include/abi_check Normal file
View File

View File

@ -65,6 +65,8 @@ my_bool hash_check(HASH *hash); /* Only in debug library */
#define hash_clear(H) bzero((char*) (H),sizeof(*(H)))
#define hash_inited(H) ((H)->array.buffer != 0)
#define hash_init_opt(A,B,C,D,E,F,G,H) \
(!hash_inited(A) && _hash_init(A,B,C,D,E,F,G, H CALLER_INFO))
#ifdef __cplusplus
}

View File

@ -39,7 +39,8 @@ extern void _db_enter_(const char *_func_,const char *_file_,uint _line_,
extern void _db_return_(uint _line_,const char **_sfunc_,const char **_sfile_,
uint *_slevel_);
extern void _db_pargs_(uint _line_,const char *keyword);
extern void _db_doprnt_ _VARARGS((const char *format,...));
extern void _db_doprnt_ _VARARGS((const char *format,...))
ATTRIBUTE_FORMAT(printf, 1, 2);
extern void _db_dump_(uint _line_,const char *keyword,const char *memory,
uint length);
extern void _db_end_(void);

View File

@ -43,6 +43,12 @@ typedef long my_time_t;
#define MY_TIME_T_MAX LONG_MAX
#define MY_TIME_T_MIN LONG_MIN
/* Time handling defaults */
#define TIMESTAMP_MAX_YEAR 2038
#define TIMESTAMP_MIN_YEAR (1900 + YY_PART_YEAR - 1)
#define TIMESTAMP_MAX_VALUE INT_MAX32
#define TIMESTAMP_MIN_VALUE 1
/* two-digit years < this are 20..; >= this are 19.. */
#define YY_PART_YEAR 70
/* apply above magic to years < this */
@ -57,6 +63,16 @@ typedef long my_time_t;
#define TIME_NO_ZERO_DATE (TIME_NO_ZERO_IN_DATE*2)
#define TIME_INVALID_DATES (TIME_NO_ZERO_DATE*2)
#define MYSQL_TIME_WARN_TRUNCATED 1
#define MYSQL_TIME_WARN_OUT_OF_RANGE 2
/* Limits for the TIME data type */
#define TIME_MAX_HOUR 838
#define TIME_MAX_MINUTE 59
#define TIME_MAX_SECOND 59
#define TIME_MAX_VALUE (TIME_MAX_HOUR*10000 + TIME_MAX_MINUTE*100 + \
TIME_MAX_SECOND)
enum enum_mysql_timestamp_type
str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time,
uint flags, int *was_cut);
@ -69,13 +85,39 @@ ulonglong TIME_to_ulonglong(const MYSQL_TIME *time);
my_bool str_to_time(const char *str,uint length, MYSQL_TIME *l_time,
int *was_cut);
int *warning);
int check_time_range(struct st_mysql_time *time, int *warning);
long calc_daynr(uint year,uint month,uint day);
uint calc_days_in_year(uint year);
void init_time(void);
/*
Function to check sanity of a TIMESTAMP value
DESCRIPTION
Check if a given MYSQL_TIME value fits in TIMESTAMP range.
This function doesn't make precise check, but rather a rough
estimate.
RETURN VALUES
FALSE The value seems sane
TRUE The MYSQL_TIME value is definitely out of range
*/
static inline bool validate_timestamp_range(const MYSQL_TIME *t)
{
if ((t->year > TIMESTAMP_MAX_YEAR || t->year < TIMESTAMP_MIN_YEAR) ||
(t->year == TIMESTAMP_MAX_YEAR && (t->month > 1 || t->day > 19)) ||
(t->year == TIMESTAMP_MIN_YEAR && (t->month < 12 || t->day < 31)))
return FALSE;
return TRUE;
}
my_time_t
my_system_gmt_sec(const MYSQL_TIME *t, long *my_timezone,
my_bool *in_dst_time_gap);
@ -98,14 +140,24 @@ int my_datetime_to_str(const MYSQL_TIME *l_time, char *to);
int my_TIME_to_str(const MYSQL_TIME *l_time, char *to);
/*
The following must be sorted so that simple intervals comes first.
(get_interval_value() depends on this)
Available interval types used in any statement.
'interval_type' must be sorted so that simple intervals comes first,
ie year, quarter, month, week, day, hour, etc. The order based on
interval size is also important and the intervals should be kept in a
large to smaller order. (get_interval_value() depends on this)
Note: If you change the order of elements in this enum you should fix
order of elements in 'interval_type_to_name' and 'interval_names'
arrays
See also interval_type_to_name, get_interval_value, interval_names
*/
enum interval_type
{
INTERVAL_YEAR, INTERVAL_QUARTER, INTERVAL_MONTH, INTERVAL_DAY, INTERVAL_HOUR,
INTERVAL_MINUTE, INTERVAL_WEEK, INTERVAL_SECOND, INTERVAL_MICROSECOND ,
INTERVAL_YEAR, INTERVAL_QUARTER, INTERVAL_MONTH, INTERVAL_WEEK, INTERVAL_DAY,
INTERVAL_HOUR, INTERVAL_MINUTE, INTERVAL_SECOND, INTERVAL_MICROSECOND,
INTERVAL_YEAR_MONTH, INTERVAL_DAY_HOUR, INTERVAL_DAY_MINUTE,
INTERVAL_DAY_SECOND, INTERVAL_HOUR_MINUTE, INTERVAL_HOUR_SECOND,
INTERVAL_MINUTE_SECOND, INTERVAL_DAY_MICROSECOND, INTERVAL_HOUR_MICROSECOND,

View File

@ -14,6 +14,17 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/*
This file defines the client API to MySQL and also the ABI of the
dynamically linked libmysqlclient.
The ABI should never be changed in a released product of MySQL
thus you need to take great care when changing the file. In case
the file is changed so the ABI is broken, you must also
update the SHAREDLIB_MAJOR_VERSION in configure.in .
*/
#ifndef _mysql_h
#define _mysql_h

View File

@ -65,7 +65,7 @@ __MYSQL_DECLARE_PLUGIN(NAME, \
builtin_ ## NAME ## _sizeof_struct_st_plugin, \
builtin_ ## NAME ## _plugin)
#define mysql_declare_plugin_end ,{0,0,0,0,0,0,0,0,0,0,0}}
#define mysql_declare_plugin_end ,{0,0,0,0,0,0,0,0,0,0,0,0}}
/*
declarations for SHOW STATUS support in plugins

961
include/mysql_h.ic Normal file
View File

@ -0,0 +1,961 @@
struct character_set;
struct rand_struct;
struct st_list;
struct st_mem_root;
struct st_mysql;
struct st_mysql_bind;
struct st_mysql_data;
struct st_mysql_field;
struct st_mysql_manager;
struct st_mysql_methods;
struct st_mysql_options;
struct st_mysql_parameters;
struct st_mysql_res;
struct st_mysql_rows;
struct st_mysql_stmt;
struct st_mysql_time;
struct st_net;
struct st_typelib;
struct st_udf_args;
struct st_udf_init;
struct st_used_mem;
enum Item_result;
enum enum_cursor_type;
enum enum_field_types;
enum enum_mysql_set_option;
enum enum_mysql_stmt_state;
enum enum_mysql_timestamp_type;
enum enum_server_command;
enum enum_stmt_attr_type;
enum mysql_enum_shutdown_level;
enum mysql_option;
enum mysql_protocol_type;
enum mysql_rpl_type;
enum mysql_status;
# 134 "mysql.h"
typedef struct st_mysql_rows MYSQL_ROWS;
# 24 "my_list.h"
typedef struct st_list LIST;
# 251 "mysql.h"
typedef struct st_mysql MYSQL;
# 653 "mysql.h"
typedef struct st_mysql_bind MYSQL_BIND;
# 93 "mysql.h"
typedef struct st_mysql_field MYSQL_FIELD;
# 117 "mysql.h"
typedef unsigned int MYSQL_FIELD_OFFSET;
# 340 "mysql.h"
typedef struct st_mysql_manager MYSQL_MANAGER;
# 354 "mysql.h"
typedef struct st_mysql_parameters MYSQL_PARAMETERS;
# 309 "mysql.h"
typedef struct st_mysql_res MYSQL_RES;
# 116 "mysql.h"
typedef char * * MYSQL_ROW;
# 140 "mysql.h"
typedef MYSQL_ROWS * MYSQL_ROW_OFFSET;
# 681 "mysql.h"
typedef struct st_mysql_stmt MYSQL_STMT;
# 236 "mysql.h"
typedef struct character_set MY_CHARSET_INFO;
# 184 "mysql_com.h"
typedef struct st_net NET;
# 21 "typelib.h"
typedef struct st_typelib TYPELIB;
# 174 "mysql_com.h"
typedef struct st_vio Vio;
# 57 "mysql.h"
typedef char * gptr;
# 29 "my_list.h"
typedef int (* list_walk_action)(void *, void *);
# 48 "mysql.h"
typedef char my_bool;
# 63 "mysql.h"
typedef int my_socket;
# 125 "mysql.h"
typedef unsigned long long int my_ulonglong;
# 144 "mysql.h"
typedef struct embedded_query_result EMBEDDED_QUERY_RESULT;
# 35 "my_alloc.h"
typedef struct st_mem_root MEM_ROOT;
# 145 "mysql.h"
typedef struct st_mysql_data MYSQL_DATA;
# 750 "mysql.h"
typedef struct st_mysql_methods MYSQL_METHODS;
# 48 "mysql_time.h"
typedef struct st_mysql_time MYSQL_TIME;
# 375 "mysql_com.h"
typedef struct st_udf_args UDF_ARGS;
# 388 "mysql_com.h"
typedef struct st_udf_init UDF_INIT;
# 27 "my_alloc.h"
typedef struct st_used_mem USED_MEM;
# 236 "mysql.h"
struct __attribute__((aligned(__alignof__(unsigned int)), aligned(__alignof__(void *)))) character_set
{
unsigned int number;
unsigned int state;
char const * csname;
char const * name;
char const * comment;
char const * dir;
unsigned int mbminlen;
unsigned int mbmaxlen;
};
# 361 "mysql_com.h"
struct __attribute__((aligned(__alignof__(unsigned long int)), aligned(__alignof__(double)))) rand_struct
{
unsigned long int seed1;
unsigned long int seed2;
unsigned long int max_value;
double max_value_dbl;
};
# 24 "my_list.h"
struct __attribute__((aligned(__alignof__(void *)))) st_list
{
struct st_list * prev;
struct st_list * next;
void * data;
};
# 35 "my_alloc.h"
struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned int)))) st_mem_root
{
USED_MEM * free;
USED_MEM * used;
USED_MEM * pre_alloc;
unsigned int min_malloc;
unsigned int block_size;
unsigned int block_num;
unsigned int first_block_usage;
void (* error_handler)(void);
};
# 251 "mysql.h"
struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long long int)))) st_mysql
{
NET net;
gptr connector_fd;
char * host;
char * user;
char * passwd;
char * unix_socket;
char * server_version;
char * host_info;
char * info;
char * db;
struct charset_info_st * charset;
MYSQL_FIELD * fields;
MEM_ROOT field_alloc;
my_ulonglong affected_rows;
my_ulonglong insert_id;
my_ulonglong extra_info;
unsigned long int thread_id;
unsigned long int packet_length;
unsigned int port;
unsigned long int client_flag;
unsigned long int server_capabilities;
unsigned int protocol_version;
unsigned int field_count;
unsigned int server_status;
unsigned int server_language;
unsigned int warning_count;
struct st_mysql_options options;
enum mysql_status status;
my_bool free_me;
my_bool reconnect;
char scramble[(20 + 1)];
my_bool rpl_pivot;
struct st_mysql * master;
struct st_mysql * next_slave;
struct st_mysql * last_used_slave;
struct st_mysql * last_used_con;
LIST * stmts;
struct st_mysql_methods const * methods;
void * thd;
my_bool * unbuffered_fetch_owner;
};
# 653 "mysql.h"
struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long int)))) st_mysql_bind
{
unsigned long int * length;
my_bool * is_null;
void * buffer;
my_bool * error;
enum enum_field_types buffer_type;
unsigned long int buffer_length;
unsigned char * row_ptr;
unsigned long int offset;
unsigned long int length_value;
unsigned int param_number;
unsigned int pack_length;
my_bool error_value;
my_bool is_unsigned;
my_bool long_data_used;
my_bool is_null_value;
void (* store_param_func)(NET * net, struct st_mysql_bind * param);
void (* fetch_result)(struct st_mysql_bind *, MYSQL_FIELD *, unsigned char * * row);
void (* skip_result)(struct st_mysql_bind *, MYSQL_FIELD *, unsigned char * * row);
};
# 145 "mysql.h"
struct __attribute__((aligned(__alignof__(unsigned long long int)), aligned(__alignof__(void *)))) st_mysql_data
{
my_ulonglong rows;
unsigned int fields;
MYSQL_ROWS * data;
MEM_ROOT alloc;
struct embedded_query_result * embedded_info;
};
# 93 "mysql.h"
struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long int)))) st_mysql_field
{
char * name;
char * org_name;
char * table;
char * org_table;
char * db;
char * catalog;
char * def;
unsigned long int length;
unsigned long int max_length;
unsigned int name_length;
unsigned int org_name_length;
unsigned int table_length;
unsigned int org_table_length;
unsigned int db_length;
unsigned int catalog_length;
unsigned int def_length;
unsigned int flags;
unsigned int decimals;
unsigned int charsetnr;
enum enum_field_types type;
};
# 340 "mysql.h"
struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long int)))) st_mysql_manager
{
NET net;
char * host;
char * user;
char * passwd;
unsigned int port;
my_bool free_me;
my_bool eof;
int cmd_status;
int last_errno;
char * net_buf;
char * net_buf_pos;
char * net_data_end;
int net_buf_size;
char last_error[256];
};
# 750 "mysql.h"
struct __attribute__((aligned(__alignof__(void *)))) st_mysql_methods
{
my_bool (* read_query_result)(MYSQL * mysql);
my_bool (* advanced_command)(MYSQL * mysql, enum enum_server_command, char const * header, unsigned long int, char const * arg, unsigned long int, my_bool, MYSQL_STMT * stmt);
MYSQL_DATA * (* read_rows)(MYSQL * mysql, MYSQL_FIELD * mysql_fields, unsigned int);
MYSQL_RES * (* use_result)(MYSQL * mysql);
void (* fetch_lengths)(unsigned long int * to, MYSQL_ROW, unsigned int);
void (* flush_use_result)(MYSQL * mysql);
MYSQL_FIELD * (* list_fields)(MYSQL * mysql);
my_bool (* read_prepare_result)(MYSQL * mysql, MYSQL_STMT * stmt);
int (* stmt_execute)(MYSQL_STMT * stmt);
int (* read_binary_rows)(MYSQL_STMT * stmt);
int (* unbuffered_fetch)(MYSQL * mysql, char * * row);
void (* free_embedded_thd)(MYSQL * mysql);
char const * (* read_statistics)(MYSQL * mysql);
my_bool (* next_result)(MYSQL * mysql);
int (* read_change_user_result)(MYSQL * mysql, char * buff, char const * passwd);
int (* read_rows_from_cursor)(MYSQL_STMT * stmt);
};
# 167 "mysql.h"
struct __attribute__((aligned(__alignof__(unsigned long int)), aligned(__alignof__(void *)))) st_mysql_options
{
unsigned int connect_timeout;
unsigned int read_timeout;
unsigned int write_timeout;
unsigned int port;
unsigned int protocol;
unsigned long int client_flag;
char * host;
char * user;
char * password;
char * unix_socket;
char * db;
struct st_dynamic_array * init_commands;
char * my_cnf_file;
char * my_cnf_group;
char * charset_dir;
char * charset_name;
char * ssl_key;
char * ssl_cert;
char * ssl_ca;
char * ssl_capath;
char * ssl_cipher;
char * shared_memory_base_name;
unsigned long int max_allowed_packet;
my_bool use_ssl;
my_bool compress;
my_bool named_pipe;
my_bool rpl_probe;
my_bool rpl_parse;
my_bool no_master_reads;
my_bool separate_thread;
enum mysql_option methods_to_use;
char * client_ip;
my_bool secure_auth;
my_bool report_data_truncation;
int (* local_infile_init)(void * *, char const *, void *);
int (* local_infile_read)(void *, char *, unsigned int);
void (* local_infile_end)(void);
int (* local_infile_error)(void *, char *, unsigned int);
void * local_infile_userdata;
};
# 354 "mysql.h"
struct __attribute__((aligned(__alignof__(void *)))) st_mysql_parameters
{
unsigned long int * p_max_allowed_packet;
unsigned long int * p_net_buffer_length;
};
# 309 "mysql.h"
struct __attribute__((aligned(__alignof__(unsigned long long int)), aligned(__alignof__(void *)))) st_mysql_res
{
my_ulonglong row_count;
MYSQL_FIELD * fields;
MYSQL_DATA * data;
MYSQL_ROWS * data_cursor;
unsigned long int * lengths;
MYSQL * handle;
MEM_ROOT field_alloc;
unsigned int field_count;
unsigned int current_field;
MYSQL_ROW row;
MYSQL_ROW current_row;
my_bool eof;
my_bool unbuffered_fetch_cancelled;
struct st_mysql_methods const * methods;
};
# 134 "mysql.h"
struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long int)))) st_mysql_rows
{
struct st_mysql_rows * next;
MYSQL_ROW data;
unsigned long int length;
};
# 681 "mysql.h"
struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long long int)))) st_mysql_stmt
{
MEM_ROOT mem_root;
LIST list;
MYSQL * mysql;
MYSQL_BIND * params;
MYSQL_BIND * bind;
MYSQL_FIELD * fields;
MYSQL_DATA result;
MYSQL_ROWS * data_cursor;
my_ulonglong affected_rows;
my_ulonglong insert_id;
int (* read_row_func)(struct st_mysql_stmt * stmt, unsigned char * * row);
unsigned long int stmt_id;
unsigned long int flags;
unsigned long int prefetch_rows;
unsigned int server_status;
unsigned int last_errno;
unsigned int param_count;
unsigned int field_count;
enum enum_mysql_stmt_state state;
char last_error[512];
char sqlstate[(5 + 1)];
my_bool send_types_to_server;
my_bool bind_param_done;
unsigned char bind_result_done;
my_bool unbuffered_fetch_cancelled;
my_bool update_max_length;
};
# 48 "mysql_time.h"
struct __attribute__((aligned(__alignof__(unsigned long int)))) st_mysql_time
{
unsigned int year;
unsigned int month;
unsigned int day;
unsigned int hour;
unsigned int minute;
unsigned int second;
unsigned long int second_part;
my_bool neg;
enum enum_mysql_timestamp_type time_type;
};
# 184 "mysql_com.h"
struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long int)))) st_net
{
Vio * vio;
unsigned char * buff;
unsigned char * buff_end;
unsigned char * write_pos;
unsigned char * read_pos;
my_socket fd;
unsigned long int max_packet;
unsigned long int max_packet_size;
unsigned int pkt_nr;
unsigned int compress_pkt_nr;
unsigned int write_timeout;
unsigned int read_timeout;
unsigned int retry_count;
int fcntl;
my_bool compress;
unsigned long int remain_in_buf;
unsigned long int length;
unsigned long int buf_length;
unsigned long int where_b;
unsigned int * return_status;
unsigned char reading_or_writing;
char save_char;
my_bool no_send_ok;
my_bool no_send_eof;
my_bool no_send_error;
char last_error[512];
char sqlstate[(5 + 1)];
unsigned int last_errno;
unsigned char error;
gptr query_cache_query;
my_bool report_error;
my_bool return_errno;
};
# 21 "typelib.h"
struct __attribute__((aligned(__alignof__(unsigned int)), aligned(__alignof__(void *)))) st_typelib
{
unsigned int count;
char const * name;
char const * * type_names;
unsigned int * type_lengths;
};
# 375 "mysql_com.h"
struct __attribute__((aligned(__alignof__(unsigned int)), aligned(__alignof__(void *)))) st_udf_args
{
unsigned int arg_count;
enum Item_result * arg_type;
char * * args;
unsigned long int * lengths;
char * maybe_null;
char * * attributes;
unsigned long int * attribute_lengths;
};
# 388 "mysql_com.h"
struct __attribute__((aligned(__alignof__(unsigned long int)), aligned(__alignof__(void *)))) st_udf_init
{
my_bool maybe_null;
unsigned int decimals;
unsigned long int max_length;
char * ptr;
my_bool const_item;
};
# 27 "my_alloc.h"
struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned int)))) st_used_mem
{
struct st_used_mem * next;
unsigned int left;
unsigned int size;
};
# 372 "mysql_com.h"
enum Item_result
{
STRING_RESULT = 0,
REAL_RESULT = 1,
INT_RESULT = 2,
ROW_RESULT = 3,
DECIMAL_RESULT = 4,
};
# 318 "mysql_com.h"
enum enum_cursor_type
{
CURSOR_TYPE_NO_CURSOR = 0,
CURSOR_TYPE_READ_ONLY = 1,
CURSOR_TYPE_FOR_UPDATE = 2,
CURSOR_TYPE_SCROLLABLE = 4,
};
# 231 "mysql_com.h"
enum enum_field_types
{
MYSQL_TYPE_DECIMAL = 0,
MYSQL_TYPE_TINY = 1,
MYSQL_TYPE_SHORT = 2,
MYSQL_TYPE_LONG = 3,
MYSQL_TYPE_FLOAT = 4,
MYSQL_TYPE_DOUBLE = 5,
MYSQL_TYPE_NULL = 6,
MYSQL_TYPE_TIMESTAMP = 7,
MYSQL_TYPE_LONGLONG = 8,
MYSQL_TYPE_INT24 = 9,
MYSQL_TYPE_DATE = 10,
MYSQL_TYPE_TIME = 11,
MYSQL_TYPE_DATETIME = 12,
MYSQL_TYPE_YEAR = 13,
MYSQL_TYPE_NEWDATE = 14,
MYSQL_TYPE_VARCHAR = 15,
MYSQL_TYPE_BIT = 16,
MYSQL_TYPE_NEWDECIMAL = 246,
MYSQL_TYPE_ENUM = 247,
MYSQL_TYPE_SET = 248,
MYSQL_TYPE_TINY_BLOB = 249,
MYSQL_TYPE_MEDIUM_BLOB = 250,
MYSQL_TYPE_LONG_BLOB = 251,
MYSQL_TYPE_BLOB = 252,
MYSQL_TYPE_VAR_STRING = 253,
MYSQL_TYPE_STRING = 254,
MYSQL_TYPE_GEOMETRY = 255,
};
# 328 "mysql_com.h"
enum enum_mysql_set_option
{
MYSQL_OPTION_MULTI_STATEMENTS_ON = 0,
MYSQL_OPTION_MULTI_STATEMENTS_OFF = 1,
};
# 583 "mysql.h"
enum enum_mysql_stmt_state
{
MYSQL_STMT_INIT_DONE = 1,
MYSQL_STMT_PREPARE_DONE = 2,
MYSQL_STMT_EXECUTE_DONE = 3,
MYSQL_STMT_FETCH_DONE = 4,
};
# 29 "mysql_time.h"
enum enum_mysql_timestamp_type
{
MYSQL_TIMESTAMP_NONE = -(2),
MYSQL_TIMESTAMP_ERROR = -(1),
MYSQL_TIMESTAMP_DATE = 0,
MYSQL_TIMESTAMP_DATETIME = 1,
MYSQL_TIMESTAMP_TIME = 2,
};
# 52 "mysql_com.h"
enum enum_server_command
{
COM_SLEEP = 0,
COM_QUIT = 1,
COM_INIT_DB = 2,
COM_QUERY = 3,
COM_FIELD_LIST = 4,
COM_CREATE_DB = 5,
COM_DROP_DB = 6,
COM_REFRESH = 7,
COM_SHUTDOWN = 8,
COM_STATISTICS = 9,
COM_PROCESS_INFO = 10,
COM_CONNECT = 11,
COM_PROCESS_KILL = 12,
COM_DEBUG = 13,
COM_PING = 14,
COM_TIME = 15,
COM_DELAYED_INSERT = 16,
COM_CHANGE_USER = 17,
COM_BINLOG_DUMP = 18,
COM_TABLE_DUMP = 19,
COM_CONNECT_OUT = 20,
COM_REGISTER_SLAVE = 21,
COM_STMT_PREPARE = 22,
COM_STMT_EXECUTE = 23,
COM_STMT_SEND_LONG_DATA = 24,
COM_STMT_CLOSE = 25,
COM_STMT_RESET = 26,
COM_SET_OPTION = 27,
COM_STMT_FETCH = 28,
COM_DAEMON = 29,
COM_END = 30,
};
# 727 "mysql.h"
enum enum_stmt_attr_type
{
STMT_ATTR_UPDATE_MAX_LENGTH = 0,
STMT_ATTR_CURSOR_TYPE = 1,
STMT_ATTR_PREFETCH_ROWS = 2,
};
# 293 "mysql_com.h"
enum mysql_enum_shutdown_level
{
SHUTDOWN_DEFAULT = 0,
SHUTDOWN_WAIT_CONNECTIONS = (unsigned char)((1 << 0)),
SHUTDOWN_WAIT_TRANSACTIONS = (unsigned char)((1 << 1)),
SHUTDOWN_WAIT_UPDATES = (unsigned char)((1 << 3)),
SHUTDOWN_WAIT_ALL_BUFFERS = ((unsigned char)((1 << 3)) << 1),
SHUTDOWN_WAIT_CRITICAL_BUFFERS = (((unsigned char)((1 << 3)) << 1) + 1),
KILL_CONNECTION = 255,
};
# 154 "mysql.h"
enum mysql_option
{
MYSQL_OPT_CONNECT_TIMEOUT = 0,
MYSQL_OPT_COMPRESS = 1,
MYSQL_OPT_NAMED_PIPE = 2,
MYSQL_INIT_COMMAND = 3,
MYSQL_READ_DEFAULT_FILE = 4,
MYSQL_READ_DEFAULT_GROUP = 5,
MYSQL_SET_CHARSET_DIR = 6,
MYSQL_SET_CHARSET_NAME = 7,
MYSQL_OPT_LOCAL_INFILE = 8,
MYSQL_OPT_PROTOCOL = 9,
MYSQL_SHARED_MEMORY_BASE_NAME = 10,
MYSQL_OPT_READ_TIMEOUT = 11,
MYSQL_OPT_WRITE_TIMEOUT = 12,
MYSQL_OPT_USE_RESULT = 13,
MYSQL_OPT_USE_REMOTE_CONNECTION = 14,
MYSQL_OPT_USE_EMBEDDED_CONNECTION = 15,
MYSQL_OPT_GUESS_CONNECTION = 16,
MYSQL_SET_CLIENT_IP = 17,
MYSQL_SECURE_AUTH = 18,
MYSQL_REPORT_DATA_TRUNCATION = 19,
MYSQL_OPT_RECONNECT = 20,
MYSQL_OPT_SSL_VERIFY_SERVER_CERT = 21,
};
# 221 "mysql.h"
enum mysql_protocol_type
{
MYSQL_PROTOCOL_DEFAULT = 0,
MYSQL_PROTOCOL_TCP = 1,
MYSQL_PROTOCOL_SOCKET = 2,
MYSQL_PROTOCOL_PIPE = 3,
MYSQL_PROTOCOL_MEMORY = 4,
};
# 231 "mysql.h"
enum mysql_rpl_type
{
MYSQL_RPL_MASTER = 0,
MYSQL_RPL_SLAVE = 1,
MYSQL_RPL_ADMIN = 2,
};
# 216 "mysql.h"
enum mysql_status
{
MYSQL_STATUS_READY = 0,
MYSQL_STATUS_GET_RESULT = 1,
MYSQL_STATUS_USE_RESULT = 2,
};
# 427 "mysql_com.h"
extern my_bool check_scramble(char const * reply, char const * message, unsigned char const * hash_stage2);
# 420 "mysql_com.h"
extern my_bool check_scramble_323(char const *, char const * message, unsigned long int * salt);
# 415 "mysql_com.h"
extern void create_random_string(char * to, unsigned int, struct rand_struct * rand_st);
# 28 "typelib.h"
extern int find_type(char * x, TYPELIB * typelib, unsigned int);
# 429 "mysql_com.h"
extern void get_salt_from_password(unsigned char * res, char const * password);
# 422 "mysql_com.h"
extern void get_salt_from_password_323(unsigned long int * res, char const * password);
# 435 "mysql_com.h"
extern char * get_tty_password(char const * opt_message);
# 30 "typelib.h"
extern char const * get_type(TYPELIB * typelib, unsigned int);
# 417 "mysql_com.h"
extern void hash_password(unsigned long int * to, char const * password, unsigned int);
# 31 "my_list.h"
extern LIST * list_add(LIST * root, LIST * element);
# 33 "my_list.h"
extern LIST * list_cons(void * data, LIST * root);
# 32 "my_list.h"
extern LIST * list_delete(LIST * root, LIST * element);
# 35 "my_list.h"
extern void list_free(LIST * root, unsigned int);
# 36 "my_list.h"
extern unsigned int list_length(LIST *);
# 34 "my_list.h"
extern LIST * list_reverse(LIST * root);
# 37 "my_list.h"
extern int list_walk(LIST *, list_walk_action, gptr);
# 430 "mysql_com.h"
extern void make_password_from_salt(char * to, unsigned char const * hash_stage2);
# 423 "mysql_com.h"
extern void make_password_from_salt_323(char * to, unsigned long int const * salt);
# 425 "mysql_com.h"
extern void make_scrambled_password(char * to, char const * password);
# 418 "mysql_com.h"
extern void make_scrambled_password_323(char * to, char const * password);
# 29 "typelib.h"
extern void make_type(char * to, unsigned int, TYPELIB * typelib);
# 358 "mysql_com.h"
extern int my_connect(my_socket, struct sockaddr const * name, unsigned int, unsigned int);
# 340 "mysql_com.h"
extern my_bool my_net_init(NET * net, Vio * vio);
# 341 "mysql_com.h"
extern void my_net_local_init(NET * net);
# 351 "mysql_com.h"
extern unsigned long int my_net_read(NET * net);
# 346 "mysql_com.h"
extern my_bool my_net_write(NET * net, char const * packet, unsigned long int);
# 414 "mysql_com.h"
extern double my_rnd(struct rand_struct *);
# 441 "mysql_com.h"
extern void my_thread_end(void);
# 440 "mysql_com.h"
extern my_bool my_thread_init(void);
# 559 "mysql.h"
extern void myodbc_remove_escape(MYSQL * mysql, char * name);
# 501 "mysql.h"
extern int mysql_add_slave(MYSQL * mysql, char const * host, unsigned int, char const * user, char const * passwd);
# 410 "mysql.h"
extern my_ulonglong mysql_affected_rows(MYSQL * mysql);
# 823 "mysql.h"
extern my_bool mysql_autocommit(MYSQL * mysql, my_bool);
# 426 "mysql.h"
extern my_bool mysql_change_user(MYSQL * mysql, char const * user, char const * passwd, char const * db);
# 418 "mysql.h"
extern char const * mysql_character_set_name(MYSQL * mysql);
# 826 "mysql.h"
extern void mysql_close(MYSQL * sock);
# 821 "mysql.h"
extern my_bool mysql_commit(MYSQL * mysql);
# 530 "mysql.h"
extern void mysql_data_seek(MYSQL_RES * result, my_ulonglong);
# 548 "mysql.h"
extern void mysql_debug(char const * debug);
# 487 "mysql.h"
extern void mysql_disable_reads_from_master(MYSQL * mysql);
# 481 "mysql.h"
extern void mysql_disable_rpl_parse(MYSQL * mysql);
# 509 "mysql.h"
extern int mysql_dump_debug_info(MYSQL * mysql);
# 561 "mysql.h"
extern my_bool mysql_embedded(void);
# 486 "mysql.h"
extern void mysql_enable_reads_from_master(MYSQL * mysql);
# 480 "mysql.h"
extern void mysql_enable_rpl_parse(MYSQL * mysql);
# 402 "mysql.h"
extern my_bool mysql_eof(MYSQL_RES * res);
# 412 "mysql.h"
extern unsigned int mysql_errno(MYSQL * mysql);
# 436 "mysql_com.h"
extern char const * mysql_errno_to_sqlstate(unsigned int);
# 413 "mysql.h"
extern char const * mysql_error(MYSQL * mysql);
# 541 "mysql.h"
extern unsigned long int mysql_escape_string(char * to, char const * from, unsigned long int);
# 538 "mysql.h"
extern MYSQL_FIELD * mysql_fetch_field(MYSQL_RES * result);
# 403 "mysql.h"
extern MYSQL_FIELD * mysql_fetch_field_direct(MYSQL_RES * res, unsigned int);
# 405 "mysql.h"
extern MYSQL_FIELD * mysql_fetch_fields(MYSQL_RES * res);
# 537 "mysql.h"
extern unsigned long int * mysql_fetch_lengths(MYSQL_RES * result);
# 536 "mysql.h"
extern MYSQL_ROW mysql_fetch_row(MYSQL_RES * result);
# 409 "mysql.h"
extern unsigned int mysql_field_count(MYSQL * mysql);
# 534 "mysql.h"
extern MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES * result, MYSQL_FIELD_OFFSET);
# 407 "mysql.h"
extern MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES * res);
# 529 "mysql.h"
extern void mysql_free_result(MYSQL_RES * result);
# 454 "mysql.h"
extern void mysql_get_character_set_info(MYSQL * mysql, MY_CHARSET_INFO * charset);
# 519 "mysql.h"
extern char const * mysql_get_client_info(void);
# 520 "mysql.h"
extern unsigned long int mysql_get_client_version(void);
# 521 "mysql.h"
extern char const * mysql_get_host_info(MYSQL * mysql);
# 384 "mysql.h"
extern MYSQL_PARAMETERS * mysql_get_parameters(void);
# 523 "mysql.h"
extern unsigned int mysql_get_proto_info(MYSQL * mysql);
# 518 "mysql.h"
extern char const * mysql_get_server_info(MYSQL * mysql);
# 522 "mysql.h"
extern unsigned long int mysql_get_server_version(MYSQL * mysql);
# 425 "mysql.h"
extern char const * mysql_get_ssl_cipher(MYSQL * mysql);
# 543 "mysql.h"
extern unsigned long int mysql_hex_string(char * to, char const * from, unsigned long int);
# 416 "mysql.h"
extern char const * mysql_info(MYSQL * mysql);
# 421 "mysql.h"
extern MYSQL * mysql_init(MYSQL * mysql);
# 411 "mysql.h"
extern my_ulonglong mysql_insert_id(MYSQL * mysql);
# 512 "mysql.h"
extern int mysql_kill(MYSQL * mysql, unsigned long int);
# 524 "mysql.h"
extern MYSQL_RES * mysql_list_dbs(MYSQL * mysql, char const * wild);
# 539 "mysql.h"
extern MYSQL_RES * mysql_list_fields(MYSQL * mysql, char const * table, char const * wild);
# 526 "mysql.h"
extern MYSQL_RES * mysql_list_processes(MYSQL * mysql);
# 525 "mysql.h"
extern MYSQL_RES * mysql_list_tables(MYSQL * mysql, char const * wild);
# 568 "mysql.h"
extern void mysql_manager_close(MYSQL_MANAGER * con);
# 569 "mysql.h"
extern int mysql_manager_command(MYSQL_MANAGER * con, char const * cmd, int);
# 563 "mysql.h"
extern MYSQL_MANAGER * mysql_manager_connect(MYSQL_MANAGER * con, char const * host, char const * user, char const * passwd, unsigned int);
# 571 "mysql.h"
extern int mysql_manager_fetch_line(MYSQL_MANAGER * con, char * res_buf, int);
# 562 "mysql.h"
extern MYSQL_MANAGER * mysql_manager_init(MYSQL_MANAGER * con);
# 445 "mysql.h"
extern my_bool mysql_master_query(MYSQL * mysql, char const * q, unsigned long int);
# 447 "mysql.h"
extern my_bool mysql_master_send_query(MYSQL * mysql, char const * q, unsigned long int);
# 824 "mysql.h"
extern my_bool mysql_more_results(MYSQL * mysql);
# 825 "mysql.h"
extern int mysql_next_result(MYSQL * mysql);
# 401 "mysql.h"
extern unsigned int mysql_num_fields(MYSQL_RES * res);
# 400 "mysql.h"
extern my_ulonglong mysql_num_rows(MYSQL_RES * res);
# 549 "mysql.h"
extern char * mysql_odbc_escape_string(MYSQL * mysql, char * to, unsigned long int, char const * from, unsigned long int, void * param, char * (* extend_buffer)(void *, char * to, unsigned long int * length));
# 527 "mysql.h"
extern int mysql_options(MYSQL * mysql, enum mysql_option, char const * arg);
# 516 "mysql.h"
extern int mysql_ping(MYSQL * mysql);
# 75 "mysql.h"
extern unsigned int mysql_port;
# 436 "mysql.h"
extern int mysql_query(MYSQL * mysql, char const * q);
# 574 "mysql.h"
extern my_bool mysql_read_query_result(MYSQL * mysql);
# 489 "mysql.h"
extern my_bool mysql_reads_from_master_enabled(MYSQL * mysql);
# 428 "mysql.h"
extern MYSQL * mysql_real_connect(MYSQL * mysql, char const * host, char const * user, char const * passwd, char const * db, unsigned int, char const * unix_socket, unsigned long int);
# 545 "mysql.h"
extern unsigned long int mysql_real_escape_string(MYSQL * mysql, char * to, char const * from, unsigned long int);
# 439 "mysql.h"
extern int mysql_real_query(MYSQL * mysql, char const * q, unsigned long int);
# 510 "mysql.h"
extern int mysql_refresh(MYSQL * mysql, unsigned int);
# 822 "mysql.h"
extern my_bool mysql_rollback(MYSQL * mysql);
# 532 "mysql.h"
extern MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES * result, MYSQL_ROW_OFFSET);
# 406 "mysql.h"
extern MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES * res);
# 483 "mysql.h"
extern int mysql_rpl_parse_enabled(MYSQL * mysql);
# 494 "mysql.h"
extern my_bool mysql_rpl_probe(MYSQL * mysql);
# 491 "mysql.h"
extern enum mysql_rpl_type mysql_rpl_query_type(char const * q, int);
# 435 "mysql.h"
extern int mysql_select_db(MYSQL * mysql, char const * db);
# 437 "mysql.h"
extern int mysql_send_query(MYSQL * mysql, char const * q, unsigned long int);
# 371 "mysql.h"
extern void mysql_server_end(void);
# 370 "mysql.h"
extern int mysql_server_init(int, char * * argv, char * * groups);
# 419 "mysql.h"
extern int mysql_set_character_set(MYSQL * mysql, char const * csname);
# 472 "mysql.h"
extern void mysql_set_local_infile_default(MYSQL * mysql);
# 461 "mysql.h"
extern void mysql_set_local_infile_handler(MYSQL * mysql, int (* local_infile_init)(void * *, char const *, void *), int (* local_infile_read)(void *, char *, unsigned int), void (* local_infile_end)(void), int (* local_infile_error)(void *, char *, unsigned int), void *);
# 497 "mysql.h"
extern int mysql_set_master(MYSQL * mysql, char const * host, unsigned int, char const * user, char const * passwd);
# 513 "mysql.h"
extern int mysql_set_server_option(MYSQL * mysql, enum enum_mysql_set_option);
# 506 "mysql.h"
extern int mysql_shutdown(MYSQL * mysql, enum mysql_enum_shutdown_level);
# 450 "mysql.h"
extern my_bool mysql_slave_query(MYSQL * mysql, char const * q, unsigned long int);
# 452 "mysql.h"
extern my_bool mysql_slave_send_query(MYSQL * mysql, char const * q, unsigned long int);
# 414 "mysql.h"
extern char const * mysql_sqlstate(MYSQL * mysql);
# 422 "mysql.h"
extern my_bool mysql_ssl_set(MYSQL * mysql, char const * key, char const * cert, char const * ca, char const * capath, char const * cipher);
# 517 "mysql.h"
extern char const * mysql_stat(MYSQL * mysql);
# 817 "mysql.h"
extern my_ulonglong mysql_stmt_affected_rows(MYSQL_STMT * stmt);
# 795 "mysql.h"
extern my_bool mysql_stmt_attr_get(MYSQL_STMT * stmt, enum enum_stmt_attr_type, void * attr);
# 792 "mysql.h"
extern my_bool mysql_stmt_attr_set(MYSQL_STMT * stmt, enum enum_stmt_attr_type, void const * attr);
# 798 "mysql.h"
extern my_bool mysql_stmt_bind_param(MYSQL_STMT * stmt, MYSQL_BIND * bnd);
# 799 "mysql.h"
extern my_bool mysql_stmt_bind_result(MYSQL_STMT * stmt, MYSQL_BIND * bnd);
# 800 "mysql.h"
extern my_bool mysql_stmt_close(MYSQL_STMT * stmt);
# 815 "mysql.h"
extern void mysql_stmt_data_seek(MYSQL_STMT * stmt, my_ulonglong);
# 809 "mysql.h"
extern unsigned int mysql_stmt_errno(MYSQL_STMT * stmt);
# 810 "mysql.h"
extern char const * mysql_stmt_error(MYSQL_STMT * stmt);
# 785 "mysql.h"
extern int mysql_stmt_execute(MYSQL_STMT * stmt);
# 786 "mysql.h"
extern int mysql_stmt_fetch(MYSQL_STMT * stmt);
# 787 "mysql.h"
extern int mysql_stmt_fetch_column(MYSQL_STMT * stmt, MYSQL_BIND * bind, unsigned int, unsigned long int);
# 819 "mysql.h"
extern unsigned int mysql_stmt_field_count(MYSQL_STMT * stmt);
# 802 "mysql.h"
extern my_bool mysql_stmt_free_result(MYSQL_STMT * stmt);
# 782 "mysql.h"
extern MYSQL_STMT * mysql_stmt_init(MYSQL * mysql);
# 818 "mysql.h"
extern my_ulonglong mysql_stmt_insert_id(MYSQL_STMT * stmt);
# 816 "mysql.h"
extern my_ulonglong mysql_stmt_num_rows(MYSQL_STMT * stmt);
# 791 "mysql.h"
extern unsigned long int mysql_stmt_param_count(MYSQL_STMT * stmt);
# 808 "mysql.h"
extern MYSQL_RES * mysql_stmt_param_metadata(MYSQL_STMT * stmt);
# 783 "mysql.h"
extern int mysql_stmt_prepare(MYSQL_STMT * stmt, char const * query, unsigned long int);
# 801 "mysql.h"
extern my_bool mysql_stmt_reset(MYSQL_STMT * stmt);
# 807 "mysql.h"
extern MYSQL_RES * mysql_stmt_result_metadata(MYSQL_STMT * stmt);
# 812 "mysql.h"
extern MYSQL_ROW_OFFSET mysql_stmt_row_seek(MYSQL_STMT * stmt, MYSQL_ROW_OFFSET);
# 814 "mysql.h"
extern MYSQL_ROW_OFFSET mysql_stmt_row_tell(MYSQL_STMT * stmt);
# 803 "mysql.h"
extern my_bool mysql_stmt_send_long_data(MYSQL_STMT * stmt, unsigned int, char const * data, unsigned long int);
# 811 "mysql.h"
extern char const * mysql_stmt_sqlstate(MYSQL_STMT * stmt);
# 790 "mysql.h"
extern int mysql_stmt_store_result(MYSQL_STMT * stmt);
# 441 "mysql.h"
extern MYSQL_RES * mysql_store_result(MYSQL * mysql);
# 393 "mysql.h"
extern void mysql_thread_end(void);
# 417 "mysql.h"
extern unsigned long int mysql_thread_id(MYSQL * mysql);
# 392 "mysql.h"
extern my_bool mysql_thread_init(void);
# 560 "mysql.h"
extern unsigned int mysql_thread_safe(void);
# 76 "mysql.h"
extern char * mysql_unix_port;
# 442 "mysql.h"
extern MYSQL_RES * mysql_use_result(MYSQL * mysql);
# 415 "mysql.h"
extern unsigned int mysql_warning_count(MYSQL * mysql);
# 343 "mysql_com.h"
extern void net_clear(NET * net);
# 342 "mysql_com.h"
extern void net_end(NET * net);
# 345 "mysql_com.h"
extern my_bool net_flush(NET * net);
# 350 "mysql_com.h"
extern int net_real_write(NET * net, char const * packet, unsigned long int);
# 344 "mysql_com.h"
extern my_bool net_realloc(NET * net, unsigned long int);
# 347 "mysql_com.h"
extern my_bool net_write_command(NET * net, unsigned char, char const * header, unsigned long int, char const * packet, unsigned long int);
# 431 "mysql_com.h"
extern char * octet2hex(char * to, char const * str, unsigned int);
# 412 "mysql_com.h"
extern void randominit(struct rand_struct *, unsigned long int, unsigned long int);
# 426 "mysql_com.h"
extern void scramble(char * to, char const * message, char const * password);
# 419 "mysql_com.h"
extern void scramble_323(char * to, char const * message, char const * password);
# 32 "typelib.h"
extern TYPELIB sql_protocol_typelib;

View File

@ -7,6 +7,8 @@
-- source include/master-slave.inc
let $SERVER_VERSION=`select version()`;
create table t1 (a int);
insert into t1 values (10);
create table t2 (a int);

View File

@ -36,6 +36,7 @@ SELECT * FROM t1;
--echo **** On Master ****
connection master;
DROP TABLE t1;
let $SERVER_VERSION=`select version()`;
--replace_result $SERVER_VERSION SERVER_VERSION
--replace_regex /\/\* xid=[0-9]+ \*\//\/* xid= *\// /table_id: [0-9]+/table_id: #/
SHOW BINLOG EVENTS;

View File

@ -0,0 +1,15 @@
# Connect to both master and slave
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,);
vertical_results;
echo == MASTER ===========================================================;
connection master;
show master status;
show slave status;
echo == SLAVE ===========================================================;
connection slave;
show master status;
show slave status;

View File

@ -11,8 +11,8 @@ insert into t1 values('ab_def');
insert into t1 values('abc_ef');
insert into t1 values('abcd_f');
insert into t1 values('abcde_');
-- should return ab_def
# should return ab_def
select c1 as c1u from t1 where c1 like 'ab\_def';
-- should return ab_def
# should return ab_def
select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
drop table t1;

View File

@ -31,13 +31,6 @@ eval SET SESSION STORAGE_ENGINE = $engine_type;
drop table if exists t1,t2,t1m,t1i,t2m,t2i,t4;
--enable_warnings
#
# Bug#17530: Incorrect key truncation on table creation caused server crash.
#
create table t1(f1 varchar(800) binary not null, key(f1))
character set utf8 collate utf8_general_ci;
insert into t1 values('aaa');
drop table t1;
# BUG#16798: Uninitialized row buffer reads in ref-or-null optimizer
# (repeatable only w/innodb).
@ -153,6 +146,31 @@ INSERT INTO `t2`(`id1`,`id2`,`id3`,`id4`) VALUES
SELECT `id1` FROM `t1` WHERE `id1` NOT IN (SELECT `id1` FROM `t2` WHERE `id2` = 1 AND `id3` = 2);
DROP TABLE t1, t2;
#
# Bug #22728 - Handler_rollback value is growing
#
let $before= `show /*!50002 GLOBAL */ status like 'Handler_rollback'`;
create table t1 (c1 int) engine=innodb;
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con2;
handler t1 open;
handler t1 read first;
disconnect con2;
connection con1;
let $after= `show /*!50002 GLOBAL */ status like 'Handler_rollback'`;
# Compare the before and after value, it should be equal
--disable_query_log
eval select STRCMP("$before", "$after") as "Before and after comparison";
--enable_query_log
connection default;
drop table t1;
disconnect con1;
--echo End of 4.1 tests
#
# Bug #12882 min/max inconsistent on empty table
#
@ -259,6 +277,36 @@ select distinct a1 from t4 where pk_col not in (1,2,3,4);
drop table t1,t4;
#
# BUG#18819: DELETE IGNORE hangs on foreign key parent delete
#
# The bug itself does not relate to InnoDB, but we have to use foreign
# keys to reproduce it.
#
--disable_warnings
DROP TABLE IF EXISTS t2, t1;
--enable_warnings
CREATE TABLE t1 (i INT NOT NULL PRIMARY KEY) ENGINE= InnoDB;
CREATE TABLE t2 (
i INT NOT NULL,
FOREIGN KEY (i) REFERENCES t1 (i) ON DELETE NO ACTION
) ENGINE= InnoDB;
INSERT INTO t1 VALUES (1);
INSERT INTO t2 VALUES (1);
DELETE IGNORE FROM t1 WHERE i = 1;
SELECT * FROM t1, t2;
DROP TABLE t2, t1;
--echo End of 4.1 tests.
#
# Bug #6142: a problem with the empty innodb table
# (was part of group_min_max.test)
@ -395,6 +443,28 @@ create table t1(f1 varchar(800) binary not null, key(f1))
insert into t1 values('aaa');
drop table t1;
#
# Bug#22781: SQL_BIG_RESULT fails to influence sort plan
#
CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c FLOAT, KEY b(b)) ENGINE = INNODB;
INSERT INTO t1 VALUES ( 1 , 1 , 1);
INSERT INTO t1 SELECT a + 1 , MOD(a + 1 , 20), 1 FROM t1;
INSERT INTO t1 SELECT a + 2 , MOD(a + 2 , 20), 1 FROM t1;
INSERT INTO t1 SELECT a + 4 , MOD(a + 4 , 20), 1 FROM t1;
INSERT INTO t1 SELECT a + 8 , MOD(a + 8 , 20), 1 FROM t1;
INSERT INTO t1 SELECT a + 16, MOD(a + 16, 20), 1 FROM t1;
INSERT INTO t1 SELECT a + 32, MOD(a + 32, 20), 1 FROM t1;
INSERT INTO t1 SELECT a + 64, MOD(a + 64, 20), 1 FROM t1;
EXPLAIN SELECT b, SUM(c) FROM t1 GROUP BY b;
EXPLAIN SELECT SQL_BIG_RESULT b, SUM(c) FROM t1 GROUP BY b;
DROP TABLE t1;
--echo End of 5.0 tests
# Fix for BUG#19243 "wrong LAST_INSERT_ID() after ON DUPLICATE KEY
# UPDATE": if the row is updated, it's like a regular UPDATE:
# LAST_INSERT_ID() is not affected.
@ -446,3 +516,5 @@ select last_insert_id();
select * from t2;
drop table t2;
--echo End of 5.1 tests

View File

@ -1,137 +0,0 @@
let $1 = 10;
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
while ($1)
{
echo $1;
dec $1;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,59 @@
#
# Bug#21114 (Foreign key creation fails to table with name format)
#
# Trying to trick the parser into thinking $FCT(...) is a function call,
# which is not in the CREATE TABLE and FOREIGN KEY ... REFERENCES syntax
#
# Usage :
#
# let $engine_type=InnoDb;
# let $verbose=1;
# let $FCT= <value_1>;
# -- source parser_stress_func.inc
# let $FCT= <value_2>;
# -- source parser_stress_func.inc
# let $verbose=0;
# let $FCT= <value_3>;
# -- source parser_stress_func.inc
# let $FCT= <value_4>;
# -- source parser_stress_func.inc
-- disable_warnings
eval drop table if exists $FCT;
drop table if exists bug21114_child;
-- enable_warnings
--disable_query_log
--disable_result_log
eval CREATE TABLE $FCT(
col1 int not null,
col2 int not null,
col3 varchar(10),
CONSTRAINT pk PRIMARY KEY (col1, col2)
) ENGINE $engine_type;
eval CREATE TABLE bug21114_child(
pk int not null,
fk_col1 int not null,
fk_col2 int not null,
fk_col3 int not null,
fk_col4 int not null,
CONSTRAINT fk_fct FOREIGN KEY (fk_col1, fk_col2)
REFERENCES $FCT(col1, col2),
CONSTRAINT fk_fct_space FOREIGN KEY (fk_col3, fk_col4)
REFERENCES $FCT (col1, col2)
) ENGINE $engine_type;
--enable_query_log
--enable_result_log
if ($verbose)
{
eval SHOW CREATE TABLE $FCT;
SHOW CREATE TABLE bug21114_child;
}
DROP TABLE bug21114_child;
eval DROP TABLE $FCT;

View File

@ -1 +0,0 @@
echo here is the sourced script;

View File

@ -1 +0,0 @@
--source include/sourced.inc

View File

@ -119,4 +119,13 @@ END|
---------------------------------------------------------------------------
CREATE FUNCTION sp_vars_div_zero() RETURNS INTEGER
BEGIN
DECLARE div_zero INTEGER;
SELECT 1/0 INTO div_zero;
RETURN div_zero;
END|
---------------------------------------------------------------------------
delimiter ;|

View File

@ -0,0 +1,25 @@
#
# Run a query over and over until it suceeds ot timeout occurs
#
let $counter= 100;
disable_abort_on_error;
disable_query_log;
disable_result_log;
eval $query;
while ($mysql_errno)
{
eval $query;
sleep 0.1;
dec $counter;
if (!$counter)
{
die("Waited too long for query to suceed");
}
}
enable_abort_on_error;
enable_query_log;
enable_result_log;

View File

@ -59,7 +59,9 @@ sub collect_test_cases ($) {
if ( @::opt_cases )
{
foreach my $tname ( @::opt_cases ) { # Run in specified order, no sort
foreach my $tname ( @::opt_cases )
{
# Run in specified order, no sort
my $elem= undef;
my $component_id= undef;
@ -127,7 +129,8 @@ sub collect_test_cases ($) {
}
else
{
foreach my $elem ( sort readdir(TESTDIR) ) {
foreach my $elem ( sort readdir(TESTDIR) )
{
my $component_id= undef;
my $tname= undef;
@ -144,7 +147,9 @@ sub collect_test_cases ($) {
next;
}
next if $::opt_do_test and ! defined mtr_match_prefix($elem,$::opt_do_test);
# Skip tests that does not match the --do-test= filter
next if $::opt_do_test and
! defined mtr_match_prefix($elem,$::opt_do_test);
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled,
$component_id);
@ -152,43 +157,79 @@ sub collect_test_cases ($) {
closedir TESTDIR;
}
# To speed things up, we sort first in if the test require a restart
# or not, second in alphanumeric order.
# Reorder the test cases in an order that will make them faster to run
if ( $::opt_reorder )
{
my %sort_criteria;
my $tinfo;
# Make a mapping of test name to a string that represents how that test
# should be sorted among the other tests. Put the most important criterion
# first, then a sub-criterion, then sub-sub-criterion, et c.
foreach $tinfo (@$cases)
foreach my $tinfo (@$cases)
{
my @this_criteria = ();
my @criteria = ();
# Append the criteria for sorting, in order of importance.
push(@this_criteria, join("!", sort @{$tinfo->{'master_opt'}}) . "~"); # Ending with "~" makes empty sort later than filled
push(@this_criteria, "ndb=" . ($tinfo->{'ndb_test'} ? "1" : "0"));
push(@this_criteria, "restart=" . ($tinfo->{'master_restart'} ? "1" : "0"));
push(@this_criteria, "big_test=" . ($tinfo->{'big_test'} ? "1" : "0"));
push(@this_criteria, join("|", sort keys %{$tinfo})); # Group similar things together. The values may differ substantially. FIXME?
push(@this_criteria, $tinfo->{'name'}); # Finally, order by the name
# Look for tests that muct be in run in a defined order
# that is defined by test having the same name except for
# the ending digit
$sort_criteria{$tinfo->{"name"}} = join(" ", @this_criteria);
# Put variables into hash
my $test_name= $tinfo->{'name'};
my $depend_on_test_name;
if ( $test_name =~ /^([\D]+)([0-9]{1})$/ )
{
my $base_name= $1;
my $idx= $2;
mtr_verbose("$test_name => $base_name idx=$idx");
if ( $idx > 1 )
{
$idx-= 1;
$base_name= "$base_name$idx";
mtr_verbose("New basename $base_name");
}
@$cases = sort { $sort_criteria{$a->{"name"}} cmp $sort_criteria{$b->{"name"}}; } @$cases;
foreach my $tinfo2 (@$cases)
{
if ( $tinfo2->{'name'} eq $base_name )
{
mtr_verbose("found dependent test $tinfo2->{'name'}");
$depend_on_test_name=$base_name;
}
}
}
### For debugging the sort-order
# foreach $tinfo (@$cases)
# {
# print $sort_criteria{$tinfo->{"name"}};
# print " -> \t";
# print $tinfo->{"name"};
# print "\n";
# }
if ( defined $depend_on_test_name )
{
mtr_verbose("Giving $test_name same critera as $depend_on_test_name");
$sort_criteria{$test_name} = $sort_criteria{$depend_on_test_name};
}
else
{
#
# Append the criteria for sorting, in order of importance.
#
push(@criteria, "ndb=" . ($tinfo->{'ndb_test'} ? "1" : "0"));
# Group test with equal options together.
# Ending with "~" makes empty sort later than filled
push(@criteria, join("!", sort @{$tinfo->{'master_opt'}}) . "~");
$sort_criteria{$test_name} = join(" ", @criteria);
}
}
@$cases = sort {
$sort_criteria{$a->{'name'}} . $a->{'name'} cmp
$sort_criteria{$b->{'name'}} . $b->{'name'}; } @$cases;
if ( $::opt_script_debug )
{
# For debugging the sort-order
foreach my $tinfo (@$cases)
{
print("$sort_criteria{$tinfo->{'name'}} -> \t$tinfo->{'name'}\n");
}
}
}
return $cases;
@ -222,9 +263,6 @@ sub collect_one_test_case($$$$$$$) {
return;
}
# ----------------------------------------------------------------------
# Skip some tests but include in list, just mark them to skip
# ----------------------------------------------------------------------
my $tinfo= {};
$tinfo->{'name'}= $tname;
@ -232,6 +270,10 @@ sub collect_one_test_case($$$$$$$) {
$tinfo->{'component_id'} = $component_id;
push(@$cases, $tinfo);
# ----------------------------------------------------------------------
# Skip some tests but include in list, just mark them to skip
# ----------------------------------------------------------------------
if ( $::opt_skip_test and defined mtr_match_prefix($tname,$::opt_skip_test) )
{
$tinfo->{'skip'}= 1;
@ -245,6 +287,7 @@ sub collect_one_test_case($$$$$$$) {
$tinfo->{'path'}= $path;
$tinfo->{'timezone'}= "GMT-3"; # for UNIX_TIMESTAMP tests to work
$tinfo->{'slave_num'}= 0; # Default, no slave
if ( defined mtr_match_prefix($tname,"rpl") )
{
if ( $::opt_skip_rpl )
@ -254,7 +297,8 @@ sub collect_one_test_case($$$$$$$) {
return;
}
$tinfo->{'slave_num'}= 1; # Default, use one slave
$tinfo->{'slave_num'}= 1; # Default for rpl* tests, use one slave
if ( $tname eq 'rpl_failsafe' or $tname eq 'rpl_chain_temp_table' )
{
@ -268,40 +312,6 @@ sub collect_one_test_case($$$$$$$) {
$tinfo->{'slave_num'}= 1;
}
if ( $::opt_with_ndbcluster or defined mtr_match_substring($tname,"ndb") )
{
# This is an ndb test or all tests should be run with ndb cluster started
$tinfo->{'ndb_test'}= 1;
if ( $::opt_skip_ndbcluster )
{
# All ndb test's should be skipped
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "No ndbcluster test(--skip-ndbcluster)";
return;
}
if ( ! $::opt_ndbcluster_supported )
{
# Ndb is not supported, skip them
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "No ndbcluster support";
return;
}
}
else
{
# This is not a ndb test
$tinfo->{'ndb_test'}= 0;
if ( $::opt_with_ndbcluster_only )
{
# Only the ndb test should be run, all other should be skipped
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "Only ndbcluster tests(--with-ndbcluster-only)";
return;
}
}
# FIXME what about embedded_server + ndbcluster, skip ?!
my $master_opt_file= "$testdir/$tname-master.opt";
my $slave_opt_file= "$testdir/$tname-slave.opt";
my $slave_mi_file= "$testdir/$tname.slave-mi";
@ -316,57 +326,59 @@ sub collect_one_test_case($$$$$$$) {
if ( -f $master_opt_file )
{
$tinfo->{'master_restart'}= 1; # We think so for now
MASTER_OPT:
{
my $master_opt= mtr_get_opts_from_file($master_opt_file);
foreach my $opt ( @$master_opt )
{
my $value;
# This is a dirty hack from old mysql-test-run, we use the opt
# file to flag other things as well, it is not a opt list at
# all
# The opt file is used both to send special options to the mysqld
# as well as pass special test case specific options to this
# script
$value= mtr_match_prefix($opt, "--timezone=");
if ( defined $value )
{
$tinfo->{'timezone'}= $value;
last MASTER_OPT;
next;
}
$value= mtr_match_prefix($opt, "--result-file=");
if ( defined $value )
{
# Specifies the file mysqltest should compare
# output against
$tinfo->{'result_file'}= "r/$value.result";
if ( $::opt_result_ext and $::opt_record or
-f "$tinfo->{'result_file'}$::opt_result_ext")
{
$tinfo->{'result_file'}.= $::opt_result_ext;
}
$tinfo->{'master_restart'}= 0;
last MASTER_OPT;
next;
}
# If we set default time zone, remove the one we have
$value= mtr_match_prefix($opt, "--default-time-zone=");
if ( defined $value )
{
$tinfo->{'master_opt'}= [];
# Set timezone for this test case to something different
$tinfo->{'timezone'}= "GMT-8";
# Fallthrough, add the --default-time-zone option
}
# The --restart option forces a restart even if no special
# option is set. If the options are the same as next testcase
# there is no need to restart after the testcase
# has completed
if ( $opt eq "--force-restart" )
{
$tinfo->{'force_restart'}= 1;
next;
}
# Ok, this was a real option list, add it
push(@{$tinfo->{'master_opt'}}, @$master_opt);
# Ok, this was a real option, add it
push(@{$tinfo->{'master_opt'}}, $opt);
}
}
if ( -f $slave_opt_file )
{
$tinfo->{'slave_restart'}= 1;
my $slave_opt= mtr_get_opts_from_file($slave_opt_file);
foreach my $opt ( @$slave_opt )
@ -381,7 +393,6 @@ sub collect_one_test_case($$$$$$$) {
if ( -f $slave_mi_file )
{
$tinfo->{'slave_mi'}= mtr_get_opts_from_file($slave_mi_file);
$tinfo->{'slave_restart'}= 1;
}
if ( -f $master_sh )
@ -395,7 +406,6 @@ sub collect_one_test_case($$$$$$$) {
else
{
$tinfo->{'master_sh'}= $master_sh;
$tinfo->{'master_restart'}= 1;
}
}
@ -410,7 +420,6 @@ sub collect_one_test_case($$$$$$$) {
else
{
$tinfo->{'slave_sh'}= $slave_sh;
$tinfo->{'slave_restart'}= 1;
}
}
@ -514,18 +523,50 @@ sub collect_one_test_case($$$$$$$) {
$tinfo->{'comment'}= "Test need debug binaries";
return;
}
}
# We can't restart a running server that may be in use
if ( $::glob_use_running_server and
( $tinfo->{'master_restart'} or $tinfo->{'slave_restart'} ) )
if ( $tinfo->{'ndb_test'} )
{
# This is a NDB test
if ( ! $::glob_ndbcluster_supported )
{
# Ndb is not supported, skip it
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "Can't restart a running server";
$tinfo->{'comment'}= "No ndbcluster support";
return;
}
elsif ( $::opt_skip_ndbcluster )
{
# All ndb test's should be skipped
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "No ndbcluster tests(--skip-ndbcluster)";
return;
}
}
else
{
# This is not a ndb test
if ( $::opt_with_ndbcluster_only )
{
# Only the ndb test should be run, all other should be skipped
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "Only ndbcluster tests(--with-ndbcluster-only)";
return;
}
}
if ( $tinfo->{'innodb_test'} )
{
# This is a test that need inndob
if ( $::mysqld_variables{'innodb'} eq "FALSE" )
{
# innodb is not supported, skip it
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "No innodb support";
return;
}
}
}
}
@ -536,8 +577,10 @@ our @tags=
["include/have_innodb.inc", "innodb_test", 1],
["include/have_binlog_format_row.inc", "binlog_format", "row"],
["include/have_binlog_format_statement.inc", "binlog_format", "stmt"],
["include/have_binlog_format_mixed.inc", "binlog_format", "mixed"],
["include/big_test.inc", "big_test", 1],
["include/have_debug.inc", "need_debug", 1],
["include/have_ndb.inc", "ndb_test", 1],
["include/have_ndb_extra.inc", "ndb_extra", 1],
["require_manager", "require_manager", 1],
);
@ -550,8 +593,6 @@ sub mtr_options_from_test_file($$) {
while ( my $line= <$F> )
{
next if ( $line !~ /^--/ );
# Match this line against tag in "tags" array
foreach my $tag (@tags)
{
@ -563,15 +604,22 @@ sub mtr_options_from_test_file($$) {
}
# If test sources another file, open it as well
if ( $line =~ /^\-\-([[:space:]]*)source(.*)$/ )
if ( $line =~ /^\-\-([[:space:]]*)source(.*)$/ or
$line =~ /^([[:space:]]*)source(.*);$/ )
{
my $value= $2;
$value =~ s/^\s+//; # Remove leading space
$value =~ s/[[:space:]]+$//; # Remove ending space
my $sourced_file= "$::glob_mysql_test_dir/$value";
if ( -f $sourced_file )
{
# Only source the file if it exists, we may get
# false positives in the regexes above if someone
# writes "source nnnn;" in a test case(such as mysqltest.test)
mtr_options_from_test_file($tinfo, $sourced_file);
}
}
}
}

View File

@ -23,12 +23,28 @@ sub gcov_prepare () {
-or -name \*.da | xargs rm`;
}
# Used by gcov
our @mysqld_src_dirs=
(
"strings",
"mysys",
"include",
"extra",
"regex",
"isam",
"merge",
"myisam",
"myisammrg",
"heap",
"sql",
);
sub gcov_collect () {
print "Collecting source coverage info...\n";
-f $::opt_gcov_msg and unlink($::opt_gcov_msg);
-f $::opt_gcov_err and unlink($::opt_gcov_err);
foreach my $d ( @::mysqld_src_dirs )
foreach my $d ( @mysqld_src_dirs )
{
chdir("$::glob_basedir/$d");
foreach my $f ( (glob("*.h"), glob("*.cc"), glob("*.c")) )

View File

@ -12,6 +12,7 @@ sub mtr_fromfile ($);
sub mtr_tofile ($@);
sub mtr_tonewfile($@);
sub mtr_lastlinefromfile($);
sub mtr_appendfile_to_file ($$);
##############################################################################
#
@ -36,18 +37,16 @@ sub mtr_get_pid_from_file ($) {
open(FILE, '<', $pid_file_path)
or mtr_error("can't open file \"$pid_file_path\": $!");
# Read pid number from file
my $pid= <FILE>;
chomp($pid) if defined $pid;
close FILE;
return $pid if defined $pid && $pid ne '';
return $pid if $pid=~ /^(\d+)/;
mtr_debug("Pid file '$pid_file_path' is empty. " .
"Sleeping $timeout second(s)...");
mtr_debug("Pid file '$pid_file_path' does not yet contain pid number.\n" .
"Sleeping $timeout second(s) more...");
sleep(1);
sleep($timeout);
}
mtr_error("Pid file '$pid_file_path' is corrupted. " .
@ -170,4 +169,17 @@ sub mtr_tonewfile ($@) {
close FILE;
}
sub mtr_appendfile_to_file ($$) {
my $from_file= shift;
my $to_file= shift;
open(TOFILE,">>",$to_file) or mtr_error("can't open file \"$to_file\": $!");
open(FROMFILE,"<",$from_file)
or mtr_error("can't open file \"$from_file\": $!");
print TOFILE while (<FROMFILE>);
close FROMFILE;
close TOFILE;
}
1;

View File

@ -14,6 +14,7 @@ sub mtr_path_exists(@);
sub mtr_script_exists(@);
sub mtr_file_exists(@);
sub mtr_exe_exists(@);
sub mtr_exe_maybe_exists(@);
sub mtr_copy_dir($$);
sub mtr_same_opts($$);
sub mtr_cmp_opts($$);
@ -65,6 +66,10 @@ sub mtr_add_arg ($$@) {
##############################################################################
#
# NOTE! More specific paths should be given before less specific.
# For example /client/debug should be listed before /client
#
sub mtr_path_exists (@) {
foreach my $path ( @_ )
{
@ -80,6 +85,11 @@ sub mtr_path_exists (@) {
}
}
#
# NOTE! More specific paths should be given before less specific.
# For example /client/debug should be listed before /client
#
sub mtr_script_exists (@) {
foreach my $path ( @_ )
{
@ -102,6 +112,11 @@ sub mtr_script_exists (@) {
}
}
#
# NOTE! More specific paths should be given before less specific.
# For example /client/debug should be listed before /client
#
sub mtr_file_exists (@) {
foreach my $path ( @_ )
{
@ -110,8 +125,14 @@ sub mtr_file_exists (@) {
return "";
}
sub mtr_exe_exists (@) {
#
# NOTE! More specific paths should be given before less specific.
# For example /client/debug should be listed before /client
#
sub mtr_exe_maybe_exists (@) {
my @path= @_;
map {$_.= ".exe"} @path if $::glob_win32;
foreach my $path ( @path )
{
@ -124,6 +145,21 @@ sub mtr_exe_exists (@) {
return $path if -x $path;
}
}
return "";
}
#
# NOTE! More specific paths should be given before less specific.
# For example /client/debug should be listed before /client
#
sub mtr_exe_exists (@) {
my @path= @_;
if (my $path= mtr_exe_maybe_exists(@path))
{
return $path;
}
# Could not find exe, show error
if ( @path == 1 )
{
mtr_error("Could not find $path[0]");
@ -139,7 +175,7 @@ sub mtr_copy_dir($$) {
my $from_dir= shift;
my $to_dir= shift;
# mtr_verbose("Copying from $from_dir to $to_dir");
# mtr_verbose("Copying from $from_dir to $to_dir");
mkpath("$to_dir");
opendir(DIR, "$from_dir")

View File

@ -4,12 +4,10 @@
# and is part of the translation of the Bourne shell script with the
# same name.
#use Carp qw(cluck);
use Socket;
use Errno;
use strict;
#use POSIX ":sys_wait_h";
use POSIX 'WNOHANG';
sub mtr_run ($$$$$$;$);
@ -93,8 +91,6 @@ sub spawn_impl ($$$$$$$$) {
my $pid_file= shift; # FIXME
my $spawn_opts= shift;
mtr_error("Can't spawn with empty \"path\"") unless defined $path;
if ( $::opt_script_debug )
{
print STDERR "\n";
@ -118,6 +114,9 @@ sub spawn_impl ($$$$$$$$) {
print STDERR "#### ", "-" x 78, "\n";
}
mtr_error("Can't spawn with empty \"path\"") unless defined $path;
FORK:
{
my $pid= fork();
@ -339,19 +338,6 @@ sub mtr_kill_leftovers () {
mtr_report("Killing Possible Leftover Processes");
mtr_debug("mtr_kill_leftovers(): started.");
mkpath("$::opt_vardir/log"); # Needed for mysqladmin log
# Stop or kill Instance Manager and all its children. If we failed to do
# that, we can only abort -- there is nothing left to do.
mtr_error("Failed to stop Instance Manager.")
unless mtr_im_stop($::instance_manager);
# Start shutdown of masters and slaves. Don't touch IM-managed mysqld
# instances -- they should be stopped by mtr_im_stop().
mtr_debug("Shutting down mysqld-instances...");
my @kill_pids;
my %admin_pids;
@ -377,8 +363,9 @@ sub mtr_kill_leftovers () {
$srv->{'pid'}= 0; # Assume we are done with it
}
if ( ! $::opt_skip_ndbcluster )
{
# Start shutdown of clusters.
mtr_debug("Shutting down cluster...");
foreach my $cluster (@{$::clusters})
@ -399,7 +386,6 @@ sub mtr_kill_leftovers () {
$cluster->{'pid'}= 0; # Assume we are done with it
foreach my $ndbd (@{$cluster->{'ndbds'}})
{
mtr_debug(" - ndbd " .
@ -413,6 +399,7 @@ sub mtr_kill_leftovers () {
$ndbd->{'pid'}= 0; # Assume we are done with it
}
}
}
# Wait for all the admin processes to complete
mtr_wait_blocking(\%admin_pids);
@ -450,6 +437,9 @@ sub mtr_kill_leftovers () {
my @pids;
while ( my $elem= readdir(RUNDIR) )
{
# Only read pid from files that end with .pid
if ( $elem =~ /.*[.]pid$/)
{
my $pidfile= "$rundir/$elem";
@ -472,6 +462,13 @@ sub mtr_kill_leftovers () {
}
}
}
else
{
mtr_warning("Found non pid file $elem in $rundir")
if -f "$rundir/$elem";
next;
}
}
closedir(RUNDIR);
if ( @pids )
@ -1100,7 +1097,6 @@ sub mtr_kill_processes ($) {
sub mtr_exit ($) {
my $code= shift;
# cluck("Called mtr_exit()");
mtr_timer_stop_all($::glob_timers);
local $SIG{HUP} = 'IGNORE';
# ToDo: Signalling -$$ will only work if we are the process group

View File

@ -53,13 +53,6 @@ sub mtr_show_failed_diff ($) {
{
$result_file= $eval_file;
}
elsif ( $::opt_result_ext and
( $::opt_record or -f "$result_file$::opt_result_ext" ))
{
# If we have an special externsion for result files we use it if we are
# recording or a result file with that extension exists.
$result_file= "$result_file$::opt_result_ext";
}
my $diffopts= $::opt_udiff ? "-u" : "-c";
@ -137,13 +130,9 @@ sub mtr_report_test_failed ($) {
my $tinfo= shift;
$tinfo->{'result'}= 'MTR_RES_FAILED';
if ( $tinfo->{'timeout'} )
if ( defined $tinfo->{'timeout'} )
{
print "[ fail ] timeout\n";
}
elsif ( $tinfo->{'ndb_test'} and $::cluster->[0]->{'installed_ok'} eq "NO")
{
print "[ fail ] ndbcluster start failure\n";
return;
}
else
@ -151,9 +140,11 @@ sub mtr_report_test_failed ($) {
print "[ fail ]\n";
}
# FIXME Instead of this test, and meaningless error message in 'else'
# we should write out into $::path_timefile when the error occurs.
if ( -f $::path_timefile )
if ( $tinfo->{'comment'} )
{
print "\nERROR: $tinfo->{'comment'}\n";
}
elsif ( -f $::path_timefile )
{
print "\nErrors are (from $::path_timefile) :\n";
print mtr_fromfile($::path_timefile); # FIXME print_file() instead
@ -177,7 +168,7 @@ sub mtr_report_stats ($) {
my $tot_failed= 0;
my $tot_tests= 0;
my $tot_restarts= 0;
my $found_problems= 0; # Some warnings are errors...
my $found_problems= 0; # Some warnings in the logfiles are errors...
foreach my $tinfo (@$tests)
{
@ -212,8 +203,9 @@ sub mtr_report_stats ($) {
else
{
my $ratio= $tot_passed * 100 / $tot_tests;
printf "Failed $tot_failed/$tot_tests tests, " .
"%.2f\% were successful.\n\n", $ratio;
print "Failed $tot_failed/$tot_tests tests, ";
printf("%.2f", $ratio);
print "\% were successful.\n\n";
print
"The log files in var/log may give you some hint\n",
"of what went wrong.\n",
@ -288,6 +280,7 @@ sub mtr_report_stats ($) {
print "\n";
# Print a list of testcases that failed
if ( $tot_failed != 0 )
{
my $test_mode= join(" ", @::glob_test_mode) || "default";
@ -301,7 +294,30 @@ sub mtr_report_stats ($) {
}
}
print "\n";
}
# Print a list of check_testcases that failed(if any)
if ( $::opt_check_testcases )
{
my @check_testcases= ();
foreach my $tinfo (@$tests)
{
if ( defined $tinfo->{'check_testcase_failed'} )
{
push(@check_testcases, $tinfo->{'name'});
}
}
if ( @check_testcases )
{
print "Check of testcase failed for: ";
print join(" ", @check_testcases);
print "\n\n";
}
}
if ( $tot_failed != 0 || $found_problems)
{
mtr_error("there where failing test cases");

View File

@ -122,7 +122,7 @@ sub run_stress_test ()
mtr_init_args(\$args);
mtr_add_arg($args, "--server-socket=%s", $::master->[0]->{'path_mysock'});
mtr_add_arg($args, "--server-socket=%s", $::master->[0]->{'path_sock'});
mtr_add_arg($args, "--server-user=%s", $::opt_user);
mtr_add_arg($args, "--server-database=%s", "test");
mtr_add_arg($args, "--stress-suite-basedir=%s", $::glob_mysql_test_dir);
@ -140,7 +140,7 @@ sub run_stress_test ()
if ( $::opt_stress_init_file )
{
mtr_add_arg($args, "--stress-init-file=%", $::opt_stress_init_file);
mtr_add_arg($args, "--stress-init-file=%s", $::opt_stress_init_file);
}
if ( !$::opt_stress_loop_count && !$::opt_stress_test_count &&
@ -168,10 +168,9 @@ sub run_stress_test ()
#Run stress test
mtr_run("$::glob_mysql_test_dir/mysql-stress-test.pl", $args, "", "", "", "");
if ( ! $::glob_use_embedded_server )
{
stop_masters();
stop_all_servers();
}
}

View File

@ -4,23 +4,19 @@
# and is part of the translation of the Bourne shell script with the
# same name.
use Carp qw(cluck);
use Socket;
use Errno;
use strict;
#use POSIX ":sys_wait_h";
use POSIX 'WNOHANG';
sub mtr_init_timers ();
sub mtr_timer_start($$$);
sub mtr_timer_stop($$);
sub mtr_timer_stop_all($);
sub mtr_timer_waitpid($$$);
##############################################################################
#
# Initiate a structure shared by all timers
# Initiate the structure shared by all timers
#
##############################################################################
@ -35,17 +31,19 @@ sub mtr_init_timers () {
# Start, stop and poll a timer
#
# As alarm() isn't portable to Windows, we use separate processes to
# implement timers. That is why there is a mtr_timer_waitpid(), as this
# is where we catch a timeout.
# implement timers.
#
##############################################################################
sub mtr_timer_start($$$) {
my ($timers,$name,$duration)= @_;
mtr_verbose("mtr_timer_start: $name, $duration");
if ( exists $timers->{'timers'}->{$name} )
{
# We have an old running timer, kill it
mtr_verbose("There is an old timer running");
mtr_timer_stop($timers,$name);
}
@ -57,7 +55,7 @@ sub mtr_timer_start($$$) {
{
if ( $! == $!{EAGAIN} ) # See "perldoc Errno"
{
mtr_debug("Got EAGAIN from fork(), sleep 1 second and redo");
mtr_warning("Got EAGAIN from fork(), sleep 1 second and redo");
sleep(1);
redo FORK;
}
@ -70,6 +68,7 @@ sub mtr_timer_start($$$) {
if ( $tpid )
{
# Parent, record the information
mtr_verbose("timer parent, record info($name, $tpid, $duration)");
$timers->{'timers'}->{$name}->{'pid'}= $tpid;
$timers->{'timers'}->{$name}->{'duration'}= $duration;
$timers->{'pids'}->{$tpid}= $name;
@ -85,6 +84,7 @@ sub mtr_timer_start($$$) {
$SIG{INT}= 'DEFAULT';
$0= "mtr_timer(timers,$name,$duration)";
mtr_verbose("timer child $name, sleep $duration");
sleep($duration);
exit(0);
}
@ -95,9 +95,12 @@ sub mtr_timer_start($$$) {
sub mtr_timer_stop ($$) {
my ($timers,$name)= @_;
mtr_verbose("mtr_timer_stop: $name");
if ( exists $timers->{'timers'}->{$name} )
{
my $tpid= $timers->{'timers'}->{$name}->{'pid'};
mtr_verbose("Stopping timer with pid $tpid");
# FIXME as Cygwin reuses pids fast, maybe check that is
# the expected process somehow?!
@ -114,7 +117,7 @@ sub mtr_timer_stop ($$) {
}
else
{
mtr_debug("Asked to stop timer \"$name\" not started");
mtr_error("Asked to stop timer \"$name\" not started");
return 0;
}
}
@ -136,10 +139,8 @@ sub mtr_timer_timeout ($$) {
return "" unless exists $timers->{'pids'}->{$pid};
# We got a timeout
my $name= $timers->{'pids'}->{$pid};
mtr_timer_stop($timers, $timers->{'timers'}->{$name});
return $name;
# We got a timeout, return the name ot the timer
return $timers->{'pids'}->{$pid};
}
1;

View File

@ -1815,8 +1815,11 @@ run_testcase ()
--result-file=*)
result_file=`$ECHO "$EXTRA_MASTER_OPT" | $SED -e "s;--result-file=;;"`
result_file="r/$result_file.result"
# Note that this must be set to space, not "" for test-reset to
# work
# Note that this must be set to space, not "" for test-reset to work
EXTRA_MASTER_OPT=" "
;;
--force-restart)
# Note that this must be set to space, not "" for test-reset to work
EXTRA_MASTER_OPT=" "
;;
esac

File diff suppressed because it is too large Load Diff

View File

@ -220,7 +220,7 @@ select (@before:=unix_timestamp())*0;
(@before:=unix_timestamp())*0
0
begin;
select * from t1 for update;
select * from t1 for update;
insert into t2 values (20);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
select (@after:=unix_timestamp())*0;

View File

@ -195,7 +195,7 @@ select (@before:=unix_timestamp())*0;
(@before:=unix_timestamp())*0
0
begin;
select * from t1 for update;
select * from t1 for update;
insert into t2 values (20);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
select (@after:=unix_timestamp())*0;

View File

@ -1,6 +1,6 @@
drop table if exists t1;
create table t1(n int not null, key(n), key(n), key(n), key(n));
check table t1 extended;
check table t1 extended;
insert into t1 values (200000);
Table Op Msg_type Msg_text
test.t1 check status OK

View File

@ -4913,8 +4913,7 @@ bonfire
Colombo
nondecreasing
DROP TABLE t1;
ALTER TABLE t2 RENAME t1
#;
ALTER TABLE t2 RENAME t1;
DROP TABLE t1;
CREATE TABLE t1 (
Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,

View File

@ -79,9 +79,9 @@ drop table if exists t1;
create table t1 (i int);
lock tables t1 read;
create database mysqltest;
drop table t1;
drop table t1;
show open tables;
drop database mysqltest;
drop database mysqltest;
select 1;
1
1

View File

@ -206,13 +206,13 @@ drop event events_test.mysqltest_user1;
drop user mysqltest_user1@localhost;
drop database mysqltest_db1;
create event e_53 on schedule at (select s1 from ttx) do drop table t;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select s1 from ttx) do drop table t' at line 1
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
create event e_53 on schedule every (select s1 from ttx) second do drop table t;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select s1 from ttx) second do drop table t' at line 1
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
create event e_53 on schedule every 5 second starts (select s1 from ttx) do drop table t;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select s1 from ttx) do drop table t' at line 1
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
create event e_53 on schedule every 5 second ends (select s1 from ttx) do drop table t;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select s1 from ttx) do drop table t' at line 1
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
drop event if exists e_16;
drop procedure if exists p_16;
create event e_16 on schedule every 1 second do set @a=5;
@ -226,4 +226,46 @@ set @a= 6;
call p_16();
drop procedure p_16;
drop event e_16;
drop function if exists f22830;
drop event if exists e22830;
drop event if exists e22830_1;
drop event if exists e22830_2;
drop event if exists e22830_3;
drop event if exists e22830_4;
drop table if exists t1;
drop table if exists t2;
create table t1 (a int);
insert into t1 values (2);
create table t2 (a char(20));
insert into t2 values ("e22830_1");
create function f22830 () returns int return 5;
create event e22830 on schedule every f22830() second do select 123;
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
create event e22830_1 on schedule every 1 hour do alter event e22830_1 on schedule every (select 8 from dual) hour;
create event e22830_2 on schedule every 1 hour do alter event e22830_2 on schedule every (select 8 from t1) hour;
create event e22830_3 on schedule every 1 hour do alter event e22830_3 on schedule every f22830() hour;
create event e22830_4 on schedule every 1 hour do alter event e22830_4 on schedule every (select f22830() from dual) hour;
select event_name, event_definition, interval_value, interval_field from information_schema.events order by event_name;
event_name event_definition interval_value interval_field
e22830_1 alter event e22830_1 on schedule every (select 8 from dual) hour 1 HOUR
e22830_2 alter event e22830_2 on schedule every (select 8 from t1) hour 1 HOUR
e22830_3 alter event e22830_3 on schedule every f22830() hour 1 HOUR
e22830_4 alter event e22830_4 on schedule every (select f22830() from dual) hour 1 HOUR
set global event_scheduler=on;
set global event_scheduler=off;
select event_name, event_definition, interval_value, interval_field from information_schema.events order by event_name;
event_name event_definition interval_value interval_field
e22830_1 alter event e22830_1 on schedule every (select 8 from dual) hour 8 HOUR
e22830_2 alter event e22830_2 on schedule every (select 8 from t1) hour 1 HOUR
e22830_3 alter event e22830_3 on schedule every f22830() hour 1 HOUR
e22830_4 alter event e22830_4 on schedule every (select f22830() from dual) hour 1 HOUR
drop function f22830;
drop event (select a from t2);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(select a from t2)' at line 1
drop event e22830_1;
drop event e22830_2;
drop event e22830_3;
drop event e22830_4;
drop table t1;
drop table t2;
drop database events_test;

View File

@ -4,7 +4,7 @@ CREATE EVENT one_event ON SCHEDULE EVERY 10 SECOND DO SELECT 123;
SHOW EVENTS;
Db Name Definer Type Execute at Interval value Interval field Starts Ends Status
events_test one_event root@localhost RECURRING NULL 10 SECOND # # ENABLED
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT from information_schema.events;
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
CREATE DATABASE events_test2;
@ -57,37 +57,37 @@ USE events_test2;
CREATE EVENT four_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42;
USE events_test;
"We should see 4 events : one_event, two_event, three_event & four_event"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
NULL events_test2 four_event ev_test@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
DROP DATABASE events_test2;
"We should see 3 events : one_event, two_event, three_event"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
CREATE DATABASE events_test2;
USE events_test2;
CREATE EVENT five_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42;
"Should see 4 events - one, two, three & five"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
NULL events_test2 five_event root@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
REVOKE EVENT ON events_test2.* FROM ev_test@localhost;
USE test;
"Should see 3 events - one, two & three"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
"Let's test ALTER EVENT which changes the definer"
USE events_test;
ALTER EVENT one_event ON SCHEDULE EVERY 10 SECOND;
@ -111,10 +111,10 @@ ALTER EVENT one_event COMMENT "new comment";
"test DROP by another user"
DROP EVENT one_event;
"One event should not be there"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
NULL events_test2 five_event root@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
DROP USER ev_test@localhost;
DROP DATABASE events_test2;

View File

@ -9,13 +9,13 @@ n
flush tables with read lock;
drop table t2;
ERROR HY000: Can't execute the query because you have a conflicting read lock
drop table t2;
drop table t2;
unlock tables;
create database mysqltest;
create table mysqltest.t1(n int);
insert into mysqltest.t1 values (23);
flush tables with read lock;
drop database mysqltest;
drop database mysqltest;
select * from mysqltest.t1;
n
23
@ -51,7 +51,7 @@ drop table t1, t2, t3;
create table t1 (c1 int);
create table t2 (c1 int);
lock table t1 write;
flush tables with read lock;
insert into t2 values(1);
flush tables with read lock;
insert into t2 values(1);
unlock tables;
drop table t1, t2;

View File

@ -5,7 +5,7 @@ insert into t1 values(1);
flush tables with read lock;
select * from t1;
a
commit;
commit;
select * from t1;
a
unlock tables;
@ -14,8 +14,8 @@ select * from t1 for update;
a
1
begin;
select * from t1 for update;
flush tables with read lock;
select * from t1 for update;
flush tables with read lock;
commit;
a
1
@ -45,7 +45,7 @@ flush tables with read lock;
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 102
commit;
commit;
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 102

View File

@ -1,7 +1,7 @@
drop table if exists t1;
create table t1 (kill_id int);
insert into t1 values(connection_id());
flush tables with read lock;
flush tables with read lock;
select ((@id := kill_id) - kill_id) from t1;
((@id := kill_id) - kill_id)
0

View File

@ -9,7 +9,7 @@ test.t1 check status OK
unlock tables;
lock table t1 read;
lock table t1 read;
flush table t1;
flush table t1;
select * from t1;
a
1
@ -19,7 +19,7 @@ a
1
unlock tables;
lock table t1 write;
lock table t1 read;
lock table t1 read;
flush table t1;
select * from t1;
a
@ -27,7 +27,7 @@ a
unlock tables;
unlock tables;
lock table t1 read;
lock table t1 write;
lock table t1 write;
flush table t1;
select * from t1;
a

View File

@ -79,6 +79,16 @@ uncompress(a) uncompressed_length(a)
NULL NULL
a 1
drop table t1;
create table t1(a blob);
insert into t1 values ('0'), (NULL), ('0');
select compress(a), compress(a) from t1;
select compress(a) is null from t1;
compress(a) is null
0
1
0
drop table t1;
End of 4.1 tests
create table t1 (a varchar(32) not null);
insert into t1 values ('foo');
explain select * from t1 where uncompress(a) is null;

View File

@ -71,3 +71,17 @@ NULL
NULL
NULL
drop table t1;
End of 4.1 tests
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 DAY;
CAST('2006-09-26' AS DATE) + INTERVAL 1 DAY
2006-09-27
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 MONTH;
CAST('2006-09-26' AS DATE) + INTERVAL 1 MONTH
2006-10-26
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 YEAR;
CAST('2006-09-26' AS DATE) + INTERVAL 1 YEAR
2007-09-26
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK;
CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK
2006-10-03
End of 5.0 tests

View File

@ -102,6 +102,18 @@ Note 1003 select pi() AS `pi()`,format(sin((pi() / 2)),6) AS `format(sin(pi()/2)
select degrees(pi()),radians(360);
degrees(pi()) radians(360)
180 6.2831853071796
select format(atan(-2, 2), 6);
format(atan(-2, 2), 6)
-0.785398
select format(atan(pi(), 0), 6);
format(atan(pi(), 0), 6)
1.570796
select format(atan2(-2, 2), 6);
format(atan2(-2, 2), 6)
-0.785398
select format(atan2(pi(), 0), 6);
format(atan2(pi(), 0), 6)
1.570796
SELECT ACOS(1.0);
ACOS(1.0)
0

View File

@ -63,7 +63,7 @@ FROM t1
WHERE conn = 'default';
IS_USED_LOCK('bug16501') = connection_id
1
SELECT GET_LOCK('bug16501',600);
SELECT GET_LOCK('bug16501',600);
SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID();
IS_USED_LOCK('bug16501') = CONNECTION_ID()
1

View File

@ -107,7 +107,9 @@ subtime("02:01:01.999999", "01:01:01.999999")
01:00:00.000000
select timediff("1997-01-01 23:59:59.000001","1995-12-31 23:59:59.000002");
timediff("1997-01-01 23:59:59.000001","1995-12-31 23:59:59.000002")
8807:59:59.999999
838:59:59
Warnings:
Warning 1292 Truncated incorrect time value: '8807:59:59.999999'
select timediff("1997-12-31 23:59:59.000001","1997-12-30 01:01:01.000002");
timediff("1997-12-31 23:59:59.000001","1997-12-30 01:01:01.000002")
46:58:57.999999
@ -219,13 +221,16 @@ SELECT TIMEDIFF(t1, t4) As ttt, TIMEDIFF(t2, t3) As qqq,
TIMEDIFF(t3, t2) As eee, TIMEDIFF(t2, t4) As rrr from test;
ttt qqq eee rrr
-744:00:00 NULL NULL NULL
26305:01:02 22:58:58 -22:58:58 NULL
-26305:01:02 -22:58:58 22:58:58 NULL
838:59:59 22:58:58 -22:58:58 NULL
-838:59:59 -22:58:58 22:58:58 NULL
NULL 26:02:02 -26:02:02 NULL
00:00:00 -26:02:02 26:02:02 NULL
NULL NULL NULL NULL
NULL NULL NULL NULL
00:00:00 -24:00:00 24:00:00 NULL
Warnings:
Warning 1292 Truncated incorrect time value: '26305:01:02'
Warning 1292 Truncated incorrect time value: '-26305:01:02'
drop table t1, test;
select addtime("-01:01:01.01", "-23:59:59.1") as a;
a
@ -235,7 +240,9 @@ a
10000
select microsecond(19971231235959.01) as a;
a
10000
0
Warnings:
Warning 1292 Truncated incorrect time value: '19971231235959.01'
select date_add("1997-12-31",INTERVAL "10.09" SECOND_MICROSECOND) as a;
a
1997-12-31 00:00:10.090000

View File

@ -182,6 +182,81 @@ select 5.1 mod 3, 5.1 mod -3, -5.1 mod 3, -5.1 mod -3;
select 5 mod 3, 5 mod -3, -5 mod 3, -5 mod -3;
5 mod 3 5 mod -3 -5 mod 3 -5 mod -3
2 2 -2 -2
select (12%0) <=> null as '1';
1
1
select (12%0) is null as '1';
1
1
select 12%0 as 'NULL';
NULL
NULL
select 12%2 as '0';
0
0
select 12%NULL as 'NULL';
NULL
NULL
select 12 % null as 'NULL';
NULL
NULL
select null % 12 as 'NULL';
NULL
NULL
select null % 0 as 'NULL';
NULL
NULL
select 0 % null as 'NULL';
NULL
NULL
select null % null as 'NULL';
NULL
NULL
select (12 mod 0) <=> null as '1';
1
1
select (12 mod 0) is null as '1';
1
1
select 12 mod 0 as 'NULL';
NULL
NULL
select 12 mod 2 as '0';
0
0
select 12 mod null as 'NULL';
NULL
NULL
select null mod 12 as 'NULL';
NULL
NULL
select null mod 0 as 'NULL';
NULL
NULL
select 0 mod null as 'NULL';
NULL
NULL
select null mod null as 'NULL';
NULL
NULL
select mod(12.0, 0) as 'NULL';
NULL
NULL
select mod(12, 0.0) as 'NULL';
NULL
NULL
select mod(12, NULL) as 'NULL';
NULL
NULL
select mod(12.0, NULL) as 'NULL';
NULL
NULL
select mod(NULL, 2) as 'NULL';
NULL
NULL
select mod(NULL, 2.0) as 'NULL';
NULL
NULL
create table t1 (a int, b int);
insert into t1 values (1,2), (2,3), (3,4), (4,5);
select * from t1 where a not between 1 and 2;

View File

@ -339,7 +339,9 @@ extract(DAY_MINUTE FROM "02 10:11:12")
21011
select extract(DAY_SECOND FROM "225 10:11:12");
extract(DAY_SECOND FROM "225 10:11:12")
225101112
8385959
Warnings:
Warning 1292 Truncated incorrect time value: '225 10:11:12'
select extract(HOUR FROM "1999-01-02 10:11:12");
extract(HOUR FROM "1999-01-02 10:11:12")
10
@ -548,12 +550,48 @@ unix_timestamp('1969-12-01 19:00:01')
select from_unixtime(-1);
from_unixtime(-1)
NULL
select from_unixtime(2145916800);
from_unixtime(2145916800)
select from_unixtime(2147483647);
from_unixtime(2147483647)
2038-01-19 06:14:07
select from_unixtime(2147483648);
from_unixtime(2147483648)
NULL
select from_unixtime(0);
from_unixtime(0)
1970-01-01 03:00:00
select unix_timestamp(from_unixtime(2147483647));
unix_timestamp(from_unixtime(2147483647))
2147483647
select unix_timestamp(from_unixtime(2147483648));
unix_timestamp(from_unixtime(2147483648))
NULL
select unix_timestamp('2039-01-20 01:00:00');
unix_timestamp('2039-01-20 01:00:00')
0
select unix_timestamp('1968-01-20 01:00:00');
unix_timestamp('1968-01-20 01:00:00')
0
select unix_timestamp('2038-02-10 01:00:00');
unix_timestamp('2038-02-10 01:00:00')
0
select unix_timestamp('1969-11-20 01:00:00');
unix_timestamp('1969-11-20 01:00:00')
0
select unix_timestamp('2038-01-20 01:00:00');
unix_timestamp('2038-01-20 01:00:00')
0
select unix_timestamp('1969-12-30 01:00:00');
unix_timestamp('1969-12-30 01:00:00')
0
select unix_timestamp('2038-01-17 12:00:00');
unix_timestamp('2038-01-17 12:00:00')
2147331600
select unix_timestamp('1970-01-01 03:00:01');
unix_timestamp('1970-01-01 03:00:01')
1
select unix_timestamp('2038-01-19 07:14:07');
unix_timestamp('2038-01-19 07:14:07')
0
CREATE TABLE t1 (datetime datetime, timestamp timestamp, date date, time time);
INSERT INTO t1 values ("2001-01-02 03:04:05", "2002-01-02 03:04:05", "2003-01-02", "06:07:08");
SELECT * from t1;
@ -612,7 +650,7 @@ date_add(date,INTERVAL "1 1:1:1" DAY_SECOND)
2003-01-03 01:01:01
select date_add(date,INTERVAL "1" WEEK) from t1;
date_add(date,INTERVAL "1" WEEK)
2003-01-09 00:00:00
2003-01-09
select date_add(date,INTERVAL "1" QUARTER) from t1;
date_add(date,INTERVAL "1" QUARTER)
2003-04-02
@ -621,7 +659,7 @@ timestampadd(MINUTE, 1, date)
2003-01-02 00:01:00
select timestampadd(WEEK, 1, date) from t1;
timestampadd(WEEK, 1, date)
2003-01-09 00:00:00
2003-01-09
select timestampadd(SQL_TSI_SECOND, 1, date) from t1;
timestampadd(SQL_TSI_SECOND, 1, date)
2003-01-02 00:00:01
@ -890,6 +928,93 @@ t1 CREATE TABLE `t1` (
`from_unixtime(1) + 0` double(23,6) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
SELECT SEC_TO_TIME(3300000);
SEC_TO_TIME(3300000)
838:59:59
Warnings:
Warning 1292 Truncated incorrect time value: '3300000'
SELECT SEC_TO_TIME(3300000)+0;
SEC_TO_TIME(3300000)+0
8385959.000000
Warnings:
Warning 1292 Truncated incorrect time value: '3300000'
SELECT SEC_TO_TIME(3600 * 4294967296);
SEC_TO_TIME(3600 * 4294967296)
838:59:59
Warnings:
Warning 1292 Truncated incorrect time value: '15461882265600'
SELECT TIME_TO_SEC('916:40:00');
TIME_TO_SEC('916:40:00')
3020399
Warnings:
Warning 1292 Truncated incorrect time value: '916:40:00'
SELECT ADDTIME('500:00:00', '416:40:00');
ADDTIME('500:00:00', '416:40:00')
838:59:59
Warnings:
Warning 1292 Truncated incorrect time value: '916:40:00'
SELECT ADDTIME('916:40:00', '416:40:00');
ADDTIME('916:40:00', '416:40:00')
838:59:59
Warnings:
Warning 1292 Truncated incorrect time value: '916:40:00'
Warning 1292 Truncated incorrect time value: '1255:39:59'
SELECT SUBTIME('916:40:00', '416:40:00');
SUBTIME('916:40:00', '416:40:00')
422:19:59
Warnings:
Warning 1292 Truncated incorrect time value: '916:40:00'
SELECT SUBTIME('-916:40:00', '416:40:00');
SUBTIME('-916:40:00', '416:40:00')
-838:59:59
Warnings:
Warning 1292 Truncated incorrect time value: '-916:40:00'
Warning 1292 Truncated incorrect time value: '-1255:39:59'
SELECT MAKETIME(916,0,0);
MAKETIME(916,0,0)
838:59:59
Warnings:
Warning 1292 Truncated incorrect time value: '916:00:00'
SELECT MAKETIME(4294967296, 0, 0);
MAKETIME(4294967296, 0, 0)
838:59:59
Warnings:
Warning 1292 Truncated incorrect time value: '4294967296:00:00'
SELECT MAKETIME(-4294967296, 0, 0);
MAKETIME(-4294967296, 0, 0)
-838:59:59
Warnings:
Warning 1292 Truncated incorrect time value: '-4294967296:00:00'
SELECT MAKETIME(0, 4294967296, 0);
MAKETIME(0, 4294967296, 0)
NULL
SELECT MAKETIME(0, 0, 4294967296);
MAKETIME(0, 0, 4294967296)
NULL
SELECT MAKETIME(CAST(-1 AS UNSIGNED), 0, 0);
MAKETIME(CAST(-1 AS UNSIGNED), 0, 0)
838:59:59
Warnings:
Warning 1292 Truncated incorrect time value: '18446744073709551615:00:00'
SELECT EXTRACT(HOUR FROM '100000:02:03');
EXTRACT(HOUR FROM '100000:02:03')
838
Warnings:
Warning 1292 Truncated incorrect time value: '100000:02:03'
CREATE TABLE t1(f1 TIME);
INSERT INTO t1 VALUES('916:00:00 a');
Warnings:
Warning 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
SELECT * FROM t1;
f1
838:59:59
DROP TABLE t1;
SELECT SEC_TO_TIME(CAST(-1 AS UNSIGNED));
SEC_TO_TIME(CAST(-1 AS UNSIGNED))
838:59:59
Warnings:
Warning 1292 Truncated incorrect time value: '18446744073709551615'
SET NAMES latin1;
SET character_set_results = NULL;
SHOW VARIABLES LIKE 'character_set_results';
@ -922,18 +1047,6 @@ union
(select time_format(timediff(now(), DATE_SUB(now(),INTERVAL 5 HOUR)),'%k') As H);
H
5
SET NAMES latin1;
SET character_set_results = NULL;
SHOW VARIABLES LIKE 'character_set_results';
Variable_name Value
character_set_results
CREATE TABLE testBug8868 (field1 DATE, field2 VARCHAR(32) CHARACTER SET BINARY);
INSERT INTO testBug8868 VALUES ('2006-09-04', 'abcd');
SELECT DATE_FORMAT(field1,'%b-%e %l:%i%p') as fmtddate, field2 FROM testBug8868;
fmtddate field2
Sep-4 12:00AM abcd
DROP TABLE testBug8868;
SET NAMES DEFAULT;
End of 4.1 tests
explain extended select timestampdiff(SQL_TSI_WEEK, '2001-02-01', '2001-05-01') as a1,
timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05-01 12:58:58.119999') as a2;

View File

@ -336,12 +336,12 @@ drop database mysqltest_1;
set password = password("changed");
ERROR 42000: Access denied for user ''@'localhost' to database 'mysql'
lock table mysql.user write;
flush privileges;
grant all on *.* to 'mysqltest_1'@'localhost';
flush privileges;
grant all on *.* to 'mysqltest_1'@'localhost';
unlock tables;
lock table mysql.user write;
set password for 'mysqltest_1'@'localhost' = password('');
revoke all on *.* from 'mysqltest_1'@'localhost';
set password for 'mysqltest_1'@'localhost' = password('');
revoke all on *.* from 'mysqltest_1'@'localhost';
unlock tables;
drop user 'mysqltest_1'@'localhost';
create database TESTDB;

View File

@ -476,7 +476,7 @@ handler t1 read first;
c1
1
send the below to another connection, do not wait for the result
optimize table t1;
optimize table t1;
proceed with the normal connection
handler t1 read next;
c1
@ -502,7 +502,7 @@ flush tables with read lock;
drop table t1;
ERROR HY000: Can't execute the query because you have a conflicting read lock
send the below to another connection, do not wait for the result
drop table t1;
drop table t1;
proceed with the normal connection
select * from t1;
c1

View File

@ -476,7 +476,7 @@ handler t1 read first;
c1
1
send the below to another connection, do not wait for the result
optimize table t1;
optimize table t1;
proceed with the normal connection
handler t1 read next;
c1
@ -502,7 +502,7 @@ flush tables with read lock;
drop table t1;
ERROR HY000: Can't execute the query because you have a conflicting read lock
send the below to another connection, do not wait for the result
drop table t1;
drop table t1;
proceed with the normal connection
select * from t1;
c1

View File

@ -8,6 +8,7 @@ mysqld2 offline
Killing the process...
Sleeping...
Success: the process was restarted.
Success: server is ready to accept connection on socket.
--------------------------------------------------------------------
-- Test for BUG#12751
@ -17,6 +18,7 @@ Success: the process has been started.
Killing the process...
Sleeping...
Success: the process was restarted.
Success: server is ready to accept connection on socket.
SHOW INSTANCE STATUS mysqld1;
instance_name state version_number version mysqld_compatible
mysqld1 online VERSION_NUMBER VERSION no

View File

@ -25,7 +25,7 @@ Success: the process has been stopped.
-- 1.1.4.
--------------------------------------------------------------------
START INSTANCE mysqld3;
ERROR HY000: Bad instance name. Check that the instance with such a name exists
ERROR HY000: Unknown instance name
START INSTANCE mysqld1;
ERROR HY000: The instance is already started
@ -33,7 +33,7 @@ ERROR HY000: The instance is already started
-- 1.1.5.
--------------------------------------------------------------------
STOP INSTANCE mysqld3;
ERROR HY000: Bad instance name. Check that the instance with such a name exists
ERROR HY000: Unknown instance name
--------------------------------------------------------------------
-- 1.1.6.

View File

@ -759,6 +759,7 @@ select table_schema,table_name, column_name from
information_schema.columns
where data_type = 'longtext';
table_schema table_name column_name
information_schema COLUMNS COLUMN_DEFAULT
information_schema COLUMNS COLUMN_TYPE
information_schema EVENTS EVENT_DEFINITION
information_schema EVENTS SQL_MODE
@ -1315,6 +1316,19 @@ WHERE table_name=(SELECT MAX(table_name)
FROM information_schema.tables);
table_name
VIEWS
DROP TABLE IF EXISTS bug23037;
DROP FUNCTION IF EXISTS get_value;
SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037';
COLUMN_NAME MD5(COLUMN_DEFAULT) LENGTH(COLUMN_DEFAULT)
fld1 7cf7a6782be951a1f2464a350da926a5 65532
SELECT MD5(get_value());
MD5(get_value())
7cf7a6782be951a1f2464a350da926a5
SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT), COLUMN_DEFAULT=get_value() FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037';
COLUMN_NAME MD5(COLUMN_DEFAULT) LENGTH(COLUMN_DEFAULT) COLUMN_DEFAULT=get_value()
fld1 7cf7a6782be951a1f2464a350da926a5 65532 1
DROP TABLE bug23037;
DROP FUNCTION get_value;
End of 5.0 tests.
select * from information_schema.engines WHERE ENGINE="MyISAM";
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS

View File

@ -1,11 +1,5 @@
SET SESSION STORAGE_ENGINE = InnoDB;
drop table if exists t1,t2,t1m,t1i,t2m,t2i,t4;
create table t1(f1 varchar(800) binary not null, key(f1))
character set utf8 collate utf8_general_ci;
Warnings:
Warning 1071 Specified key was too long; max key length is 765 bytes
insert into t1 values('aaa');
drop table t1;
create table t1 (
c_id int(11) not null default '0',
org_id int(11) default null,
@ -111,6 +105,14 @@ SELECT `id1` FROM `t1` WHERE `id1` NOT IN (SELECT `id1` FROM `t2` WHERE `id2` =
id1
2
DROP TABLE t1, t2;
create table t1 (c1 int) engine=innodb;
handler t1 open;
handler t1 read first;
c1
Before and after comparison
0
drop table t1;
End of 4.1 tests
create table t1m (a int) engine = MEMORY;
create table t1i (a int);
create table t2m (a int) engine = MEMORY;
@ -248,6 +250,22 @@ b
c
d
drop table t1,t4;
DROP TABLE IF EXISTS t2, t1;
CREATE TABLE t1 (i INT NOT NULL PRIMARY KEY) ENGINE= InnoDB;
CREATE TABLE t2 (
i INT NOT NULL,
FOREIGN KEY (i) REFERENCES t1 (i) ON DELETE NO ACTION
) ENGINE= InnoDB;
INSERT INTO t1 VALUES (1);
INSERT INTO t2 VALUES (1);
DELETE IGNORE FROM t1 WHERE i = 1;
Warnings:
Error 1451 Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`i`) REFERENCES `t1` (`i`) ON DELETE NO ACTION)
SELECT * FROM t1, t2;
i i
1 1
DROP TABLE t2, t1;
End of 4.1 tests.
create table t1 (
a varchar(30), b varchar(30), primary key(a), key(b)
);
@ -369,6 +387,23 @@ Warnings:
Warning 1071 Specified key was too long; max key length is 765 bytes
insert into t1 values('aaa');
drop table t1;
CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c FLOAT, KEY b(b)) ENGINE = INNODB;
INSERT INTO t1 VALUES ( 1 , 1 , 1);
INSERT INTO t1 SELECT a + 1 , MOD(a + 1 , 20), 1 FROM t1;
INSERT INTO t1 SELECT a + 2 , MOD(a + 2 , 20), 1 FROM t1;
INSERT INTO t1 SELECT a + 4 , MOD(a + 4 , 20), 1 FROM t1;
INSERT INTO t1 SELECT a + 8 , MOD(a + 8 , 20), 1 FROM t1;
INSERT INTO t1 SELECT a + 16, MOD(a + 16, 20), 1 FROM t1;
INSERT INTO t1 SELECT a + 32, MOD(a + 32, 20), 1 FROM t1;
INSERT INTO t1 SELECT a + 64, MOD(a + 64, 20), 1 FROM t1;
EXPLAIN SELECT b, SUM(c) FROM t1 GROUP BY b;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index NULL b 5 NULL 128
EXPLAIN SELECT SQL_BIG_RESULT b, SUM(c) FROM t1 GROUP BY b;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 128 Using filesort
DROP TABLE t1;
End of 5.0 tests
CREATE TABLE `t2` (
`k` int(11) NOT NULL auto_increment,
`a` int(11) default NULL,
@ -437,3 +472,4 @@ k a c
11 15 1
12 20 1
drop table t2;
End of 5.1 tests

View File

@ -10,7 +10,7 @@ start transaction;
select f1();
f1()
100
update t1 set col2=0 where col1=1;
update t1 set col2=0 where col1=1;
select * from t1;
col1 col2
1 100

View File

@ -16,13 +16,13 @@ select 4;
4
drop table t1;
kill (select count(*) from mysql.user);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select count(*) from mysql.user)' at line 1
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
create table t1 (id int primary key);
create table t2 (id int unsigned not null);
insert into t2 select id from t1;
create table t3 (kill_id int);
insert into t3 values(connection_id());
select id from t1 where id in (select distinct id from t2);
select id from t1 where id in (select distinct id from t2);
select ((@id := kill_id) - kill_id) from t3;
((@id := kill_id) - kill_id)
0
@ -32,7 +32,7 @@ drop table t1, t2, t3;
select get_lock("a", 10);
get_lock("a", 10)
1
select get_lock("a", 10);
select get_lock("a", 10);
get_lock("a", 10)
NULL
select 1;

View File

@ -2,8 +2,8 @@ drop table if exists t1,t2;
create table t1(n int);
insert into t1 values (1);
lock tables t1 write;
update low_priority t1 set n = 4;
select n from t1;
update low_priority t1 set n = 4;
select n from t1;
unlock tables;
n
4
@ -11,8 +11,8 @@ drop table t1;
create table t1(n int);
insert into t1 values (1);
lock tables t1 read;
update low_priority t1 set n = 4;
select n from t1;
update low_priority t1 set n = 4;
select n from t1;
unlock tables;
n
1
@ -23,7 +23,7 @@ insert into t1 values(1,1);
insert into t1 values(2,2);
insert into t2 values(1,2);
lock table t1 read;
update t1,t2 set c=a where b=d;
update t1,t2 set c=a where b=d;
select c from t2;
c
2
@ -32,14 +32,14 @@ drop table t2;
create table t1 (a int);
create table t2 (a int);
lock table t1 write, t2 write;
insert t1 select * from t2;
insert t1 select * from t2;
drop table t2;
ERROR 42S02: Table 'test.t2' doesn't exist
drop table t1;
create table t1 (a int);
create table t2 (a int);
lock table t1 write, t2 write, t1 as t1_2 write, t2 as t2_2 write;
insert t1 select * from t2;
insert t1 select * from t2;
drop table t2;
ERROR 42S02: Table 'test.t2' doesn't exist
drop table t1;
@ -54,7 +54,7 @@ use mysql;
LOCK TABLES columns_priv WRITE, db WRITE, host WRITE, user WRITE;
FLUSH TABLES;
use mysql;
SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1;
SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1;
OPTIMIZE TABLES columns_priv, db, host, user;
Table Op Msg_type Msg_text
mysql.columns_priv optimize status OK
@ -68,14 +68,14 @@ use test;
use test;
CREATE TABLE t1 (c1 int);
LOCK TABLE t1 WRITE;
FLUSH TABLES WITH READ LOCK;
FLUSH TABLES WITH READ LOCK;
CREATE TABLE t2 (c1 int);
UNLOCK TABLES;
UNLOCK TABLES;
DROP TABLE t1, t2;
CREATE TABLE t1 (c1 int);
LOCK TABLE t1 WRITE;
FLUSH TABLES WITH READ LOCK;
FLUSH TABLES WITH READ LOCK;
CREATE TABLE t2 AS SELECT * FROM t1;
ERROR HY000: Table 't2' was not locked with LOCK TABLES
UNLOCK TABLES;
@ -83,7 +83,7 @@ UNLOCK TABLES;
DROP TABLE t1;
CREATE DATABASE mysqltest_1;
FLUSH TABLES WITH READ LOCK;
DROP DATABASE mysqltest_1;
DROP DATABASE mysqltest_1;
DROP DATABASE mysqltest_1;
ERROR HY000: Can't execute the query because you have a conflicting read lock
UNLOCK TABLES;
@ -91,7 +91,7 @@ DROP DATABASE mysqltest_1;
ERROR HY000: Can't drop database 'mysqltest_1'; database doesn't exist
create table t1 (f1 int(12) unsigned not null auto_increment, primary key(f1)) engine=innodb;
lock tables t1 write;
alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
unlock tables;
drop table t1;

View File

@ -39,14 +39,14 @@ ERROR HY000: You can't use usual read lock with log tables. Try READ LOCAL inste
lock tables mysql.slow_log READ LOCAL, mysql.general_log READ LOCAL;
unlock tables;
lock tables mysql.general_log READ LOCAL;
flush logs;
flush logs;
unlock tables;
select "Mark that we woke up from flush logs in the test"
as "test passed";
test passed
Mark that we woke up from flush logs in the test
lock tables mysql.general_log READ LOCAL;
truncate mysql.general_log;
truncate mysql.general_log;
unlock tables;
select "Mark that we woke up from TRUNCATE in the test"
as "test passed";
@ -218,3 +218,71 @@ unlock tables;
use mysql;
lock tables general_log read local, help_category read local;
unlock tables;
use mysql;
RENAME TABLE general_log TO renamed_general_log;
ERROR HY000: Cannot rename 'general_log'. When logging enabled, rename to/from log table must rename two tables: the log table to an archive table and another table back to 'general_log'
RENAME TABLE slow_log TO renamed_slow_log;
ERROR HY000: Cannot rename 'slow_log'. When logging enabled, rename to/from log table must rename two tables: the log table to an archive table and another table back to 'slow_log'
truncate table general_log;
select * from general_log;
event_time user_host thread_id server_id command_type argument
TIMESTAMP USER_HOST THREAD_ID 1 Query select * from general_log
truncate table slow_log;
select * from slow_log;
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
create table general_log_new like general_log;
rename table general_log TO renamed_general_log, general_log_new TO general_log;
create table slow_log_new like slow_log;
rename table slow_log TO renamed_slow_log, slow_log_new TO slow_log;
rename table general_log TO general_log_new, renamed_general_log TO general_log, slow_log to renamed_slow_log;
ERROR HY000: Cannot rename 'slow_log'. When logging enabled, rename to/from log table must rename two tables: the log table to an archive table and another table back to 'slow_log'
select * from general_log;
event_time user_host thread_id server_id command_type argument
TIMESTAMP USER_HOST THREAD_ID 1 Query create table slow_log_new like slow_log
TIMESTAMP USER_HOST THREAD_ID 1 Query rename table slow_log TO renamed_slow_log, slow_log_new TO slow_log
TIMESTAMP USER_HOST THREAD_ID 1 Query rename table general_log TO general_log_new, renamed_general_log TO general_log, slow_log to renamed_slow_log
TIMESTAMP USER_HOST THREAD_ID 1 Query select * from general_log
select * from renamed_general_log;
event_time user_host thread_id server_id command_type argument
TIMESTAMP USER_HOST THREAD_ID 1 Query select * from general_log
TIMESTAMP USER_HOST THREAD_ID 1 Query truncate table slow_log
TIMESTAMP USER_HOST THREAD_ID 1 Query select * from slow_log
TIMESTAMP USER_HOST THREAD_ID 1 Query create table general_log_new like general_log
TIMESTAMP USER_HOST THREAD_ID 1 Query rename table general_log TO renamed_general_log, general_log_new TO general_log
select * from slow_log;
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
select * from renamed_slow_log;
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
set global general_log='OFF';
RENAME TABLE general_log TO general_log2;
set global slow_query_log='OFF';
RENAME TABLE slow_log TO slow_log2;
set global general_log='ON';
ERROR HY000: Cannot activate 'general' log
set global slow_query_log='ON';
ERROR HY000: Cannot activate 'slow query' log
RENAME TABLE general_log2 TO general_log;
RENAME TABLE slow_log2 TO slow_log;
set global general_log='ON';
set global slow_query_log='ON';
flush logs;
flush logs;
drop table renamed_general_log, renamed_slow_log;
use test;
use mysql;
repair table general_log;
Table Op Msg_type Msg_text
mysql.general_log repair status OK
repair table slow_log;
Table Op Msg_type Msg_text
mysql.slow_log repair status OK
create table general_log_new like general_log;
create table slow_log_new like slow_log;
show tables like "%log%";
Tables_in_mysql (%log%)
general_log
general_log_new
slow_log
slow_log_new
drop table slow_log_new, general_log_new;
use test;

View File

@ -509,8 +509,8 @@ create table t2 (a int);
insert into t2 values (10), (20), (30);
create view v1 as select a as b, a/10 as a from t2;
lock table t1 write;
alter table t1 add column c int default 100 after a;
update t1, v1 set t1.b=t1.a+t1.b+v1.b where t1.a=v1.a;
alter table t1 add column c int default 100 after a;
update t1, v1 set t1.b=t1.a+t1.b+v1.b where t1.a=v1.a;
unlock tables;
select * from t1;
a c b

View File

@ -149,4 +149,33 @@ ERROR at line 1: USE must be followed by a database name
\\
';
';
create table t17583 (a int);
insert into t17583 (a) values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
insert into t17583 select a from t17583;
insert into t17583 select a from t17583;
insert into t17583 select a from t17583;
insert into t17583 select a from t17583;
insert into t17583 select a from t17583;
insert into t17583 select a from t17583;
insert into t17583 select a from t17583;
select count(*) from t17583;
count(*)
1280
drop table t17583;
Test connect without db- or host-name => reconnect
Test connect with dbname only => new dbname, old hostname
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'connecttest' at line 1
Test connect with _invalid_ dbname only => new invalid dbname, old hostname
ERROR 1049 (42000) at line 1: Unknown database 'invalid'
ERROR 1049 (42000) at line 1: Unknown database 'invalid'
Test connect with dbname + hostname
Test connect with dbname + _invalid_ hostname
ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'invalid_hostname' (errno)
ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'invalid_hostname' (errno)
The commands reported in the bug report
ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'cyril has found a bug :)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' (errno)
Too long dbname
ERROR 1049 (42000) at line 1: Unknown database 'test_really_long_dbnamexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
Too long hostname
ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'cyrils_superlonghostnameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' (errno)
End of 5.0 tests

View File

@ -1,21 +1,4 @@
drop table if exists t1;
Warnings:
Note 1051 Unknown table 't1'
drop table if exists t2;
Warnings:
Note 1051 Unknown table 't2'
drop table if exists t3;
Warnings:
Note 1051 Unknown table 't3'
drop table if exists t4;
Warnings:
Note 1051 Unknown table 't4'
drop table if exists t5;
Warnings:
Note 1051 Unknown table 't5'
drop table if exists t6;
Warnings:
Note 1051 Unknown table 't6'
drop table if exists t1, t2, t3, t4, t5, t6;
create table t1 (id int(8), name varchar(32));
create table t2 (id int(8), name varchar(32)) ENGINE="MyISAM";
create table t3 (id int(8), name varchar(32)) ENGINE="MEMORY";

View File

@ -3195,6 +3195,28 @@ UNLOCK TABLES;
DROP TABLE `t1`;
#
# Bug #19745: mysqldump --xml produces invalid xml
#
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (f1 int(10), data MEDIUMBLOB);
INSERT INTO t1 VALUES(1,0xff00fef0);
<?xml version="1.0"?>
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="test">
<table_structure name="t1">
<field Field="f1" Type="int(10)" Null="YES" Key="" Extra="" />
<field Field="data" Type="mediumblob" Null="YES" Key="" Extra="" />
</table_structure>
<table_data name="t1">
<row>
<field name="f1">1</field>
<field name="data" xsi:type="xs:hexBinary">FF00FEF0</field>
</row>
</table_data>
</database>
</mysqldump>
DROP TABLE t1;
#
# End of 5.0 tests
#
drop table if exists t1;

View File

@ -152,8 +152,38 @@ mysqltest: At line 1: Missing delimiter
mysqltest: At line 1: End of line junk detected: "sleep 7
# Another comment
"
mysqltest: At line 1: Missing delimiter
mysqltest: At line 1: Missing delimiter
mysqltest: At line 1: End of line junk detected: "disconnect default
#
# comment
# comment2
# comment 3
--disable_query_log
"
mysqltest: At line 1: End of line junk detected: "disconnect default # comment
# comment part2
# comment 3
--disable_query_log
"
mysqltest: At line 1: Extra delimiter ";" found
mysqltest: At line 1: Extra delimiter ";" found
mysqltest: At line 1: Missing argument(s) to 'error'
mysqltest: At line 1: Missing argument(s) to 'error'
mysqltest: At line 1: The sqlstate definition must start with an uppercase S
mysqltest: At line 1: The error name definition must start with an uppercase E
mysqltest: At line 1: Invalid argument to error: '9eeeee' - the errno may only consist of digits[0-9]
mysqltest: At line 1: Invalid argument to error: '1sssss' - the errno may only consist of digits[0-9]
mysqltest: At line 1: The sqlstate must be exactly 5 chars long
mysqltest: At line 1: The sqlstate may only consist of digits[0-9] and _uppercase_ letters
mysqltest: At line 1: The sqlstate must be exactly 5 chars long
mysqltest: At line 1: Unknown SQL error name 'E9999'
mysqltest: At line 1: Invalid argument to error: '999e9' - the errno may only consist of digits[0-9]
mysqltest: At line 1: Invalid argument to error: '9b' - the errno may only consist of digits[0-9]
mysqltest: At line 1: Too many errorcodes specified
MySQL
"MySQL"
MySQL: The world''s most popular open source database
@ -239,7 +269,7 @@ mysqltest: At line 1: Missing assignment operator in let
1
# Execute: echo $success ;
1
mysqltest: At line 1: Missing file name in source
mysqltest: At line 1: Missing required argument 'filename' to command 'source'
mysqltest: At line 1: Could not open file ./non_existingFile
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/recursive.sql": At line 1: Source directives are nesting too deep
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/error.sql": At line 1: query 'garbage ' failed: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'garbage' at line 1
@ -332,16 +362,16 @@ Counter is greater than 0, (counter=10)
Counter is not 0, (counter=0)
1
Testing while with not
mysqltest: In included file "./include/mysqltest_while.inc": At line 64: Nesting too deeply
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest_while.inc": At line 64: Nesting too deeply
mysqltest: At line 1: missing '(' in while
mysqltest: At line 1: missing ')' in while
mysqltest: At line 1: Missing '{' after while. Found "dec $i"
mysqltest: At line 1: Stray '}' - end of block before beginning
mysqltest: At line 1: Stray 'end' command - end of block before beginning
mysqltest: At line 1: query '' failed: 1065: Query was empty
mysqltest: At line 1: query '{' failed: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{' at line 1
mysqltest: At line 1: Missing '{' after while. Found "echo hej"
mysqltest: At line 3: Missing end of block
mysqltest: At line 1: Missing newline between while and '{'
mysqltest: At line 3: Missing end of block
mysqltest: At line 1: missing '(' in if
mysqltest: At line 1: Stray 'end' command - end of block before beginning
select "b" bs col1, "c" bs col2;
@ -371,17 +401,15 @@ mysqltest: At line 1: Wrong column number to replace_column in 'replace_column 1
mysqltest: At line 1: Invalid integer argument "10!"
mysqltest: At line 1: End of line junk detected: "!"
mysqltest: At line 1: Invalid integer argument "a"
mysqltest: At line 1: Syntax error in connect - expected '(' found 'mysqltest: At line 1: Missing connection host
mysqltest: At line 1: Missing connection host
mysqltest: At line 1: Missing connection user
mysqltest: At line 1: Missing connection user
mysqltest: At line 1: Missing connection password
mysqltest: At line 1: Missing connection db
mysqltest: At line 1: Could not open connection 'con2': 1049 Unknown database 'illegal_db'
mysqltest: At line 1: Missing required argument 'connection name' to command 'connect'
mysqltest: At line 1: Missing required argument 'connection name' to command 'connect'
mysqltest: At line 1: Missing required argument 'host' to command 'connect'
mysqltest: At line 1: Missing required argument 'host' to command 'connect'
mysqltest: At line 1: query 'connect con2,localhost,root,,illegal_db' failed: 1049: Unknown database 'illegal_db'
mysqltest: At line 1: Illegal argument for port: 'illegal_port'
mysqltest: At line 1: Illegal option to connect: SMTP
OK
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 7: Connection limit exhausted - increase MAX_CONS in mysqltest.c
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 7: Connection limit exhausted, you can have max 128 connections
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 3: connection 'test_con1' not found in connection pool
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 2: Connection test_con1 already exists
connect(localhost,root,,test,MASTER_PORT,MASTER_SOCKET);
@ -449,7 +477,6 @@ sleep;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sleep' at line 1
;
ERROR 42000: Query was empty
End of 5.0 tests
select "b" as col1, "c" as col2;
col1 col2
b c
@ -477,4 +504,20 @@ a D
1 1
1 4
drop table t1;
End of 5.1 tests
mysqltest: At line 1: Missing required argument 'filename' to command 'remove_file'
mysqltest: At line 1: Missing required argument 'filename' to command 'write_file'
mysqltest: At line 1: End of file encountered before 'EOF' delimiter was found
mysqltest: At line 1: End of line junk detected: "write_file filename ";
"
mysqltest: At line 1: Missing required argument 'filename' to command 'file_exists'
mysqltest: At line 1: Missing required argument 'from_file' to command 'copy_file'
mysqltest: At line 1: Missing required argument 'to_file' to command 'copy_file'
hello
hello
hello
mysqltest: At line 1: Max delimiter length(16) exceeded
hello
hello
mysqltest: At line 1: test of die
Some output
End of tests

View File

@ -0,0 +1,2 @@
Variable_name Value
have_partitioning NO

View File

@ -0,0 +1,48 @@
CREATE TABLE t1 (
firstname VARCHAR(25) NOT NULL,
lastname VARCHAR(25) NOT NULL,
username VARCHAR(16) NOT NULL,
email VARCHAR(35),
joined DATE NOT NULL
)
PARTITION BY KEY(joined)
PARTITIONS 6;
ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-partition' to have it working
ALTER TABLE t1 PARTITION BY KEY(joined) PARTITIONS 2;
ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-partition' to have it working
drop table t1;
ERROR 42S02: Unknown table 't1'
CREATE TABLE t1 (
firstname VARCHAR(25) NOT NULL,
lastname VARCHAR(25) NOT NULL,
username VARCHAR(16) NOT NULL,
email VARCHAR(35),
joined DATE NOT NULL
)
PARTITION BY RANGE( YEAR(joined) ) (
PARTITION p0 VALUES LESS THAN (1960),
PARTITION p1 VALUES LESS THAN (1970),
PARTITION p2 VALUES LESS THAN (1980),
PARTITION p3 VALUES LESS THAN (1990),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-partition' to have it working
drop table t1;
ERROR 42S02: Unknown table 't1'
CREATE TABLE t1 (id INT, purchased DATE)
PARTITION BY RANGE( YEAR(purchased) )
SUBPARTITION BY HASH( TO_DAYS(purchased) )
SUBPARTITIONS 2 (
PARTITION p0 VALUES LESS THAN (1990),
PARTITION p1 VALUES LESS THAN (2000),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-partition' to have it working
drop table t1;
ERROR 42S02: Unknown table 't1'
create table t1 (a varchar(10) charset latin1 collate latin1_bin);
insert into t1 values (''),(' '),('a'),('a '),('a ');
explain partitions select * from t1 where a='a ' OR a='a';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 5 Using where
drop table t1;

View File

@ -47,7 +47,7 @@ drop table t1;
mysqltest: Could not open connection 'default': 2026 SSL connection error
mysqltest: Could not open connection 'default': 2026 SSL connection error
mysqltest: Could not open connection 'default': 2026 SSL connection error
Error when connection to server using SSL:Unable to get private key from ''
SSL error: Unable to get private key from ''
mysqltest: Could not open connection 'default': 2026 SSL connection error
Error when connection to server using SSL:Unable to get certificate from ''
SSL error: Unable to get certificate from ''
mysqltest: Could not open connection 'default': 2026 SSL connection error

388
mysql-test/r/parser.result Normal file
View File

@ -0,0 +1,388 @@
SET @save_sql_mode=@@sql_mode;
set SQL_MODE='';
create table ADDDATE(a int);
drop table ADDDATE;
create table ADDDATE (a int);
drop table ADDDATE;
create table BIT_AND(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BIT_AND(a int)' at line 1
create table BIT_AND (a int);
drop table BIT_AND;
create table BIT_OR(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BIT_OR(a int)' at line 1
create table BIT_OR (a int);
drop table BIT_OR;
create table BIT_XOR(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BIT_XOR(a int)' at line 1
create table BIT_XOR (a int);
drop table BIT_XOR;
create table CAST(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CAST(a int)' at line 1
create table CAST (a int);
drop table CAST;
create table COUNT(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COUNT(a int)' at line 1
create table COUNT (a int);
drop table COUNT;
create table CURDATE(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURDATE(a int)' at line 1
create table CURDATE (a int);
drop table CURDATE;
create table CURTIME(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURTIME(a int)' at line 1
create table CURTIME (a int);
drop table CURTIME;
create table DATE_ADD(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATE_ADD(a int)' at line 1
create table DATE_ADD (a int);
drop table DATE_ADD;
create table DATE_SUB(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATE_SUB(a int)' at line 1
create table DATE_SUB (a int);
drop table DATE_SUB;
create table EXTRACT(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXTRACT(a int)' at line 1
create table EXTRACT (a int);
drop table EXTRACT;
create table GROUP_CONCAT(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_CONCAT(a int)' at line 1
create table GROUP_CONCAT (a int);
drop table GROUP_CONCAT;
create table GROUP_UNIQUE_USERS(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_UNIQUE_USERS(a int)' at line 1
create table GROUP_UNIQUE_USERS (a int);
drop table GROUP_UNIQUE_USERS;
create table MAX(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MAX(a int)' at line 1
create table MAX (a int);
drop table MAX;
create table MID(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MID(a int)' at line 1
create table MID (a int);
drop table MID;
create table MIN(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MIN(a int)' at line 1
create table MIN (a int);
drop table MIN;
create table NOW(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOW(a int)' at line 1
create table NOW (a int);
drop table NOW;
create table POSITION(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'POSITION(a int)' at line 1
create table POSITION (a int);
drop table POSITION;
create table SESSION_USER(a int);
drop table SESSION_USER;
create table SESSION_USER (a int);
drop table SESSION_USER;
create table STD(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STD(a int)' at line 1
create table STD (a int);
drop table STD;
create table STDDEV(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STDDEV(a int)' at line 1
create table STDDEV (a int);
drop table STDDEV;
create table STDDEV_POP(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STDDEV_POP(a int)' at line 1
create table STDDEV_POP (a int);
drop table STDDEV_POP;
create table STDDEV_SAMP(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STDDEV_SAMP(a int)' at line 1
create table STDDEV_SAMP (a int);
drop table STDDEV_SAMP;
create table SUBDATE(a int);
drop table SUBDATE;
create table SUBDATE (a int);
drop table SUBDATE;
create table SUBSTR(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUBSTR(a int)' at line 1
create table SUBSTR (a int);
drop table SUBSTR;
create table SUBSTRING(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUBSTRING(a int)' at line 1
create table SUBSTRING (a int);
drop table SUBSTRING;
create table SUM(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUM(a int)' at line 1
create table SUM (a int);
drop table SUM;
create table SYSDATE(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SYSDATE(a int)' at line 1
create table SYSDATE (a int);
drop table SYSDATE;
create table SYSTEM_USER(a int);
drop table SYSTEM_USER;
create table SYSTEM_USER (a int);
drop table SYSTEM_USER;
create table TRIM(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRIM(a int)' at line 1
create table TRIM (a int);
drop table TRIM;
create table UNIQUE_USERS(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNIQUE_USERS(a int)' at line 1
create table UNIQUE_USERS (a int);
drop table UNIQUE_USERS;
create table VARIANCE(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARIANCE(a int)' at line 1
create table VARIANCE (a int);
drop table VARIANCE;
create table VAR_POP(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VAR_POP(a int)' at line 1
create table VAR_POP (a int);
drop table VAR_POP;
create table VAR_SAMP(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VAR_SAMP(a int)' at line 1
create table VAR_SAMP (a int);
drop table VAR_SAMP;
set SQL_MODE='IGNORE_SPACE';
create table ADDDATE(a int);
drop table ADDDATE;
create table ADDDATE (a int);
drop table ADDDATE;
create table BIT_AND(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BIT_AND(a int)' at line 1
create table BIT_AND (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BIT_AND (a int)' at line 1
create table BIT_OR(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BIT_OR(a int)' at line 1
create table BIT_OR (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BIT_OR (a int)' at line 1
create table BIT_XOR(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BIT_XOR(a int)' at line 1
create table BIT_XOR (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BIT_XOR (a int)' at line 1
create table CAST(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CAST(a int)' at line 1
create table CAST (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CAST (a int)' at line 1
create table COUNT(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COUNT(a int)' at line 1
create table COUNT (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COUNT (a int)' at line 1
create table CURDATE(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURDATE(a int)' at line 1
create table CURDATE (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURDATE (a int)' at line 1
create table CURTIME(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURTIME(a int)' at line 1
create table CURTIME (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURTIME (a int)' at line 1
create table DATE_ADD(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATE_ADD(a int)' at line 1
create table DATE_ADD (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATE_ADD (a int)' at line 1
create table DATE_SUB(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATE_SUB(a int)' at line 1
create table DATE_SUB (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATE_SUB (a int)' at line 1
create table EXTRACT(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXTRACT(a int)' at line 1
create table EXTRACT (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXTRACT (a int)' at line 1
create table GROUP_CONCAT(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_CONCAT(a int)' at line 1
create table GROUP_CONCAT (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_CONCAT (a int)' at line 1
create table GROUP_UNIQUE_USERS(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_UNIQUE_USERS(a int)' at line 1
create table GROUP_UNIQUE_USERS (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_UNIQUE_USERS (a int)' at line 1
create table MAX(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MAX(a int)' at line 1
create table MAX (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MAX (a int)' at line 1
create table MID(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MID(a int)' at line 1
create table MID (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MID (a int)' at line 1
create table MIN(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MIN(a int)' at line 1
create table MIN (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MIN (a int)' at line 1
create table NOW(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOW(a int)' at line 1
create table NOW (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOW (a int)' at line 1
create table POSITION(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'POSITION(a int)' at line 1
create table POSITION (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'POSITION (a int)' at line 1
create table SESSION_USER(a int);
drop table SESSION_USER;
create table SESSION_USER (a int);
drop table SESSION_USER;
create table STD(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STD(a int)' at line 1
create table STD (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STD (a int)' at line 1
create table STDDEV(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STDDEV(a int)' at line 1
create table STDDEV (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STDDEV (a int)' at line 1
create table STDDEV_POP(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STDDEV_POP(a int)' at line 1
create table STDDEV_POP (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STDDEV_POP (a int)' at line 1
create table STDDEV_SAMP(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STDDEV_SAMP(a int)' at line 1
create table STDDEV_SAMP (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STDDEV_SAMP (a int)' at line 1
create table SUBDATE(a int);
drop table SUBDATE;
create table SUBDATE (a int);
drop table SUBDATE;
create table SUBSTR(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUBSTR(a int)' at line 1
create table SUBSTR (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUBSTR (a int)' at line 1
create table SUBSTRING(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUBSTRING(a int)' at line 1
create table SUBSTRING (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUBSTRING (a int)' at line 1
create table SUM(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUM(a int)' at line 1
create table SUM (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUM (a int)' at line 1
create table SYSDATE(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SYSDATE(a int)' at line 1
create table SYSDATE (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SYSDATE (a int)' at line 1
create table SYSTEM_USER(a int);
drop table SYSTEM_USER;
create table SYSTEM_USER (a int);
drop table SYSTEM_USER;
create table TRIM(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRIM(a int)' at line 1
create table TRIM (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRIM (a int)' at line 1
create table UNIQUE_USERS(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNIQUE_USERS(a int)' at line 1
create table UNIQUE_USERS (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNIQUE_USERS (a int)' at line 1
create table VARIANCE(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARIANCE(a int)' at line 1
create table VARIANCE (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARIANCE (a int)' at line 1
create table VAR_POP(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VAR_POP(a int)' at line 1
create table VAR_POP (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VAR_POP (a int)' at line 1
create table VAR_SAMP(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VAR_SAMP(a int)' at line 1
create table VAR_SAMP (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VAR_SAMP (a int)' at line 1
SET @@sql_mode=@save_sql_mode;
select pi(3.14);
ERROR 42000: Incorrect parameter count in the call to native function 'pi'
select tan();
ERROR 42000: Incorrect parameter count in the call to native function 'tan'
select tan(1, 2);
ERROR 42000: Incorrect parameter count in the call to native function 'tan'
select makedate(1);
ERROR 42000: Incorrect parameter count in the call to native function 'makedate'
select makedate(1, 2, 3);
ERROR 42000: Incorrect parameter count in the call to native function 'makedate'
select maketime();
ERROR 42000: Incorrect parameter count in the call to native function 'maketime'
select maketime(1);
ERROR 42000: Incorrect parameter count in the call to native function 'maketime'
select maketime(1, 2);
ERROR 42000: Incorrect parameter count in the call to native function 'maketime'
select maketime(1, 2, 3, 4);
ERROR 42000: Incorrect parameter count in the call to native function 'maketime'
select atan();
ERROR 42000: Incorrect parameter count in the call to native function 'atan'
select atan2(1, 2, 3);
ERROR 42000: Incorrect parameter count in the call to native function 'atan2'
select benchmark(10, 1+1);
benchmark(10, 1+1)
0
select benchmark(5+5, 2);
ERROR 42000: Incorrect parameters in the call to native function 'BENCHMARK'
select concat();
ERROR 42000: Incorrect parameter count in the call to native function 'concat'
select concat("foo");
concat("foo")
foo
select concat_ws();
ERROR 42000: Incorrect parameter count in the call to native function 'concat_ws'
select concat_ws("foo");
ERROR 42000: Incorrect parameter count in the call to native function 'concat_ws'
set @pwd="my password";
select encode("secret", @pwd);
ERROR 42000: Incorrect parameters in the call to native function 'ENCODE'
select decode("encoded-secret", @pwd);
ERROR 42000: Incorrect parameters in the call to native function 'DECODE'
select encrypt();
ERROR 42000: Incorrect parameter count in the call to native function 'encrypt'
select encrypt(1, 2, 3);
ERROR 42000: Incorrect parameter count in the call to native function 'encrypt'
select des_encrypt("p1", "p2", "not expected");
ERROR 42000: Incorrect parameter count in the call to native function 'des_encrypt'
select des_decrypt("p1", "p2", "not expected");
ERROR 42000: Incorrect parameter count in the call to native function 'des_decrypt'
select elt();
ERROR 42000: Incorrect parameter count in the call to native function 'elt'
select elt(1);
ERROR 42000: Incorrect parameter count in the call to native function 'elt'
select export_set();
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
select export_set("p1");
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
select export_set("p1", "p2");
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
select export_set("p1", "p2", "p3", "p4", "p5", "p6");
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
select field();
ERROR 42000: Incorrect parameter count in the call to native function 'field'
select field("p1");
ERROR 42000: Incorrect parameter count in the call to native function 'field'
set @dec=2;
select format(pi(), @dec);
ERROR 42000: Incorrect parameters in the call to native function 'FORMAT'
select from_unixtime();
ERROR 42000: Incorrect parameter count in the call to native function 'from_unixtime'
select from_unixtime(1, 2, 3);
ERROR 42000: Incorrect parameter count in the call to native function 'from_unixtime'
select unix_timestamp(1, 2);
ERROR 42000: Incorrect parameter count in the call to native function 'unix_timestamp'
select greatest();
ERROR 42000: Incorrect parameter count in the call to native function 'greatest'
select greatest(12);
ERROR 42000: Incorrect parameter count in the call to native function 'greatest'
select last_insert_id(1, 2);
ERROR 42000: Incorrect parameter count in the call to native function 'last_insert_id'
select least();
ERROR 42000: Incorrect parameter count in the call to native function 'least'
select least(12);
ERROR 42000: Incorrect parameter count in the call to native function 'least'
select locate();
ERROR 42000: Incorrect parameter count in the call to native function 'locate'
select locate(1);
ERROR 42000: Incorrect parameter count in the call to native function 'locate'
select locate(1, 2, 3, 4);
ERROR 42000: Incorrect parameter count in the call to native function 'locate'
select log();
ERROR 42000: Incorrect parameter count in the call to native function 'log'
select log(1, 2, 3);
ERROR 42000: Incorrect parameter count in the call to native function 'log'
select make_set();
ERROR 42000: Incorrect parameter count in the call to native function 'make_set'
select make_set(1);
ERROR 42000: Incorrect parameter count in the call to native function 'make_set'
select master_pos_wait();
ERROR 42000: Incorrect parameter count in the call to native function 'master_pos_wait'
select master_pos_wait(1);
ERROR 42000: Incorrect parameter count in the call to native function 'master_pos_wait'
select master_pos_wait(1, 2, 3, 4);
ERROR 42000: Incorrect parameter count in the call to native function 'master_pos_wait'
select rand(1, 2, 3);
ERROR 42000: Incorrect parameter count in the call to native function 'rand'
select round(1, 2, 3);
ERROR 42000: Incorrect parameter count in the call to native function 'round'
select yearweek();
ERROR 42000: Incorrect parameter count in the call to native function 'yearweek'
select yearweek(1, 2, 3);
ERROR 42000: Incorrect parameter count in the call to native function 'yearweek'

View File

@ -0,0 +1,867 @@
drop table if exists abs;
drop table if exists bug21114_child;
SHOW CREATE TABLE abs;
Table Create Table
abs CREATE TABLE `abs` (
`col1` int(11) NOT NULL,
`col2` int(11) NOT NULL,
`col3` varchar(10) DEFAULT NULL,
PRIMARY KEY (`col1`,`col2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SHOW CREATE TABLE bug21114_child;
Table Create Table
bug21114_child CREATE TABLE `bug21114_child` (
`pk` int(11) NOT NULL,
`fk_col1` int(11) NOT NULL,
`fk_col2` int(11) NOT NULL,
`fk_col3` int(11) NOT NULL,
`fk_col4` int(11) NOT NULL,
KEY `fk_fct` (`fk_col1`,`fk_col2`),
KEY `fk_fct_space` (`fk_col3`,`fk_col4`),
CONSTRAINT `fk_fct` FOREIGN KEY (`fk_col1`, `fk_col2`) REFERENCES `abs` (`col1`, `col2`),
CONSTRAINT `fk_fct_space` FOREIGN KEY (`fk_col3`, `fk_col4`) REFERENCES `abs` (`col1`, `col2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE bug21114_child;
DROP TABLE abs;
drop table if exists field;
drop table if exists bug21114_child;
SHOW CREATE TABLE field;
Table Create Table
field CREATE TABLE `field` (
`col1` int(11) NOT NULL,
`col2` int(11) NOT NULL,
`col3` varchar(10) DEFAULT NULL,
PRIMARY KEY (`col1`,`col2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SHOW CREATE TABLE bug21114_child;
Table Create Table
bug21114_child CREATE TABLE `bug21114_child` (
`pk` int(11) NOT NULL,
`fk_col1` int(11) NOT NULL,
`fk_col2` int(11) NOT NULL,
`fk_col3` int(11) NOT NULL,
`fk_col4` int(11) NOT NULL,
KEY `fk_fct` (`fk_col1`,`fk_col2`),
KEY `fk_fct_space` (`fk_col3`,`fk_col4`),
CONSTRAINT `fk_fct` FOREIGN KEY (`fk_col1`, `fk_col2`) REFERENCES `field` (`col1`, `col2`),
CONSTRAINT `fk_fct_space` FOREIGN KEY (`fk_col3`, `fk_col4`) REFERENCES `field` (`col1`, `col2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE bug21114_child;
DROP TABLE field;
drop table if exists format;
drop table if exists bug21114_child;
SHOW CREATE TABLE format;
Table Create Table
format CREATE TABLE `format` (
`col1` int(11) NOT NULL,
`col2` int(11) NOT NULL,
`col3` varchar(10) DEFAULT NULL,
PRIMARY KEY (`col1`,`col2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SHOW CREATE TABLE bug21114_child;
Table Create Table
bug21114_child CREATE TABLE `bug21114_child` (
`pk` int(11) NOT NULL,
`fk_col1` int(11) NOT NULL,
`fk_col2` int(11) NOT NULL,
`fk_col3` int(11) NOT NULL,
`fk_col4` int(11) NOT NULL,
KEY `fk_fct` (`fk_col1`,`fk_col2`),
KEY `fk_fct_space` (`fk_col3`,`fk_col4`),
CONSTRAINT `fk_fct` FOREIGN KEY (`fk_col1`, `fk_col2`) REFERENCES `format` (`col1`, `col2`),
CONSTRAINT `fk_fct_space` FOREIGN KEY (`fk_col3`, `fk_col4`) REFERENCES `format` (`col1`, `col2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE bug21114_child;
DROP TABLE format;
drop table if exists acos;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE acos;
drop table if exists adddate;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE adddate;
drop table if exists addtime;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE addtime;
drop table if exists aes_decrypt;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE aes_decrypt;
drop table if exists aes_encrypt;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE aes_encrypt;
drop table if exists area;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE area;
drop table if exists asbinary;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE asbinary;
drop table if exists asin;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE asin;
drop table if exists astext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE astext;
drop table if exists aswkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE aswkb;
drop table if exists aswkt;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE aswkt;
drop table if exists atan;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE atan;
drop table if exists atan2;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE atan2;
drop table if exists benchmark;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE benchmark;
drop table if exists bin;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE bin;
drop table if exists bit_count;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE bit_count;
drop table if exists bit_length;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE bit_length;
drop table if exists ceil;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE ceil;
drop table if exists ceiling;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE ceiling;
drop table if exists centroid;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE centroid;
drop table if exists character_length;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE character_length;
drop table if exists char_length;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE char_length;
drop table if exists coercibility;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE coercibility;
drop table if exists compress;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE compress;
drop table if exists concat;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE concat;
drop table if exists concat_ws;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE concat_ws;
drop table if exists connection_id;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE connection_id;
drop table if exists conv;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE conv;
drop table if exists convert_tz;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE convert_tz;
drop table if exists cos;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE cos;
drop table if exists cot;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE cot;
drop table if exists crc32;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE crc32;
drop table if exists crosses;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE crosses;
drop table if exists datediff;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE datediff;
drop table if exists date_format;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE date_format;
drop table if exists dayname;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE dayname;
drop table if exists dayofmonth;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE dayofmonth;
drop table if exists dayofweek;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE dayofweek;
drop table if exists dayofyear;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE dayofyear;
drop table if exists decode;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE decode;
drop table if exists degrees;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE degrees;
drop table if exists des_decrypt;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE des_decrypt;
drop table if exists des_encrypt;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE des_encrypt;
drop table if exists dimension;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE dimension;
drop table if exists disjoint;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE disjoint;
drop table if exists elt;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE elt;
drop table if exists encode;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE encode;
drop table if exists encrypt;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE encrypt;
drop table if exists endpoint;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE endpoint;
drop table if exists envelope;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE envelope;
drop table if exists equals;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE equals;
drop table if exists exp;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE exp;
drop table if exists export_set;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE export_set;
drop table if exists exteriorring;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE exteriorring;
drop table if exists extractvalue;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE extractvalue;
drop table if exists find_in_set;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE find_in_set;
drop table if exists floor;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE floor;
drop table if exists found_rows;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE found_rows;
drop table if exists from_days;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE from_days;
drop table if exists from_unixtime;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE from_unixtime;
drop table if exists geomcollfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE geomcollfromtext;
drop table if exists geomcollfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE geomcollfromwkb;
drop table if exists geometrycollectionfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE geometrycollectionfromtext;
drop table if exists geometrycollectionfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE geometrycollectionfromwkb;
drop table if exists geometryfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE geometryfromtext;
drop table if exists geometryfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE geometryfromwkb;
drop table if exists geometryn;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE geometryn;
drop table if exists geometrytype;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE geometrytype;
drop table if exists geomfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE geomfromtext;
drop table if exists geomfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE geomfromwkb;
drop table if exists get_lock;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE get_lock;
drop table if exists glength;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE glength;
drop table if exists greatest;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE greatest;
drop table if exists hex;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE hex;
drop table if exists ifnull;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE ifnull;
drop table if exists inet_aton;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE inet_aton;
drop table if exists inet_ntoa;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE inet_ntoa;
drop table if exists instr;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE instr;
drop table if exists interiorringn;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE interiorringn;
drop table if exists intersects;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE intersects;
drop table if exists isclosed;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE isclosed;
drop table if exists isempty;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE isempty;
drop table if exists isnull;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE isnull;
drop table if exists issimple;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE issimple;
drop table if exists is_free_lock;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE is_free_lock;
drop table if exists is_used_lock;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE is_used_lock;
drop table if exists last_day;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE last_day;
drop table if exists last_insert_id;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE last_insert_id;
drop table if exists lcase;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE lcase;
drop table if exists least;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE least;
drop table if exists length;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE length;
drop table if exists linefromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE linefromtext;
drop table if exists linefromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE linefromwkb;
drop table if exists linestringfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE linestringfromtext;
drop table if exists linestringfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE linestringfromwkb;
drop table if exists ln;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE ln;
drop table if exists load_file;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE load_file;
drop table if exists locate;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE locate;
drop table if exists log;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE log;
drop table if exists log10;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE log10;
drop table if exists log2;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE log2;
drop table if exists lower;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE lower;
drop table if exists lpad;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE lpad;
drop table if exists ltrim;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE ltrim;
drop table if exists makedate;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE makedate;
drop table if exists maketime;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE maketime;
drop table if exists make_set;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE make_set;
drop table if exists master_pos_wait;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE master_pos_wait;
drop table if exists mbrcontains;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mbrcontains;
drop table if exists mbrdisjoint;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mbrdisjoint;
drop table if exists mbrequal;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mbrequal;
drop table if exists mbrintersects;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mbrintersects;
drop table if exists mbroverlaps;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mbroverlaps;
drop table if exists mbrtouches;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mbrtouches;
drop table if exists mbrwithin;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mbrwithin;
drop table if exists md5;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE md5;
drop table if exists mlinefromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mlinefromtext;
drop table if exists mlinefromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mlinefromwkb;
drop table if exists monthname;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE monthname;
drop table if exists mpointfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mpointfromtext;
drop table if exists mpointfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mpointfromwkb;
drop table if exists mpolyfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mpolyfromtext;
drop table if exists mpolyfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE mpolyfromwkb;
drop table if exists multilinestringfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE multilinestringfromtext;
drop table if exists multilinestringfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE multilinestringfromwkb;
drop table if exists multipointfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE multipointfromtext;
drop table if exists multipointfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE multipointfromwkb;
drop table if exists multipolygonfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE multipolygonfromtext;
drop table if exists multipolygonfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE multipolygonfromwkb;
drop table if exists name_const;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE name_const;
drop table if exists nullif;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE nullif;
drop table if exists numgeometries;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE numgeometries;
drop table if exists numinteriorrings;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE numinteriorrings;
drop table if exists numpoints;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE numpoints;
drop table if exists oct;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE oct;
drop table if exists octet_length;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE octet_length;
drop table if exists ord;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE ord;
drop table if exists overlaps;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE overlaps;
drop table if exists period_add;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE period_add;
drop table if exists period_diff;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE period_diff;
drop table if exists pi;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE pi;
drop table if exists pointfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE pointfromtext;
drop table if exists pointfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE pointfromwkb;
drop table if exists pointn;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE pointn;
drop table if exists polyfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE polyfromtext;
drop table if exists polyfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE polyfromwkb;
drop table if exists polygonfromtext;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE polygonfromtext;
drop table if exists polygonfromwkb;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE polygonfromwkb;
drop table if exists pow;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE pow;
drop table if exists power;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE power;
drop table if exists quote;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE quote;
drop table if exists radians;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE radians;
drop table if exists rand;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE rand;
drop table if exists release_lock;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE release_lock;
drop table if exists reverse;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE reverse;
drop table if exists round;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE round;
drop table if exists row_count;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE row_count;
drop table if exists rpad;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE rpad;
drop table if exists rtrim;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE rtrim;
drop table if exists sec_to_time;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE sec_to_time;
drop table if exists session_user;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE session_user;
drop table if exists sha;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE sha;
drop table if exists sha1;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE sha1;
drop table if exists sign;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE sign;
drop table if exists sin;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE sin;
drop table if exists sleep;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE sleep;
drop table if exists soundex;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE soundex;
drop table if exists space;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE space;
drop table if exists sqrt;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE sqrt;
drop table if exists srid;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE srid;
drop table if exists startpoint;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE startpoint;
drop table if exists strcmp;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE strcmp;
drop table if exists str_to_date;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE str_to_date;
drop table if exists subdate;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE subdate;
drop table if exists substring_index;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE substring_index;
drop table if exists subtime;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE subtime;
drop table if exists system_user;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE system_user;
drop table if exists tan;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE tan;
drop table if exists timediff;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE timediff;
drop table if exists time_format;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE time_format;
drop table if exists time_to_sec;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE time_to_sec;
drop table if exists touches;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE touches;
drop table if exists to_days;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE to_days;
drop table if exists ucase;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE ucase;
drop table if exists uncompress;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE uncompress;
drop table if exists uncompressed_length;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE uncompressed_length;
drop table if exists unhex;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE unhex;
drop table if exists unix_timestamp;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE unix_timestamp;
drop table if exists updatexml;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE updatexml;
drop table if exists upper;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE upper;
drop table if exists uuid;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE uuid;
drop table if exists version;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE version;
drop table if exists weekday;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE weekday;
drop table if exists weekofyear;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE weekofyear;
drop table if exists within;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE within;
drop table if exists x;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE x;
drop table if exists y;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE y;
drop table if exists yearweek;
drop table if exists bug21114_child;
DROP TABLE bug21114_child;
DROP TABLE yearweek;

View File

@ -1090,41 +1090,15 @@ drop table t1;
create table t1 (a int) engine myisam
partition by range (a)
subpartition by hash (a)
(partition p0 VALUES LESS THAN (1) DATA DIRECTORY = 'hello/master-data/tmpdata' INDEX DIRECTORY = 'hello/master-data/tmpinx'
(partition p0 VALUES LESS THAN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/master-data/tmpdata' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/master-data/tmpinx'
(SUBPARTITION subpart00, SUBPARTITION subpart01));
hello/master-data/test/t1.frm
hello/master-data/test/t1.par
hello/master-data/test/t1#P#p0#SP#subpart00.MYD
hello/master-data/test/t1#P#p0#SP#subpart00.MYI
hello/master-data/test/t1#P#p0#SP#subpart01.MYD
hello/master-data/test/t1#P#p0#SP#subpart01.MYI
hello/master-data/tmpdata/t1#P#p0#SP#subpart00.MYD
hello/master-data/tmpdata/t1#P#p0#SP#subpart01.MYD
hello/master-data/tmpinx/t1#P#p0#SP#subpart00.MYI
hello/master-data/tmpinx/t1#P#p0#SP#subpart01.MYI
Checking if file exists before alter
ALTER TABLE t1 REORGANIZE PARTITION p0 INTO
(partition p1 VALUES LESS THAN (1) DATA DIRECTORY = 'hello/master-data/tmpdata' INDEX DIRECTORY = 'hello/master-data/tmpinx'
(partition p1 VALUES LESS THAN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/master-data/tmpdata' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/master-data/tmpinx'
(SUBPARTITION subpart10, SUBPARTITION subpart11),
partition p2 VALUES LESS THAN (2) DATA DIRECTORY = 'hello/master-data/tmpdata' INDEX DIRECTORY = 'hello/master-data/tmpinx'
partition p2 VALUES LESS THAN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/master-data/tmpdata' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/master-data/tmpinx'
(SUBPARTITION subpart20, SUBPARTITION subpart21));
hello/master-data/test/t1.frm
hello/master-data/test/t1.par
hello/master-data/test/t1#P#p1#SP#subpart10.MYD
hello/master-data/test/t1#P#p1#SP#subpart10.MYI
hello/master-data/test/t1#P#p1#SP#subpart11.MYD
hello/master-data/test/t1#P#p1#SP#subpart11.MYI
hello/master-data/test/t1#P#p2#SP#subpart20.MYD
hello/master-data/test/t1#P#p2#SP#subpart20.MYI
hello/master-data/test/t1#P#p2#SP#subpart21.MYD
hello/master-data/test/t1#P#p2#SP#subpart21.MYI
hello/master-data/tmpdata/t1#P#p1#SP#subpart10.MYD
hello/master-data/tmpdata/t1#P#p1#SP#subpart11.MYD
hello/master-data/tmpdata/t1#P#p2#SP#subpart20.MYD
hello/master-data/tmpdata/t1#P#p2#SP#subpart21.MYD
hello/master-data/tmpinx/t1#P#p1#SP#subpart10.MYI
hello/master-data/tmpinx/t1#P#p1#SP#subpart11.MYI
hello/master-data/tmpinx/t1#P#p2#SP#subpart20.MYI
hello/master-data/tmpinx/t1#P#p2#SP#subpart21.MYI
Checking if file exists after alter
drop table t1;
create table t1 (a bigint unsigned not null, primary key(a))
engine = myisam

View File

@ -502,7 +502,8 @@ deallocate prepare stmt;
create table t1 (a varchar(20));
insert into t1 values ('foo');
prepare stmt FROM 'SELECT char_length (a) FROM t1';
ERROR 42000: FUNCTION test.char_length does not exist
prepare stmt2 FROM 'SELECT not_a_function (a) FROM t1';
ERROR 42000: FUNCTION test.not_a_function does not exist
drop table t1;
prepare stmt from "SELECT SQL_CALC_FOUND_ROWS 'foo' UNION SELECT 'bar' LIMIT 0";
execute stmt;
@ -956,11 +957,108 @@ GROUP_CONCAT(Track SEPARATOR ', ')
CAD
DEALLOCATE PREPARE STMT;
DROP TABLE t1;
End of 4.1 tests
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (i INT, INDEX(i));
INSERT INTO t1 VALUES (1);
PREPARE stmt FROM "SELECT (COUNT(i) = 1), COUNT(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
(COUNT(i) = 1) COUNT(i)
0 0
SET @a = 1;
EXECUTE stmt USING @a;
(COUNT(i) = 1) COUNT(i)
1 1
SET @a = 0;
EXECUTE stmt USING @a;
(COUNT(i) = 1) COUNT(i)
0 0
PREPARE stmt FROM "SELECT (AVG(i) = 1), AVG(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
(AVG(i) = 1) AVG(i)
NULL NULL
SET @a = 1;
EXECUTE stmt USING @a;
(AVG(i) = 1) AVG(i)
1 1.0000
SET @a = 0;
EXECUTE stmt USING @a;
(AVG(i) = 1) AVG(i)
NULL NULL
PREPARE stmt FROM "SELECT (VARIANCE(i) = 1), VARIANCE(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
(VARIANCE(i) = 1) VARIANCE(i)
NULL NULL
SET @a = 1;
EXECUTE stmt USING @a;
(VARIANCE(i) = 1) VARIANCE(i)
0 0.0000
SET @a = 0;
EXECUTE stmt USING @a;
(VARIANCE(i) = 1) VARIANCE(i)
NULL NULL
PREPARE stmt FROM "SELECT (STDDEV(i) = 1), STDDEV(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
(STDDEV(i) = 1) STDDEV(i)
NULL NULL
SET @a = 1;
EXECUTE stmt USING @a;
(STDDEV(i) = 1) STDDEV(i)
0 0.0000
SET @a = 0;
EXECUTE stmt USING @a;
(STDDEV(i) = 1) STDDEV(i)
NULL NULL
PREPARE stmt FROM "SELECT (BIT_OR(i) = 1), BIT_OR(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
(BIT_OR(i) = 1) BIT_OR(i)
0 0
SET @a = 1;
EXECUTE stmt USING @a;
(BIT_OR(i) = 1) BIT_OR(i)
1 1
SET @a = 0;
EXECUTE stmt USING @a;
(BIT_OR(i) = 1) BIT_OR(i)
0 0
PREPARE stmt FROM "SELECT (BIT_AND(i) = 1), BIT_AND(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
(BIT_AND(i) = 1) BIT_AND(i)
0 18446744073709551615
SET @a = 1;
EXECUTE stmt USING @a;
(BIT_AND(i) = 1) BIT_AND(i)
1 1
SET @a = 0;
EXECUTE stmt USING @a;
(BIT_AND(i) = 1) BIT_AND(i)
0 18446744073709551615
PREPARE stmt FROM "SELECT (BIT_XOR(i) = 1), BIT_XOR(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
(BIT_XOR(i) = 1) BIT_XOR(i)
0 0
SET @a = 1;
EXECUTE stmt USING @a;
(BIT_XOR(i) = 1) BIT_XOR(i)
1 1
SET @a = 0;
EXECUTE stmt USING @a;
(BIT_XOR(i) = 1) BIT_XOR(i)
0 0
DEALLOCATE PREPARE stmt;
DROP TABLE t1;
End of 4.1 tests.
create table t1 (a varchar(20));
insert into t1 values ('foo');
prepare stmt FROM 'SELECT char_length (a) FROM t1';
ERROR 42000: FUNCTION test.char_length does not exist
prepare stmt2 FROM 'SELECT not_a_function (a) FROM t1';
ERROR 42000: FUNCTION test.not_a_function does not exist
drop table t1;
create table t1 (a char(3) not null, b char(3) not null,
c char(3) not null, primary key (a, b, c));
@ -1379,6 +1477,24 @@ i
1
DEALLOCATE PREPARE stmt;
DROP TABLE t1, t2;
DROP PROCEDURE IF EXISTS p1;
flush status;
prepare sq from 'show status like "slow_queries"';
execute sq;
Variable_name Value
Slow_queries 0
prepare no_index from 'select 1 from information_schema.tables limit 1';
execute sq;
Variable_name Value
Slow_queries 0
execute no_index;
1
1
execute sq;
Variable_name Value
Slow_queries 1
deallocate prepare no_index;
deallocate prepare sq;
End of 5.0 tests.
create procedure proc_1() reset query cache;
call proc_1();
@ -1520,54 +1636,62 @@ flush tables;
show open tables from mysql;
Database Table In_use Name_locked
mysql general_log 1 0
mysql slow_log 1 0
select Host, User from mysql.user limit 0;
Host User
select Host, Db from mysql.host limit 0;
Host Db
show open tables from mysql;
Database Table In_use Name_locked
mysql user 0 0
mysql general_log 1 0
mysql slow_log 1 0
mysql host 0 0
mysql user 0 0
call proc_1();
show open tables from mysql;
Database Table In_use Name_locked
mysql general_log 1 0
mysql slow_log 1 0
select Host, User from mysql.user limit 0;
Host User
select Host, Db from mysql.host limit 0;
Host Db
show open tables from mysql;
Database Table In_use Name_locked
mysql user 0 0
mysql general_log 1 0
mysql slow_log 1 0
mysql host 0 0
mysql user 0 0
call proc_1();
show open tables from mysql;
Database Table In_use Name_locked
mysql general_log 1 0
mysql slow_log 1 0
select Host, User from mysql.user limit 0;
Host User
select Host, Db from mysql.host limit 0;
Host Db
show open tables from mysql;
Database Table In_use Name_locked
mysql user 0 0
mysql general_log 1 0
mysql slow_log 1 0
mysql host 0 0
mysql user 0 0
call proc_1();
show open tables from mysql;
Database Table In_use Name_locked
mysql general_log 1 0
mysql slow_log 1 0
select Host, User from mysql.user limit 0;
Host User
select Host, Db from mysql.host limit 0;
Host Db
show open tables from mysql;
Database Table In_use Name_locked
mysql user 0 0
mysql general_log 1 0
mysql slow_log 1 0
mysql host 0 0
mysql user 0 0
flush tables;
create function func_1() returns int begin flush tables; return 1; end|
ERROR 0A000: FLUSH is not allowed in stored function or trigger
@ -1583,49 +1707,56 @@ select Host, Db from mysql.host limit 0;
Host Db
show open tables from mysql;
Database Table In_use Name_locked
mysql user 0 0
mysql general_log 1 0
mysql slow_log 1 0
mysql host 0 0
mysql user 0 0
prepare abc from "flush tables";
execute abc;
show open tables from mysql;
Database Table In_use Name_locked
mysql general_log 1 0
mysql slow_log 1 0
select Host, User from mysql.user limit 0;
Host User
select Host, Db from mysql.host limit 0;
Host Db
show open tables from mysql;
Database Table In_use Name_locked
mysql user 0 0
mysql general_log 1 0
mysql slow_log 1 0
mysql host 0 0
mysql user 0 0
execute abc;
show open tables from mysql;
Database Table In_use Name_locked
mysql general_log 1 0
mysql slow_log 1 0
select Host, User from mysql.user limit 0;
Host User
select Host, Db from mysql.host limit 0;
Host Db
show open tables from mysql;
Database Table In_use Name_locked
mysql user 0 0
mysql general_log 1 0
mysql slow_log 1 0
mysql host 0 0
mysql user 0 0
execute abc;
show open tables from mysql;
Database Table In_use Name_locked
mysql general_log 1 0
mysql slow_log 1 0
select Host, User from mysql.user limit 0;
Host User
select Host, Db from mysql.host limit 0;
Host Db
show open tables from mysql;
Database Table In_use Name_locked
mysql user 0 0
mysql general_log 1 0
mysql slow_log 1 0
mysql host 0 0
mysql user 0 0
flush tables;
deallocate prepare abc;
create procedure proc_1() flush logs;

View File

@ -130,3 +130,36 @@ prepare st_18492 from 'select * from t1 where 3 in (select (1+1) union select 1)
execute st_18492;
a
drop table t1;
create table t1 (a int, b varchar(4));
create table t2 (a int, b varchar(4), primary key(a));
prepare stmt1 from 'insert into t1 (a, b) values (?, ?)';
prepare stmt2 from 'insert into t2 (a, b) values (?, ?)';
set @intarg= 11;
set @varchararg= '2222';
execute stmt1 using @intarg, @varchararg;
execute stmt2 using @intarg, @varchararg;
set @intarg= 12;
execute stmt1 using @intarg, @UNDEFINED;
execute stmt2 using @intarg, @UNDEFINED;
set @intarg= 13;
execute stmt1 using @UNDEFINED, @varchararg;
execute stmt2 using @UNDEFINED, @varchararg;
ERROR 23000: Column 'a' cannot be null
set @intarg= 14;
set @nullarg= Null;
execute stmt1 using @UNDEFINED, @nullarg;
execute stmt2 using @nullarg, @varchararg;
ERROR 23000: Column 'a' cannot be null
select * from t1;
a b
11 2222
12 NULL
NULL 2222
NULL NULL
select * from t2;
a b
11 2222
12 NULL
drop table t1;
drop table t2;
End of 5.0 tests.

File diff suppressed because one or more lines are too long

View File

@ -326,7 +326,7 @@ insert into t1 values(3);
set i_var = sleep(3);
return 0;
end;|
select f1();
select f1();
select sleep(4);
sleep(4)
0

View File

@ -665,6 +665,16 @@ OR ((pk4 =1) AND (((pk1 IN ( 7, 2, 1 ))) OR (pk1 =522)) AND ((pk2 IN ( 0, 2635))
pk1 pk2 pk3 pk4 filler
2621 2635 1000015 0 filler
drop table t1, t2;
create table t1(a char(2), key(a(1)));
insert into t1 values ('x'), ('xx');
explain select a from t1 where a > 'x';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range a a 2 NULL 2 Using where
select a from t1 where a > 'x';
a
xx
drop table t1;
End of 4.1 tests
CREATE TABLE t1 (
id int(11) NOT NULL auto_increment,
status varchar(20),

View File

@ -43,7 +43,7 @@ Note 1051 Unknown table 't4'
CREATE TABLE t1 (a int);
CREATE TABLE t3 (a int);
FLUSH TABLES WITH READ LOCK;
RENAME TABLE t1 TO t2, t3 to t4;
RENAME TABLE t1 TO t2, t3 to t4;
show tables;
Tables_in_test
t1
@ -54,6 +54,7 @@ Tables_in_test
t2
t4
drop table t2, t4;
End of 4.1 tests
create table t1(f1 int);
create view v1 as select * from t1;
alter table v1 rename to v2;
@ -64,3 +65,4 @@ rename table v2 to v1;
ERROR 42S01: Table 'v1' already exists
drop view v1;
drop table t1;
End of 5.0 tests

View File

@ -26,7 +26,7 @@ create table t2 (a int primary key);
insert into t2 values(1);
create table t3 (id int);
insert into t3 values(connection_id());
update t2 set a = a + 1 + get_lock('crash_lock%20C', 10);
update t2 set a = a + 1 + get_lock('crash_lock%20C', 10);
select (@id := id) - id from t3;
(@id := id) - id
0

View File

@ -12,7 +12,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1003 select master_pos_wait(_latin1'master-bin.999999',0,2) AS `master_pos_wait('master-bin.999999',0,2)`
select master_pos_wait('master-bin.999999',0);
select master_pos_wait('master-bin.999999',0);
stop slave sql_thread;
master_pos_wait('master-bin.999999',0)
NULL

View File

@ -21,7 +21,7 @@ END|
SELECT get_lock("test", 200);
get_lock("test", 200)
1
CALL test.p1();
CALL test.p1();
CALL test.p2();
SELECT release_lock("test");
release_lock("test")

View File

@ -21,7 +21,7 @@ END|
SELECT get_lock("test", 200);
get_lock("test", 200)
1
CALL test.p1();
CALL test.p1();
CALL test.p2();
SELECT release_lock("test");
release_lock("test")

View File

@ -44,7 +44,7 @@ create table t2(id int);
insert into t2 values(connection_id());
create temporary table t3(n int);
insert into t3 select get_lock('crash_lock%20C', 1) from t2;
update t1 set n = n + get_lock('crash_lock%20C', 2);
update t1 set n = n + get_lock('crash_lock%20C', 2);
select (@id := id) - id from t2;
(@id := id) - id
0

View File

@ -74,8 +74,6 @@ get_lock("bug12480",2)
1
create table t1 (a datetime,b datetime, c datetime);
drop function if exists bug12480;
Warnings:
Note 1305 FUNCTION bug12480 does not exist
create function bug12480() returns datetime
begin
set @a=get_lock("bug12480",2);

View File

@ -148,12 +148,14 @@ flush tables;
show open tables;
Database Table In_use Name_locked
mysql general_log 1 0
mysql slow_log 1 0
create table t1(n int);
insert into t1 values (1);
show open tables;
Database Table In_use Name_locked
test t1 0 0
mysql general_log 1 0
mysql slow_log 1 0
test t1 0 0
drop table t1;
create table t1 (a int not null, b VARCHAR(10), INDEX (b) ) AVG_ROW_LENGTH=10 CHECKSUM=1 COMMENT="test" ENGINE=MYISAM MIN_ROWS=10 MAX_ROWS=100 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=fixed;
show create table t1;
@ -566,21 +568,23 @@ SELECT 1 FROM mysql.db, mysql.proc, mysql.user, mysql.time_zone, mysql.time_zone
1
SHOW OPEN TABLES;
Database Table In_use Name_locked
mysql db 0 0
mysql proc 0 0
test urkunde 0 0
mysql time_zone 0 0
mysql general_log 1 0
mysql db 0 0
test txt1 0 0
mysql proc 0 0
mysql slow_log 1 0
test tyt2 0 0
mysql general_log 1 0
mysql user 0 0
mysql time_zone_name 0 0
SHOW OPEN TABLES FROM mysql;
Database Table In_use Name_locked
mysql db 0 0
mysql time_zone 0 0
mysql general_log 1 0
mysql proc 0 0
mysql time_zone 0 0
mysql db 0 0
mysql slow_log 1 0
mysql general_log 1 0
mysql user 0 0
mysql time_zone_name 0 0
SHOW OPEN TABLES FROM mysql LIKE 'u%';
@ -594,14 +598,16 @@ test tyt2 0 0
mysql time_zone_name 0 0
SHOW OPEN TABLES LIKE '%o%';
Database Table In_use Name_locked
mysql time_zone 0 0
mysql general_log 1 0
mysql proc 0 0
mysql time_zone 0 0
mysql slow_log 1 0
mysql general_log 1 0
mysql time_zone_name 0 0
FLUSH TABLES;
SHOW OPEN TABLES;
Database Table In_use Name_locked
mysql general_log 1 0
mysql slow_log 1 0
DROP TABLE txt1;
DROP TABLE tyt2;
DROP TABLE urkunde;
@ -672,6 +678,21 @@ SHOW TABLES FROM no_such_database;
ERROR 42000: Unknown database 'no_such_database'
SHOW COLUMNS FROM no_such_table;
ERROR 42S02: Table 'test.no_such_table' doesn't exist
flush status;
show status like 'slow_queries';
Variable_name Value
Slow_queries 0
show tables;
Tables_in_test
show status like 'slow_queries';
Variable_name Value
Slow_queries 1
select 1 from information_schema.tables limit 1;
1
1
show status like 'slow_queries';
Variable_name Value
Slow_queries 2
End of 5.0 tests.
SHOW AUTHORS;
create database mysqltest;

View File

@ -1226,6 +1226,30 @@ END;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS bug14702()
BEGIN
END' at line 1
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (i INT);
CREATE PROCEDURE bug20953() CREATE VIEW v AS SELECT 1 INTO @a;
ERROR HY000: View's SELECT contains a 'INTO' clause
CREATE PROCEDURE bug20953() CREATE VIEW v AS SELECT 1 INTO DUMPFILE "file";
ERROR HY000: View's SELECT contains a 'INTO' clause
CREATE PROCEDURE bug20953() CREATE VIEW v AS SELECT 1 INTO OUTFILE "file";
ERROR HY000: View's SELECT contains a 'INTO' clause
CREATE PROCEDURE bug20953()
CREATE VIEW v AS SELECT i FROM t1 PROCEDURE ANALYSE();
ERROR HY000: View's SELECT contains a 'PROCEDURE' clause
CREATE PROCEDURE bug20953() CREATE VIEW v AS SELECT 1 FROM (SELECT 1) AS d1;
ERROR HY000: View's SELECT contains a subquery in the FROM clause
CREATE PROCEDURE bug20953(i INT) CREATE VIEW v AS SELECT i;
ERROR HY000: View's SELECT contains a variable or parameter
CREATE PROCEDURE bug20953()
BEGIN
DECLARE i INT;
CREATE VIEW v AS SELECT i;
END |
ERROR HY000: View's SELECT contains a variable or parameter
PREPARE stmt FROM "CREATE VIEW v AS SELECT ?";
ERROR HY000: View's SELECT contains a variable or parameter
DROP TABLE t1;
End of 5.0 tests
drop function if exists bug16164;
create function bug16164() returns int
@ -1234,9 +1258,9 @@ show authors;
return 42;
end|
ERROR 0A000: Not allowed to return a result set from a function
drop function if exists bug20701|
create function bug20701() returns varchar(25) binary return "test"|
drop function if exists bug20701;
create function bug20701() returns varchar(25) binary return "test";
ERROR 42000: This version of MySQL doesn't yet support 'return value collation'
create function bug20701() returns varchar(25) return "test"|
drop function bug20701|
create function bug20701() returns varchar(25) return "test";
drop function bug20701;
End of 5.1 tests

View File

@ -31,7 +31,7 @@ create procedure bug9486()
update t1, t2 set val= 1 where id1=id2;
call bug9486();
lock tables t2 write;
call bug9486();
call bug9486();
show processlist;
Id User Host db Command Time State Info
# root localhost test Sleep # NULL
@ -77,7 +77,7 @@ select * from t1;
end|
use test;
lock table t1 write;
call p2();
call p2();
use test;
drop procedure p1;
create procedure p1() select * from t1;

View File

@ -4,6 +4,7 @@ DROP FUNCTION IF EXISTS sp_vars_check_ret1;
DROP FUNCTION IF EXISTS sp_vars_check_ret2;
DROP FUNCTION IF EXISTS sp_vars_check_ret3;
DROP FUNCTION IF EXISTS sp_vars_check_ret4;
DROP FUNCTION IF EXISTS sp_vars_div_zero;
SET @@sql_mode = 'ansi';
CREATE PROCEDURE sp_vars_check_dflt()
BEGIN
@ -88,6 +89,12 @@ CREATE FUNCTION sp_vars_check_ret4() RETURNS DECIMAL(64, 2)
BEGIN
RETURN 12 * 10 + 34 + 0.1234;
END|
CREATE FUNCTION sp_vars_div_zero() RETURNS INTEGER
BEGIN
DECLARE div_zero INTEGER;
SELECT 1/0 INTO div_zero;
RETURN div_zero;
END|
---------------------------------------------------------------
Calling the routines, created in ANSI mode.
@ -172,6 +179,9 @@ sp_vars_check_ret4()
154.12
Warnings:
Note 1265 Data truncated for column 'sp_vars_check_ret4()' at row 1
SELECT sp_vars_div_zero();
sp_vars_div_zero()
NULL
SET @@sql_mode = 'traditional';
---------------------------------------------------------------
@ -257,12 +267,16 @@ sp_vars_check_ret4()
154.12
Warnings:
Note 1265 Data truncated for column 'sp_vars_check_ret4()' at row 1
SELECT sp_vars_div_zero();
sp_vars_div_zero()
NULL
DROP PROCEDURE sp_vars_check_dflt;
DROP PROCEDURE sp_vars_check_assignment;
DROP FUNCTION sp_vars_check_ret1;
DROP FUNCTION sp_vars_check_ret2;
DROP FUNCTION sp_vars_check_ret3;
DROP FUNCTION sp_vars_check_ret4;
DROP FUNCTION sp_vars_div_zero;
CREATE PROCEDURE sp_vars_check_dflt()
BEGIN
DECLARE v1 TINYINT DEFAULT 1e200;
@ -346,6 +360,12 @@ CREATE FUNCTION sp_vars_check_ret4() RETURNS DECIMAL(64, 2)
BEGIN
RETURN 12 * 10 + 34 + 0.1234;
END|
CREATE FUNCTION sp_vars_div_zero() RETURNS INTEGER
BEGIN
DECLARE div_zero INTEGER;
SELECT 1/0 INTO div_zero;
RETURN div_zero;
END|
---------------------------------------------------------------
Calling the routines, created in TRADITIONAL mode.
@ -366,6 +386,8 @@ sp_vars_check_ret4()
154.12
Warnings:
Note 1265 Data truncated for column 'sp_vars_check_ret4()' at row 1
SELECT sp_vars_div_zero();
ERROR 22012: Division by 0
SET @@sql_mode = 'ansi';
DROP PROCEDURE sp_vars_check_dflt;
DROP PROCEDURE sp_vars_check_assignment;
@ -373,6 +395,7 @@ DROP FUNCTION sp_vars_check_ret1;
DROP FUNCTION sp_vars_check_ret2;
DROP FUNCTION sp_vars_check_ret3;
DROP FUNCTION sp_vars_check_ret4;
DROP FUNCTION sp_vars_div_zero;
---------------------------------------------------------------
BIT data type tests

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