diff options
41 files changed, 856 insertions, 992 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi index 5f6fac28e6c..7803302099d 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -141,9 +141,9 @@ This is the MySQL reference manual; it documents MySQL Version updated frequently. There is a very good chance that this version is out of date, unless you are looking at it online. The most recent version of this manual is available at -@uref{http://www.mysql.com/documentation/index.html} in many different +@uref{http://www.mysql.com/documentation/} in many different formats. If you have a hard time finding information in the manual, you -can try the searchable PHP version at @uref{http://www.mysql.com/doc}. +can try the searchable PHP version at @uref{http://www.mysql.com/doc/}. MySQL is a very fast, multi-threaded, multi-user, and robust SQL (Structured Query Language) database server. @@ -228,11 +228,10 @@ MySQL, see @ref{MySQL-Books}. @menu -* MySQL and MySQL AB:: MySQL, MySQL AB, and Open Source -* MySQL AB Logos and Trademarks:: MySQL AB Logos and Trademarks +* Manual-info:: +* What-is:: +* What is MySQL AB:: * Licensing and Support:: MySQL Support and Licensing -* MySQL AB business model and services:: The Business Model and Services of MySQL AB -* MySQL server licenses:: MySQL Server Licenses * MySQL 4.0 In A Nutshell:: MySQL 4.0 In A Nutshell * MySQL Information Sources:: MySQL Information Sources * Compatibility:: How Standards-compatible Is MySQL? @@ -241,275 +240,8 @@ MySQL, see @ref{MySQL-Books}. @end menu -@node MySQL and MySQL AB, MySQL AB Logos and Trademarks, Introduction, Introduction -@section MySQL, MySQL AB, and Open Source - -@menu -* What-is:: What is MySQL? -* What is MySQL AB:: What is MySQL AB? -* Manual-info:: About this manual -* History:: History of MySQL -* Features:: The main features of MySQL -* Stability:: How stable is MySQL? -* Table size:: How Big Can MySQL Tables Be? -* Year 2000 compliance:: Year 2000 compliance -@end menu - - -@node What-is, What is MySQL AB, MySQL and MySQL AB, MySQL and MySQL AB -@subsection What Is MySQL - -@cindex MySQL, defined -@cindex MySQL, introduction - -MySQL, the most popular Open Source SQL database, is developed and provided -by MySQL AB. MySQL AB is a commercial company that -builds its business providing services around the MySQL database. -@xref{What is MySQL AB}. - -@table @asis - -@item MySQL is a database management system. - -A database is a structured collection of data. It may be anything from a -simple shopping list to a picture gallery or the vast amounts of -information in a corporate network. To add, access, and process data -stored in a computer database, you need a database management system -such as MySQL. Since computers are very good at handling large -amounts of data, database management plays a central role in computing, -as stand-alone utilities, or as parts of other applications. - -@cindex databases, defined - -@item MySQL is a relational database management system. - -A relational database stores data in separate tables rather than putting -all the data in one big storeroom. This adds speed and flexibility. The -tables are linked by defined relations making it possible to combine -data from several tables on request. The SQL part of MySQL -stands for "Structured Query Language" - the most common standardized -language used to access databases. - -@cindex relational databases, defined -@cindex SQL, defined -@item MySQL is Open Source Software. - -Open Source means that it is possible for anyone to use and modify. -Anybody can download MySQL from the Internet and use it -without paying anything. Anybody so inclined can study the source code -and change it to fit their needs. MySQL uses the GPL (GNU -General Public License) @uref{http://www.gnu.org}, to define what you -may and may not do with the software in different situations. If you -feel uncomfortable with the GPL or need to embed MySQL into a -commercial application you can buy a commercially licensed version from -us. - -@cindex open source, defined -@cindex General Public License - -@item Why use MySQL? - -MySQL is very fast, reliable, and easy to use. If that is what -you are looking for, you should give it a try. MySQL also has a -practical set of features developed in close cooperation with -our users. You can find a performance comparison of MySQL -to some other database managers on our benchmark page. -@xref{MySQL Benchmarks}. - -MySQL was originally developed to handle large databases -much faster than existing solutions and has been successfully used in -highly demanding production environments for several years. Though -under constant development, MySQL today offers a rich and -useful set of functions. The connectivity, speed, and security make -MySQL highly suited for accessing databases on the Internet. - -@item The technical features of MySQL - -For advanced technical information, see @ref{Reference}. MySQL is -a client/server system that consists of a multi-threaded SQL server -that supports different backends, several different client programs and -libraries, administrative tools, and several programming interfaces. - -We also provide MySQL as a multi-threaded library which you can -link into your application to get a smaller, faster, easier to manage -product. - -@item MySQL has a lot of contributed software available. - -It is very likely that you will find that your favorite application or -language already supports MySQL. - -@end table - -@cindex pronunciation, MySQL -@cindex MySQL, pronunciation -@cindex goals of MySQL -The official way to pronounce MySQL is ``My Ess Que Ell'' (not -MY-SEQUEL), but we don't mind you pronounce it like MY-SEQUEL -or in some other localized way. - -@node What is MySQL AB, Manual-info, What-is, MySQL and MySQL AB -@subsection What Is MySQL AB - -@cindex MySQL AB, defined - -MySQL AB is the Swedish company owned and run by the MySQL -founders and main developers. We are dedicated to developing MySQL -and spreading our database to new users. MySQL AB owns the copyright -to the MySQL server source code and the MySQL trademark. -@xref{What-is}. - -@menu -* Contact information:: Contact information -@end menu - -We make money on support, services, commercial licenses and royalties, -and we use the revenues to fund product development and to expand the MySQL -business. The company has been profitable since its inception. In October -2001, we accepted venture financing from leading Scandinavian investors and -a handful of business angels. This investment is used to solidify our -business model and build a basis for sustainable growth. - -We have a number of partners worldwide that provide value-added products -and services around MySQL. If you are interested in working with us, please -e-mail us at @email{partner@@mysql.com}. - -Our main sources of income are: - -@itemize @bullet -@item -Commercial high quality support for MySQL provided by the -MySQL developers themselves. If you are interested in purchasing -a support contract, please visit @uref{https://order.mysql.com/} to view our -support options and order support. - -@item -Consulting services. We have developers and consultants in 12 countries -and partners in many other countries that can help you with almost any -MySQL related issues. If you need consulting services, please -e-mail a good description of your needs to @email{info@@mysql.com}! If we -can't handle this ourselves we can usually find a partner or a developer -that can help you with your problems. - -@item -Licensing MySQL for use as an embedded database. @xref{Licensing policy}. -If you have a commercial product for which you need a fast, -high quality database, but you can't afford to make your product Open Source, -you can buy the right to use the MySQL server under a -commercial copyright. If you are interested in this you can buy -MySQL licenses at @uref{https://order.mysql.com/} or contact us -at @email{licensing@@mysql.com}. - -@item -Advertising. @uref{http://www.mysql.com/} is a very popular web site with -more than 10,000,000 page views per months (January 2001). By putting a -banner on this site you are guaranteed to reach a lot of potential customers -in the open source, Linux and database communities. If you are interested -in this e-mail @email{advertising@@mysql.com}. - -@item -We are building a partner program to be able to provide MySQL -services in every country. If you are interested in becoming a partner -of MySQL AB please visit -@uref{http://www.mysql.com/information/partners.html} or e-mail -@email{partner@@mysql.com}. - -@item -We provide MySQL training classes for developers and database administrators. -For more information, please e-mail us at @email{training@@mysql.com}. - -@item -The MySQL brand has, since 1995, been associated with speed and -reliability, and is known to be something you can depend upon. If you are -interested in using the MySQL trademark in your marketing, you -can e-mail @email{info@@mysql.com} about this. -@end itemize - -The MySQL core values show our dedication to MySQL and -Open Source. - -We want MySQL to be: - -@itemize @bullet -@item -The best and the most widely used database in the world. -@item -Available and affordable for all. -@item -Easy to use. -@item -Continuously improving while remaining fast and safe. -@item -Fun to use and improve. -@item -Free from bugs. -@end itemize - -MySQL AB and the people of MySQL AB: - -@itemize @bullet -@item -Promote Open Source Philosophy and support the Open Source Community. -@item -Aim to be good citizens. -@item -Prefer partners that share our values and mind-set. -@item -Answer e-mail and provide support. -@item -Are a virtual company, networking with others. -@item -Work against software patents. -@end itemize - -@node Contact information, , What is MySQL AB, What is MySQL AB -@subsubsection Contact Information - -@cindex contact information -@cindex licensing, contact information -@cindex advertising, contact information -@cindex employment, contact information -@cindex partnering with MySQL -@cindex employment with MySQL -@cindex jobs at MySQL - -For commercial licensing, please contact the MySQL licensing -team. The much preferred method is by e-mail to -@email{licensing@@mysql.com}. Fax is also possible but handling of -these may take much longer (Fax +46-8-729 69 05). - -If you represent a business that is interested in partnering with -MySQL, please send e-mail to @email{partner@@mysql.com}. - -For timely, precise answers to technical questions about MySQL -you should order one of our -@uref{https://order.mysql.com/, support contracts}. -MySQL support is provided by the MySQL developers so the -standard is extremely high. -If you have restricted access to the Internet, please contact our sales staff -at @email{sales@@mysql.com}. - -If you are interested in placing a banner advertisement on our Web site, -please send e-mail to @email{advertising@@mysql.com}. - -If you are interested in any of the jobs listed in our -@uref{http://www.mysql.com/development/jobs/, jobs} section, please send e-mail -to @email{jobs@@mysql.com}. - -For general discussion amongst our many users, please direct your attention to -the appropriate @uref{http://www.mysql.com/documentation/lists.html, mailing -list}. - -For general information inquires, please send e-mail to -@email{info@@mysql.com}. - -For questions or comments about the workings or content of the Web site, -please send e-mail to @email{webmaster@@mysql.com}. - - - -@node Manual-info, History, What is MySQL AB, MySQL and MySQL AB -@subsection About This Manual +@node Manual-info, What-is, Introduction, Introduction +@section About This Manual This manual is currently available in Texinfo, plain text, Info, HTML, PostScript, and PDF versions. The primary document is the Texinfo file. @@ -530,7 +262,7 @@ contributors, see @ref{Credits}. @end menu @node Manual conventions, , Manual-info, Manual-info -@subsubsection Conventions Used in This Manual +@subsection Conventions Used in This Manual This manual uses certain typographical conventions: @@ -654,7 +386,108 @@ alternatives are listed within braces (@samp{@{} and @samp{@}}): @end example -@node History, Features, Manual-info, MySQL and MySQL AB +@node What-is, What is MySQL AB, Manual-info, Introduction +@section What Is MySQL + +@cindex MySQL, defined +@cindex MySQL, introduction + +MySQL, the most popular Open Source SQL database, is developed and +provided by MySQL AB. MySQL AB is a commercial company that builds +its business providing services around the MySQL database. +@xref{What is MySQL AB}. + +@table @asis + +@item MySQL is a database management system. + +A database is a structured collection of data. It may be anything from a +simple shopping list to a picture gallery or the vast amounts of +information in a corporate network. To add, access, and process data +stored in a computer database, you need a database management system +such as MySQL. Since computers are very good at handling large +amounts of data, database management plays a central role in computing, +as stand-alone utilities, or as parts of other applications. + +@cindex databases, defined + +@item MySQL is a relational database management system. + +A relational database stores data in separate tables rather than putting +all the data in one big storeroom. This adds speed and flexibility. The +tables are linked by defined relations making it possible to combine +data from several tables on request. The SQL part of MySQL +stands for "Structured Query Language" - the most common standardized +language used to access databases. + +@cindex relational databases, defined +@cindex SQL, defined +@item MySQL is Open Source Software. + +Open Source means that it is possible for anyone to use and modify. +Anybody can download MySQL from the Internet and use it +without paying anything. Anybody so inclined can study the source code +and change it to fit their needs. MySQL uses the GPL (GNU +General Public License) @uref{http://www.gnu.org}, to define what you +may and may not do with the software in different situations. If you +feel uncomfortable with the GPL or need to embed MySQL into a +commercial application you can buy a commercially licensed version from +us. + +@cindex open source, defined +@cindex General Public License + +@item Why use MySQL? + +MySQL is very fast, reliable, and easy to use. If that is what +you are looking for, you should give it a try. MySQL also has a +practical set of features developed in close cooperation with +our users. You can find a performance comparison of MySQL +to some other database managers on our benchmark page. +@xref{MySQL Benchmarks}. + +MySQL was originally developed to handle large databases +much faster than existing solutions and has been successfully used in +highly demanding production environments for several years. Though +under constant development, MySQL today offers a rich and +useful set of functions. The connectivity, speed, and security make +MySQL highly suited for accessing databases on the Internet. + +@item The technical features of MySQL + +For advanced technical information, see @ref{Reference}. MySQL is +a client/server system that consists of a multi-threaded SQL server +that supports different backends, several different client programs and +libraries, administrative tools, and several programming interfaces. + +We also provide MySQL as a multi-threaded library which you can +link into your application to get a smaller, faster, easier to manage +product. + +@item MySQL has a lot of contributed software available. + +It is very likely that you will find that your favorite application or +language already supports MySQL. + +@end table + +@cindex pronunciation, MySQL +@cindex MySQL, pronunciation +@cindex goals of MySQL +The official way to pronounce MySQL is ``My Ess Que Ell'' (not +MY-SEQUEL), but we don't mind if you pronounce it as MY-SEQUEL +or in some other localized way. + + +@menu +* History:: +* Features:: +* Stability:: +* Table size:: +* Year 2000 compliance:: +@end menu + +@node History, Features, What-is, What-is @subsection History of MySQL @cindex MySQL history @@ -676,7 +509,7 @@ is also named My. Which of the two gave its name to MySQL is still a mystery, even for us. -@node Features, Stability, History, MySQL and MySQL AB +@node Features, Stability, History, What-is @subsection The Main Features of MySQL @cindex main features of MySQL @@ -844,7 +677,7 @@ options to obtain online assistance. @end itemize -@node Stability, Table size, Features, MySQL and MySQL AB +@node Stability, Table size, Features, What-is @subsection How Stable Is MySQL? @cindex stability @@ -1007,7 +840,7 @@ Bugs are usually fixed right away with a patch; for serious bugs, there is almost always a new release. -@node Table size, Year 2000 compliance, Stability, MySQL and MySQL AB +@node Table size, Year 2000 compliance, Stability, What-is @subsection How Big Can MySQL Tables Be? @cindex tables, maximum size @@ -1064,7 +897,7 @@ handle a collection of identical tables as one. @xref{MERGE, MERGE tables}. -@node Year 2000 compliance, , Table size, MySQL and MySQL AB +@node Year 2000 compliance, , Table size, What-is @subsection Year 2000 Compliance @cindex Year 2000 compliance @@ -1165,183 +998,280 @@ values). -@c FIX: Start new by AGL - Erik's text on logos and trademarks +@node What is MySQL AB, Licensing and Support, What-is, Introduction +@section What Is MySQL AB -@node MySQL AB Logos and Trademarks, Licensing and Support, MySQL and MySQL AB, Introduction -@section MySQL AB Logos and Trademarks +@cindex MySQL AB, defined -Many users of the MySQL database want to display the MySQL AB dolphin logo -on their websites, on their books or boxed products. We welcome and -encourage this although it should be noted that the word @code{MySQL} and the -MySQL dolphin logo are trademarks of MySQL AB and may only be used as -stated in our trademark policy at -@uref{http://www.mysql.com/company/trademark.html}. +MySQL AB is the company of the MySQL founders and main developers behind +the MySQL database and this manual. We are dedicated to developing MySQL +and spreading our database to new users. MySQL AB owns the copyright to +the MySQL server source code, the MySQL trademark and this manual. +@xref{What-is}. + +The MySQL core values show our dedication to MySQL and Open Source. + +We want MySQL to be: + +@itemize @bullet +@item +The best and the most widely used database in the world. +@item +Available and affordable for all. +@item +Easy to use. +@item +Continuously improving while remaining fast and safe. +@item +Fun to use and improve. +@item +Free from bugs. +@end itemize + +MySQL AB and the people of MySQL AB: + +@itemize @bullet +@item +Promote Open Source Philosophy and support the Open Source Community. +@item +Aim to be good citizens. +@item +Prefer partners that share our values and mind-set. +@item +Answer e-mail and provide support. +@item +Are a virtual company, networking with others. +@item +Work against software patents. +@end itemize + +@c FIX: Start new by AGL - Erik's text on business model and services @menu -* The Original MySQL logo:: The Original MySQL Logo -* MySQL Logos that may be Used Without Written Permission:: MySQL Logos that may be Used Without Written Permission -* When need MySQL logo permission:: When do you need a Written Permission to use MySQL Logos? -* MySQL AB Partnership Logos:: MySQL AB Partnership Logos -* Using MySQL word in presentations:: Using the word @code{MySQL} in Printed Text or Presentations -* Using MySQL word in company and product names:: Using the word @code{MySQL} in Company and Product Names +* MySQL AB business model and services:: +* Contact information:: @end menu +@node MySQL AB business model and services, Contact information, What is MySQL AB, What is MySQL AB +@subsection The Business Model and Services of MySQL AB -@node The Original MySQL logo, MySQL Logos that may be Used Without Written Permission, MySQL AB Logos and Trademarks, MySQL AB Logos and Trademarks -@subsection The Original MySQL Logo +One of the most common questions we encounter is: `` +@emph{How can you make a living from something you give away for free?}'' +This is how. -@c FIX: picture: MySQL logo +MySQL AB makes money on support, services, commercial licenses and +royalties, and we use these revenues to fund product development and +to expand the MySQL business. -The MySQL dolphin logo was designed by the Finnish advertising agency -Priority in 2001. The dolphin was chosen as a suitable symbol for the -MySQL database since it is a smart, fast and lean animal, effortlessly -navigating oceans of data. We also happen to like dolphins. +The company has been profitable since its inception. In October 2001, +we accepted venture financing from leading Scandinavian investors and +a handful of business angels. This investment is used to solidify our +business model and build a basis for sustainable growth. -The original MySQL logo may only be used by representatives of MySQL AB -and by those having a written agreement allowing them to do so. +@menu +* Business Services Support:: Support +* Business Services Training:: Training +* Business Services Consulting:: Consulting +* Business Services Commercial licenses:: Commercial Licenses +* Business Services Partnering:: Partnering +* Business Services Advertising:: Advertising +@end menu -@node MySQL Logos that may be Used Without Written Permission, When need MySQL logo permission, The Original MySQL logo, MySQL AB Logos and Trademarks -@subsection MySQL Logos that may be Used Without Written Permission +@node Business Services Support, Business Services Training, MySQL AB business model and services, MySQL AB business model and services +@subsubsection Support +MySQL AB is run and owned by the founders and main developers of the MySQL +database. The developers are committed to giving support to customers and +other users in order to stay in touch with their needs and problems. All +our support is given by qualified developers, not through call centers or +dedicated support staff. Really tricky questions are even answered by +Michael @code{Monty} Widenius himself, the author of the MySQL server. +@xref{Support}. -@c FIX: pictures: powered by, works with, included - logos +To order support at different levels, please visit the order section at +@uref{http://www.mysql.com/support/}. If you have restricted access to the +Internet, please contact our sales staff at @email{sales@@mysql.com}. -We have designed a set of special @emph{Conditional Use} logos that may be -downloaded from our website at -@uref{http://www.mysql.com/downloads/logos.html} -and used on third party websites without written permission from MySQL AB. -The use of these logos is not entirely unrestricted but as the name -implies subject to our trademark policy that is also available on our -website. You should read through the trademark policy if you plan to use -them. The requirements are basically: -@itemize @bullet -@item -Use the logo you need as displayed on the @uref{http://www.mysql.com/} -site. You may scale it to fit your needs, but not change colours or design, -or alter the graphics in any way. +@node Business Services Training, Business Services Consulting, Business Services Support, MySQL AB business model and services +@subsubsection Training +MySQL AB offers training on different levels all over the world. +The trainers are backed by the development team to guarantee quality and +continous development and also that no questions raised during the courses +remain unanswered. -@item -Make it evident that you, and not MySQL AB, are the creator and owner of -the site that displays the MySQL trademark. +If you're interested in participating in our courses, please visit the +training section at @uref{http://www.mysql.com/training/}. If you have +restricted access to the Internet, please contact our training staff at +@email{training@@mysql.com}. -@item -Don't use the trademark in a way that is detrimental to MySQL AB or to the -value of MySQL AB trademarks. We reserve the right to revoke the right to -use the MySQL AB trademark. -@item -If you use the trademark on a website, make it clickable, leading directly -to @uref{http://www.mysql.com/} +@node Business Services Consulting, Business Services Commercial licenses, Business Services Training, MySQL AB business model and services +@subsubsection Consulting +MySQL AB offers consulting on different levels, all over the world. +Consulting covers all questions affecting database performance such as +database design, table design, query constructions, parameter tuning, +hardware tuning, migration issues, replication, transactions etc. +Our consultants are backed by the development team to guarantee quality +work. -@item -If you are using the MySQL database under GPL in an application, your -application must (i) be Open Source, (ii) be able to connect to a MySQL -server. -@end itemize +If you're interested in consulting, please visit the consulting section +at @uref{http://www.mysql.com/consulting/}. If you have restricted access +to the Internet, please contact our consulting staff at +@email{consulting@@mysql.com}. -Contact us at @email{trademark@@mysql.com} to inquire about special -arrangements to fit your needs. +@node Business Services Commercial licenses, Business Services Partnering, Business Services Consulting, MySQL AB business model and services +@subsubsection Commercial Licenses +The MySQL database is released under the @code{GNU General Public License} +(@code{GPL}). This means that it may often be used for free, but for +certain uses you are required to purchase commercial licenses from +MySQL AB at @uref{http://www.mysql.com/}. +Since MySQL AB owns the copyright of the MySQL server, we are able to +sell commercial licenses (this is called @code{Dual Licensing}). This +does not in any way affect the @code{Open Source} commitment of MySQL AB. +For details about when a commercial license is required, please see +@ref{MySQL server licenses}. -@node When need MySQL logo permission, MySQL AB Partnership Logos, MySQL Logos that may be Used Without Written Permission, MySQL AB Logos and Trademarks -@subsection When do you need a Written Permission to use MySQL Logos? +We also aim to offer commercial license packages covering both the MySQL +database and closely connected third party software. Currently we have +such an arrangement with the author of the @code{InnoDB} transactional +table handler. -In the following cases you need a written permission from MySQL AB before -using MySQL logos: -@itemize @bullet -@item -When displaying any MySQL AB logo anywhere except on your website. +@node Business Services Partnering, Business Services Advertising, Business Services Commercial licenses, MySQL AB business model and services +@subsubsection Partnering +The word @code{MySQL} and the MySQL dolphin logo are trademarks of +MySQL AB. @xref{MySQL AB Logos and Trademarks}. +These trademarks represent a significant value that the MySQL +founders have built over the years. -@item -When displaying any MySQL AB logo except the @emph{Conditional Use} logos -above on websites or elsewhere. -@end itemize +We have a partner programme whereby companies worldwide can offer +value-added MySQL services or products and resell our products and +services against a partner fee and a royalty. Partners also get to +use special versions of the MySQL trademark to indentify these +products and promote their business. -Out of legal and commercial reasons we have to monitor the use of MySQL -trademarks on products, books etc. We will usually require a fee for -displaying MySQL AB logos on commercial products, since we think it is -reasonable that some of the revenue is returned to fund further -development of the MySQL database. +If you are interested in becoming a MySQL AB partner, please mail to +@email{partner@@mysql.com}. -@node MySQL AB Partnership Logos, Using MySQL word in presentations, When need MySQL logo permission, MySQL AB Logos and Trademarks -@subsection MySQL AB Partnership Logos +@node Business Services Advertising, , Business Services Partnering, MySQL AB business model and services +@subsubsection Advertising +The @uref{http://www.mysql.com/} website is highly popular among people +who make purchase decisions or recommendations. The website has more +than 10 million page views per month (October 2001). -@c FIX: pictures: partnership logos - Bertrand? +Banners on @uref{http://www.mysql.com/} will be viewed by numerous +potential buyers who maintain or set up websites and other database +applications. For more information, please send an email to +@email{advertising@@mysql.com}. -MySQL partnership logos may only be used by companies and persons having -a written partnership agreement with MySQL AB. Partnerships include -certification as a MySQL trainer or consultant. If you are interested in -entering our partnership programmes, please visit our website for details -or mail to @email{partner@@mysql.com}. +@c FIX: End new by AGL - Erik's text on business model and services -@node Using MySQL word in presentations, Using MySQL word in company and product names, MySQL AB Partnership Logos, MySQL AB Logos and Trademarks -@subsection Using the word @code{MySQL} in Printed Text or Presentations -MySQL AB welcomes references to the MySQL database, but note that the -word @code{MySQL} is a trademark of MySQL AB. Because of this, you should -append the trademark symbol @code{TM} to the first or most prominent use -of the word MySQL in a text and where appropriate use a statement that -@code{MySQL} is a trademark of MySQL AB. Please refer to our trademark -policy at @uref{http://www.mysql.com/company/trademark.html} for -details. +@node Contact information, , MySQL AB business model and services, What is MySQL AB +@subsection Contact Information +@c FIX AGL 20011023 has heaps of old garbage. Fixup with new info. -@node Using MySQL word in company and product names, , Using MySQL word in presentations, MySQL AB Logos and Trademarks -@subsection Using the word @code{MySQL} in Company and Product Names +@cindex contact information +@cindex employment, contact information +@cindex licensing, contact information +@cindex advertising, contact information +@cindex partnering with MySQL +@cindex employment with MySQL +@cindex jobs at MySQL -Use of the word @code{MySQL} in product or company names or in Internet -domain names is not allowed without written permission from MySQL AB. +For commercial licensing, please contact the MySQL licensing +team. The much preferred method is by e-mail to +@email{licensing@@mysql.com}. Fax is also possible but handling of +these may take much longer (Fax +46-8-729 69 05). +If you represent a business that is interested in partnering with +MySQL, please send e-mail to @email{partner@@mysql.com}. -@c FIX: End new by AGL - Erik's text on logos and trademarks +For timely, precise answers to technical questions about MySQL +you should order one of our +@uref{https://order.mysql.com/, support contracts}. +MySQL support is provided by the MySQL developers so the +standard is extremely high. +If you have restricted access to the Internet, please contact our sales staff +at @email{sales@@mysql.com}. + +If you are interested in placing a banner advertisement on our Web site, +please send e-mail to @email{advertising@@mysql.com}. + +If you are interested in any of the jobs listed in our +@uref{http://www.mysql.com/development/jobs/, jobs} section, please send e-mail +to @email{jobs@@mysql.com}. + +For general discussion amongst our many users, please direct your attention to +the appropriate @uref{http://www.mysql.com/documentation/lists.html, mailing +list}. + +For general information inquires, please send e-mail to +@email{info@@mysql.com}. + +For questions or comments about the workings or content of the Web site, +please send e-mail to @email{webmaster@@mysql.com}. -@node Licensing and Support, MySQL AB business model and services, MySQL AB Logos and Trademarks, Introduction +@node Licensing and Support, MySQL 4.0 In A Nutshell, What is MySQL AB, Introduction @section MySQL Support and Licensing @cindex licensing terms @cindex support terms +This section describes MySQL support and licensing arrangements: + @menu -* Support:: Support offered by MySQL AB * Copyright:: Copyrights used by MySQL -* Licensing policy:: MySQL licensing policy -* Licensing examples:: Example licensing situations +* Support:: +* MySQL server licenses:: +* MySQL AB Logos and Trademarks:: @end menu -This section describes MySQL support and licensing arrangements: -@itemize @bullet +@node Copyright, Support, Licensing and Support, Licensing and Support +@subsection Copyrights Used by MySQL + +@cindex copyrights + +There are several different copyrights on the MySQL distribution: -@item Support costs and benefits -(@pxref{Support}) +@enumerate +@item +The MySQL-specific source needed to build the @code{mysqlclient} +library is licensed under the @code{LGPL} and the programs in the +@file{client} directory are under the @code{GPL}. Each file states at +the beginning which license it is under. -@item The copyrights under which MySQL is distributed -(@pxref{Copyright}) +@item The client library, and the GNU @code{getopt} library, are covered +by the ``GNU LIBRARY GENERAL PUBLIC LICENSE.'' @xref{LGPL license}. -@item When and why you should license MySQL -(@pxref{Licensing policy}) +@item Some parts of the source (the @code{regexp} library) are covered +by a Berkeley-style copyright. -@item Sample situations illustrating when a license is required -(@pxref{Licensing examples}) +@item +All the source in the server, and the GNU @code{readline} library, +are covered by the ``GNU GENERAL PUBLIC LICENSE.'' @xref{GPL license}. +This is also available as the file @file{COPYING} in the distributions. -@end itemize +@end enumerate -@node Support, Copyright, Licensing and Support, Licensing and Support +@node Support, MySQL server licenses, Copyright, Licensing and Support @subsection Support offered by MySQL AB @cindex support, types @cindex types, of support @cindex commercial support, types -@cindex costs, licensing and support +@cindex costs, support @cindex licensing costs @cindex support costs -@cindex prices, licensing and support +@cindex prices, support Technical support from MySQL AB means individualized answers to your unique problems direct from the software engineers who code the MySQL @@ -1358,11 +1288,10 @@ third-party products that access MySQL, though we try to help with these where we can. Detailed information about our different support options is given at -@uref{http://www.mysql.com/support/}. -Support contracts can also be ordered online at -@uref{https://order.mysql.com/}. -If you have restricted access to the Internet, contact our sales -staff at @email{sales@@mysql.com}. +@uref{http://www.mysql.com/support/}. Support contracts can also be +ordered online at @uref{https://order.mysql.com/}. If you have +restricted access to the Internet, contact our sales staff at +@email{sales@@mysql.com}. Technical support is like life insurance. You can live happily without it for years, but when your hour arrives it becomes @@ -1372,444 +1301,317 @@ troubles, it might take too long to figure out all the answers yourself. You may need immediate access to the most experienced MySQL troubleshooters available, those employed by MySQL AB. -@node Copyright, Licensing policy, Support, Licensing and Support -@subsection Copyrights Used by MySQL - -@cindex copyrights - -@menu -* Copyright changes:: Possible future copyright changes -@end menu - -There are several different copyrights on the MySQL distribution: - -@enumerate -@item -The MySQL-specific source needed to build the @code{mysqlclient} -library is licensed under the @code{LGPL} and the programs in the -@file{client} directory are under the @code{GPL}. Each file states at -the beginning which license it is under. - -@item The client library, and the GNU @code{getopt} library, are covered -by the ``GNU LIBRARY GENERAL PUBLIC LICENSE.'' @xref{LGPL license}. -@item Some parts of the source (the @code{regexp} library) are covered -by a Berkeley-style copyright. - -@item -All the source in the server, and the GNU @code{readline} library, -are covered by the ``GNU GENERAL PUBLIC LICENSE.'' @xref{GPL license}. -This is also available as the file @file{COPYING} in the distributions. - -@end enumerate - -The SQL client library should be free enough that it is -possible to add MySQL support into commercial products -without a license. For this reason, we chose the LGPL license for the -client code. -@cindex licensing, free -@cindex free licensing - -This means that you can use MySQL for free with any program that uses -any of the free software licenses. MySQL is also free for any end -user for personal or company usage. - -However, if you use MySQL for something important to you, you may -want to help secure its development by purchasing licenses or a support -contract. @xref{Support}. - - -@node Copyright changes, , Copyright, Copyright -@subsubsection Copyright Changes - -Version 3.22 of MySQL (old) is subject to a more strict license. -See the documentation for that version for more information. +@c FIX: Start new by AGL - Erik's text on MySQL server licenses -@node Licensing policy, Licensing examples, Copyright, Licensing and Support -@subsection MySQL Licensing Policy +@node MySQL server licenses, MySQL AB Logos and Trademarks, Support, Licensing and Support +@subsection MySQL Server Licenses @cindex licensing policy @cindex technical support, licensing @cindex support, licensing @cindex General Public License, MySQL +@cindex licensing, examples +@cindex selling products +@cindex products, selling -The formal terms of the GPL license can be found at @ref{GPL license}. -For pricing and ordering information, see -@uref{https://order.mysql.com/}. - -Basically, our licensing policy and interpretation of the GPL is as follows: - -For normal internal use, MySQL costs nothing. You do not have -to pay us if you do not want to. - -A license is required if: - -@itemize @minus -@item -You link a program, that is not free software, with code from the -MySQL server or clients that has the GPL copyright. This -happens for example when you use MySQL as an embedded server -in your applications or when you add not free extensions to the -MySQL server. In this case your application/code would also -become GPL through the GPL license that acts as a virus. By licensing -MySQL server from MySQL AB under a commercial -license you will avoid this problem. -See @uref{http://www.gnu.org/copyleft/gpl-faq.html}. -@item -You have a commercial application that ONLY works with MySQL -and ships the application with the MySQL server. This is -because we view this as linking even if it is done over the network. - -@item -You have a distribution of MySQL and you don't provide the -source code for your copy of the MySQL server, as defined in -the GPL license. -@end itemize - -A license is @strong{not} required if: +The MySQL server is released under the GNU General Public License (GPL), +which probably is the best known Open Source license. The formal terms +of the GPL license can be found at @uref{http://www.gnu.org/}. +See also @uref{http://www.gnu.org/copyleft/gpl-faq.html}. -@itemize @minus +Since the MySQL server is released under the GPL, it may often be used +for free, but for certain uses you need to buy commercial licenses from +MySQL AB at @uref{http://www.mysql.com/}. -@item -You include the MySQL client code in a commercial -program. The client part of MySQL is licensed under the -LGPL @code{GNU Library General Public License}. The @code{mysql} command-line -client does include code from the @code{readline} library that is under -the @code{GPL}, however. +Older versions of MySQL (3.22 and earlier) are subject to a more +@uref{http://www.mysql.com/support/arrangements/mypl.html, strict license}. +See the documentation of the specific version for information. -@end itemize +Please note that the use of the MySQL server under commercial license, +GPL or the old MySQL license does not automatically give you the right to +use MySQL AB trademarks. @xref{MySQL AB Logos and Trademarks}. -If your use of MySQL does not require a license, but you -like MySQL and want to encourage further development, you are -certainly welcome to purchase a license or MySQL support anyway. -@xref{Support}. -If you use MySQL in a commercial context such that you profit by -its use, we ask that you further the development of MySQL by -purchasing some level of support. We feel that if MySQL helps -your business, it is reasonable to ask that you help MySQL. -(Otherwise, if you ask us support questions, you are not only using for -free something into which we've put a lot a work, you're asking us to -provide free support, too.) +@menu +* Using the MySQL server under a commercial license:: Using the MySQL Server Under a Commercial License +* Using the MySQL server for free under GPL:: Using the MySQL Server for Free Under GPL +@end menu -Note that older versions of MySQL are subject to a more -@uref{http://www.mysql.com/support/arrangements/mypl.html, strict license}. -See the documentation for the specific version for more information. +@node Using the MySQL server under a commercial license, Using the MySQL server for free under GPL, MySQL server licenses, MySQL server licenses +@subsubsection Using the MySQL Server Under a Commercial License -For circumstances under which a MySQL license is required, you -need a license per machine that runs the @code{mysqld} server. However, -a multiple-CPU machine counts as a single machine, and there is no -restriction on the number of MySQL servers that run on one -machine, or on the number of clients concurrently connected to a server -running on that machine. +The GPL license is contagious in the sense that when a program is linked +to a GPL program the resulting product must also be released under GPL +lest you break the license terms and forfeit your right to use the GPL +program altogether. -If you have any questions as to whether or not a license is required for -your particular use of MySQL, please read this again and then -contact us. @xref{Contact information}. +You need a commercial license: -If you require a MySQL license, the easiest way to pay for it -is to use the license form on MySQL's secure server at -@uref{https://order.mysql.com/}. -You can also get the latest pricing and ordering information by sending -an e-mail to @email{sales@@mysql.com}. +@itemize @bullet +@item +When you link a program with code from the MySQL server or from GPL +released clients and don't want the resulting product to be GPL, maybe +because you want to build a commercial product or keep the added non-GPL +code closed source for other reasons. When purchasing commercial licenses, +you are not using the MySQL server under GPL even though it's the same +code. +@item +When you distribute a non-GPL application that ONLY works with the MySQL +server and ships it with MySQL. This type of solution is actually +considered to be linking even if it's done over a network. -@node Licensing examples, , Licensing policy, Licensing and Support -@subsection Example Licensing Situations +@item +When you distribute copies of the MySQL server without providing the +source code as required under the GPL license. -@menu -* Products that use MySQL:: Selling products that use MySQL -* ISP:: ISP MySQL services -* Web server:: Running a web server using MySQL. -@end menu +@item +When you want to support the further development of the MySQL database +even if you don't formally need a commercial license. Purchasing suppport +directly from MySQL AB is another good way of contributing to the +development of MySQL, with immediate advantages for you. +@xref{Support}. +@end itemize -@cindex licensing, examples -@cindex selling products -@cindex products, selling +If you require a license, you will need one for each installation of the +MySQL server. This covers any number of CPUs on a machine, and there is +no artificial limit on the number of clients that connect to the server +in any way. -This section describes some situations illustrating whether or not you -must license the MySQL server. Generally these examples -involve providing MySQL as an integral part of a product. +To purchase commercial licenses and support, please visit the order section +of our website at @uref{https://order.mysql.com/}. If you have restricted +access to the Internet, please contact our sales staff at +@email{sales@@mysql.com}. Fax is also possible but the handling of these +may take much longer (Fax +46-8-729 69 05). -Note that a single MySQL license covers any number of CPUs and -@code{mysqld} servers on a machine! There is no artificial limit on the -number of clients that connect to the server in any way. +@node Using the MySQL server for free under GPL, , Using the MySQL server under a commercial license, MySQL server licenses +@subsubsection Using the MySQL Server for Free Under GPL -@node Products that use MySQL, ISP, Licensing examples, Licensing examples -@subsubsection Selling Products that use MySQL +@cindex licensing, free +@cindex free licensing -To determine whether or not you need a MySQL license when -selling your application, you should ask whether the proper functioning -of your application is dependent on the use of MySQL and -whether you include the MySQL server with your product. There -are several cases to consider: +You can use the MySQL server for free under the GPL: @itemize @bullet @item -Does your application require MySQL to function properly? +When you link a program with code from the MYSQL server and releases the +resulting product under GPL. @item -If your product requires MySQL, you need a license for any -machine that runs the @code{mysqld} server. For example, if you've -designed your application around MySQL, then you've really made -a commercial product that requires the engine, so you need a license. +When you distribute the MySQL server source code bundled with other +programs that are not linked to or dependant on MySQL for their +functionality even if you sell the distribution commercially. @item -If your application does not require MySQL, you do not need to obtain -a license. For example, if using MySQL just adds some new optional -features to your product (such as adding logging to a database if -MySQL is used rather than logging to a text file), it should -fall within normal use, and a license would not be required. +When using the MySQL server internally in your company. @item -In other words, you need a license if you sell a product designed -specifically for use with MySQL or that requires the -MySQL server to function at all. This is true whether or not -you provide MySQL for your client as part of your product -distribution. +When include the MySQL client code in a commercial program. +The client part of MySQL is licensed under the LGPL +@code{GNU Library General Public License}. The formal terms of the +LGPL license can be found at @uref{http://www.gnu.org/}. +However, the @code{mysql} command-line client does include code +from the GNU @code{readline} library that is under the @code{GPL}. @item -It also depends on what you're doing for the client. Do you plan to -provide your client with detailed instructions on installing -MySQL with your software? Then your product may be contingent -on the use of MySQL; if so, you need to buy a license. If you -are simply tying into a database that you expect already to have been -installed by the time your software is purchased, then you probably -don't need a license. - -@end itemize - - -@node ISP, Web server, Products that use MySQL, Licensing examples -@subsubsection ISP MySQL Services - @cindex ISP services @cindex services, ISP @cindex services, web @cindex Internet Service Providers - -Internet Service Providers (ISPs) often host MySQL servers for -their customers. With the GPL license this does not require a license. - +When you are an Internet Service Provider (ISPs) offering web +hosting with MySQL servers for your customers. On the other hand, we do encourage people to use ISPs that have MySQL support, as this will give them the confidence that if -they have some problem with their MySQL installation, their ISP -will be able to solve the problem for them (in some cases with the help -from the MySQL development team). +they have some problem with the MySQL installation, their ISP +will in fact have the resources to solve the problem for them. All ISPs that want to keep themselves up-to-date should subscribe -to our @code{announce} mailing list so that they can be aware of critical issues -that may be relevant for their MySQL installations. +to our @code{announce} mailing list so that they can be aware of +critical issues that may be relevant for their MySQL installations. -Note that if the ISP doesn't have a license for MySQL, -it should give its customers at least read access to the source of -the MySQL installation so that its customers can verify that -it is patched correctly. - - -@node Web server, , ISP, Licensing examples -@subsubsection Running a Web Server Using MySQL +Note that even if an ISP does not have a commercial license for +MySQL, they should at least give their customers read access to the +source of the MySQL installation so that the customers can verify +that it is patched correctly. +@item @cindex web server, running @cindex running, a web server +When you use MySQL in conjunction with a Web server, you do not need +a commercial license. This is true even if you run a commercial Web +server that uses MySQL, because you are not selling an embedded MySQL +version yourself. However, in this case we would like you to +purchase MySQL support, because MySQL is helping your enterprise. +@end itemize -If you use MySQL in conjunction with a Web server, you -do not have to pay for a license. - -This is true even if you run a commercial Web server that uses -MySQL, because you are not selling an embedded MySQL -version yourself. However, in this case we would like you to purchase -MySQL support, because MySQL is helping your enterprise. - - -@c FIX: Start new by AGL - Erik's text on business model and services - -@node MySQL AB business model and services, MySQL server licenses, Licensing and Support, Introduction -@section The Business Model and Services of MySQL AB - -MySQL AB is the company of the MySQL founders and main developers behind -the MySQL database and this manual. One of the most common questions we -encounter is: `` -@emph{How can you make a living from something you give away for free?}'' -This is how. +If your use of MySQL does not require a commercial license, we +encourage you to purchase support from MySQL AB anyway. This way +you contribute towards MySQL development and also gain immediate +advantages for yourself. @xref{Support}. -@menu -* Business Services Support:: Support -* Business Services Training:: Training -* Business Services Consulting:: Consulting -* Business Services Commercial licenses:: Commercial Licenses -* Business Services Royalties:: Royalties -@end menu +If you use MySQL in a commercial context such that you profit by +its use, we ask that you further the development of MySQL by +purchasing some level of support. We feel that if MySQL helps +your business, it is reasonable to ask that you help MySQL. +(Otherwise, if you ask us support questions, you are not only using +for free something into which we've put a lot a work, you're asking +us to provide free support, too.) -@node Business Services Support, Business Services Training, MySQL AB business model and services, MySQL AB business model and services -@subsection Support -MySQL AB is run and owned by the founders and main developers of the MySQL -database. The developers are committed to giving support to customers and -other users in order to stay in touch with their needs and problems. All -our support is given by qualified developers, not through call centers or -dedicated support staff. Really tricky questions are even answered by -Michael @code{Monty} Widenius himself, the author of the MySQL server. +@c FIX: End new by AGL - Erik's text on MySQL server licenses -To order support at different levels, please visit the order section at -@uref{http://www.mysql.com/support/}. If you have restricted access to the -Internet, please contact our sales staff at @email{sales@@mysql.com}. -@node Business Services Training, Business Services Consulting, Business Services Support, MySQL AB business model and services -@subsection Training -MySQL AB offers training on different levels all over the world. -The trainers are backed by the development team to guarantee quality and -continous development and also that no questions raised during the courses -remain unanswered. +@c FIX: Start new by AGL - Erik's text on logos and trademarks -If you're interested in participating in our courses, please visit the -training section at @uref{http://www.mysql.com/training/}. If you have -restricted access to the Internet, please contact our sales staff at -@email{training@@mysql.com}. +@node MySQL AB Logos and Trademarks, , MySQL server licenses, Licensing and Support +@subsection MySQL AB Logos and Trademarks -@node Business Services Consulting, Business Services Commercial licenses, Business Services Training, MySQL AB business model and services -@subsection Consulting -MySQL AB offers consulting all over the world on different levels. -Consulting covers all questions affecting database performance such as -database design, table design, query constructions, parameter tuning, -hardware tuning, migration issues, replication, transactions etc. -Our consultants are backed by the development team to guarantee quality -work. +Many users of the MySQL database want to display the MySQL AB dolphin logo +on their websites, on their books or boxed products. We welcome and +encourage this although it should be noted that the word @code{MySQL} and the +MySQL dolphin logo are trademarks of MySQL AB and may only be used as +stated in our trademark policy at +@uref{http://www.mysql.com/company/trademark.html}. -If you're interested in consulting, please visit the consulting section -at @uref{http://www.mysql.com/consulting/}. If you have restricted access -to the Internet, please contact our sales staff at -@email{consulting@@mysql.com}. +@menu +* The Original MySQL logo:: The Original MySQL Logo +* MySQL Logos that may be Used Without Written Permission:: +* When need MySQL logo permission:: +* MySQL AB Partnership Logos:: +* Using MySQL word in presentations:: +* Using MySQL word in company and product names:: +@end menu -@node Business Services Commercial licenses, Business Services Royalties, Business Services Consulting, MySQL AB business model and services -@subsection Commercial Licenses -The MySQL database is released under the GNU General Public License (GPL). -This means that anybody can use it for free under the GPL rules. However -if a company wishes to embed the database in a product, they have to buy -commercial licenses of MySQL or else release their product under GPL too. -Since MySQL AB owns the copyright of the MySQL server, we are able to sell -commercial licenses. This does not in any way affect the Open Source -commitment of MySQL AB. We also aim to offer commercial license packages -covering both the MySQL database and closely connected third party -software. Currently we have such an arrangement with the author of the -InnoDB transaction handler. +@node The Original MySQL logo, MySQL Logos that may be Used Without Written Permission, MySQL AB Logos and Trademarks, MySQL AB Logos and Trademarks +@subsubsection The Original MySQL Logo -To buy commercial licenses, please visit the order section of -@uref{https://order.mysql.com/}. +@c FIX: picture: MySQL logo +The MySQL dolphin logo was designed by the Finnish advertising agency +Priority in 2001. The dolphin was chosen as a suitable symbol for the +MySQL database since it is a smart, fast and lean animal, effortlessly +navigating oceans of data. We also happen to like dolphins. -@node Business Services Royalties, , Business Services Commercial licenses, MySQL AB business model and services -@subsection Royalties -The word @code{MySQL} and the MySQL dolphin logo are trademarks of -MySQL AB. These trademarks represent a significant value that the MySQL -founders have built over the years. We think it's fair that companies -wanting to get the benefit of these trademarks in their marketing -contributes to the development of the MySQL database by paying some -royalty. Also special versions of the trademarks are used as proofs -of certification in our partner programmes. +The original MySQL logo may only be used by representatives of MySQL AB +and by those having a written agreement allowing them to do so. -If you are interested in becoming a MySQL AB partner, please mail to -@email{partner@@mysql.com}. +@node MySQL Logos that may be Used Without Written Permission, When need MySQL logo permission, The Original MySQL logo, MySQL AB Logos and Trademarks +@subsubsection MySQL Logos that may be Used Without Written Permission -@c FIX: End new by AGL - Erik's text on business model and services +@c FIX: pictures: powered by, works with, included - logos +We have designed a set of special @emph{Conditional Use} logos that may be +downloaded from our website at +@uref{http://www.mysql.com/downloads/logos.html} +and used on third party websites without written permission from MySQL AB. +The use of these logos is not entirely unrestricted but as the name +implies subject to our trademark policy that is also available on our +website. You should read through the trademark policy if you plan to use +them. The requirements are basically: +@itemize @bullet +@item +Use the logo you need as displayed on the @uref{http://www.mysql.com/} +site. You may scale it to fit your needs, but not change colours or design, +or alter the graphics in any way. -@c FIX: Start new by AGL - Erik's text on MySQL server licenses +@item +Make it evident that you, and not MySQL AB, are the creator and owner of +the site that displays the MySQL trademark. +@item +Don't use the trademark in a way that is detrimental to MySQL AB or to the +value of MySQL AB trademarks. We reserve the right to revoke the right to +use the MySQL AB trademark. -@node MySQL server licenses, MySQL 4.0 In A Nutshell, MySQL AB business model and services, Introduction -@section MySQL Server Licenses +@item +If you use the trademark on a website, make it clickable, leading directly +to @uref{http://www.mysql.com/} -The MySQL server is released under the GNU General Public License (GPL), -which probably is the best known Open Source license. Please visit -@uref{http://www.gnu.org} to read the terms of this license. +@item +If you are using the MySQL database under GPL in an application, your +application must (i) be Open Source, (ii) be able to connect to a MySQL +server. +@end itemize -Since the MySQL server is released under the GPL, it may often be used -for free, but for certain uses you need to buy commercial licenses from -MySQL AB at @uref{http://www.mysql.com/}. +Contact us at @email{trademark@@mysql.com} to inquire about special +arrangements to fit your needs. @menu -* Using the MySQL server under a commercial license:: Using the MySQL Server Under a Commercial License -* Using the MySQL server for free under GPL:: Using the MySQL Server for Free Under GPL +* When need MySQL logo permission:: +* MySQL AB Partnership Logos:: +* Using MySQL word in presentations:: +* Using MySQL word in company and product names:: @end menu -@node Using the MySQL server under a commercial license, Using the MySQL server for free under GPL, MySQL server licenses, MySQL server licenses -@subsection Using the MySQL Server Under a Commercial License - -The GPL license is contagious in the sense that when a program is linked -to a GPL program the resulting product must also be released under GPL -lest you break the license terms and forfeit your right to use the GPL -program altogether. +@node When need MySQL logo permission, MySQL AB Partnership Logos, MySQL Logos that may be Used Without Written Permission, MySQL AB Logos and Trademarks +@subsubsection When do you need a Written Permission to use MySQL Logos? -You need a commercial license: +In the following cases you need a written permission from MySQL AB before +using MySQL logos: @itemize @bullet @item -When you link a program with code from the MySQL server or from GPL -released clients and don't want the resulting product to be GPL, maybe -because you want to build a commercial product or keep the added non-GPL -code closed source for other reasons. When purchasing commercial licenses, -you are not using the MySQL server under GPL even though it's the same -code. You need one license per installation of the MySQL server. +When displaying any MySQL AB logo anywhere except on your website. @item -When you distribute a non-GPL application that ONLY works with the MySQL -server and ships it with MySQL. This type of solution is actually -considered to be linking even if it's done over a network. +When displaying any MySQL AB logo except the @emph{Conditional Use} logos +above on websites or elsewhere. +@end itemize -@item -When you distribute copies of the MySQL server without providing the -source code as required under the GPL license. +Out of legal and commercial reasons we have to monitor the use of MySQL +trademarks on products, books etc. We will usually require a fee for +displaying MySQL AB logos on commercial products, since we think it is +reasonable that some of the revenue is returned to fund further +development of the MySQL database. -@item -When you want to support the further development of the MySQL database -even if you don't formally need a commercial license. Another good way -of contributing to the MySQL development while getting something useful - in return, is to purchase support directly from MySQL AB. -@end itemize -For buying commercial licenses and support, please visit the order section -at @uref{https://order.mysql.com/}. +@node MySQL AB Partnership Logos, Using MySQL word in presentations, When need MySQL logo permission, MySQL AB Logos and Trademarks +@subsubsection MySQL AB Partnership Logos -@node Using the MySQL server for free under GPL, , Using the MySQL server under a commercial license, MySQL server licenses -@subsection Using the MySQL Server for Free Under GPL +@c FIX: pictures: partnership logos - Bertrand? -You can use the MySQL server for free under GPL: +MySQL partnership logos may only be used by companies and persons having +a written partnership agreement with MySQL AB. Partnerships include +certification as a MySQL trainer or consultant. +Please see @xref{Business Services Partnering,,Partnering}. -@itemize @bullet -@item -When you link a program with code from the MYSQL server and releases the -resulting product under GPL -@item -When you distribute the MySQL server source code bundled with other -programs that are not linked to or dependant on MySQL for their -functionality even if you sell the distribution commercially +@node Using MySQL word in presentations, Using MySQL word in company and product names, MySQL AB Partnership Logos, MySQL AB Logos and Trademarks +@subsubsection Using the word @code{MySQL} in Printed Text or Presentations + +MySQL AB welcomes references to the MySQL database, but note that the +word @code{MySQL} is a trademark of MySQL AB. Because of this, you should +append the trademark symbol @code{TM} to the first or most prominent use +of the word MySQL in a text and where appropriate use a statement that +@code{MySQL} is a trademark of MySQL AB. Please refer to our trademark +policy at @uref{http://www.mysql.com/company/trademark.html} for +details. -@item -When using the MySQL server internally in your company. -@end itemize -Please note that use of the MySQL server under commercial license or GPL -does not automatically give you the right to use MySQL AB trademarks. +@node Using MySQL word in company and product names, , Using MySQL word in presentations, MySQL AB Logos and Trademarks +@subsubsection Using the word @code{MySQL} in Company and Product Names + +Use of the word @code{MySQL} in product or company names or in Internet +domain names is not allowed without written permission from MySQL AB. -@c FIX: End new by AGL - Erik's text on MySQL server licenses +@c FIX: End new by AGL - Erik's text on logos and trademarks @c FIX: Start new by AGL - Kaj's text MySQL 4.0 in a Nutshell -@node MySQL 4.0 In A Nutshell, MySQL Information Sources, MySQL server licenses, Introduction +@node MySQL 4.0 In A Nutshell, MySQL Information Sources, Licensing and Support, Introduction @section MySQL 4.0 In A Nutshell Dateline: 16 October 2001, Uppsala, Sweden @@ -1825,7 +1627,7 @@ Other new features target the users of embedded databases. @menu * 4.0 NutShell Stepwise Rollout:: Stepwise Rollout -* 4.0 Nutshell Ready for immediate development use:: Ready for immediate development use +* 4.0 Nutshell Ready for Immediate Development Use:: Ready for immediate development use * 4.0 Nutshell Embedded MySQL:: Embedded MySQL * 4.0 Nutshell Other features:: Other Features Available From MySQL 4.0.0 * 4.0 Nutshell Future features:: Future MySQL 4.0 Features @@ -1833,7 +1635,7 @@ Other new features target the users of embedded databases. @end menu -@node 4.0 NutShell Stepwise Rollout, 4.0 Nutshell Ready for immediate development use, MySQL 4.0 In A Nutshell, MySQL 4.0 In A Nutshell +@node 4.0 NutShell Stepwise Rollout, 4.0 Nutshell Ready for Immediate Development Use, MySQL 4.0 In A Nutshell, MySQL 4.0 In A Nutshell @subsection Stepwise Rollout The rollout of MySQL 4.0 will come in several steps, with @@ -1845,7 +1647,7 @@ be added in MySQL 4.1, which is targeted for alpha release in December/January. -@node 4.0 Nutshell Ready for immediate development use, 4.0 Nutshell Embedded MySQL, 4.0 NutShell Stepwise Rollout, MySQL 4.0 In A Nutshell +@node 4.0 Nutshell Ready for Immediate Development Use, 4.0 Nutshell Embedded MySQL, 4.0 NutShell Stepwise Rollout, MySQL 4.0 In A Nutshell @subsection Ready for immediate development use Users are not recommended to switch their production systems @@ -1859,7 +1661,7 @@ reach stable state before the deployment of user applications now under development. -@node 4.0 Nutshell Embedded MySQL, 4.0 Nutshell Other features, 4.0 Nutshell Ready for immediate development use, MySQL 4.0 In A Nutshell +@node 4.0 Nutshell Embedded MySQL, 4.0 Nutshell Other features, 4.0 Nutshell Ready for Immediate Development Use, MySQL 4.0 In A Nutshell @subsection Embedded MySQL @code{libmysqld} makes MySQL suitable for a vastly expanded realm of @@ -44038,7 +43840,7 @@ We encourage everyone to promote free software by releasing code under the GPL or a compatible license. For those who are not able to do this, another option is to purchase the MySQL code from MySQL AB under a looser license. For details -concerning this issue, please see @ref{Licensing policy}. +concerning this issue, please see @ref{MySQL server licenses}. @node Cplusplus, Java, C, Clients @section MySQL C++ APIs diff --git a/include/ft_global.h b/include/ft_global.h index 8588684907d..0dbef652ce2 100644 --- a/include/ft_global.h +++ b/include/ft_global.h @@ -32,7 +32,7 @@ extern "C" { typedef struct st_ft_info FT_INFO; struct _ft_vft { int (*read_next)(FT_INFO *, char *); - float (*find_relevance)(FT_INFO *, my_off_t); + float (*find_relevance)(FT_INFO *, my_off_t, byte *); void (*close_search)(FT_INFO *); float (*get_relevance)(FT_INFO *); my_off_t (*get_docid)(FT_INFO *); diff --git a/include/mysqld_error.h b/include/mysqld_error.h index a4e7066d483..5ac14c1155b 100644 --- a/include/mysqld_error.h +++ b/include/mysqld_error.h @@ -222,4 +222,5 @@ #define ER_CANT_UPDATE_WITH_READLOCK 1219 #define ER_MIXING_NOT_ALLOWED 1220 #define ER_DUP_ARGUMENT 1221 -#define ER_ERROR_MESSAGES 222 +#define ER_TABLE_CANT_HANDLE_FULLTEXT 1222 +#define ER_ERROR_MESSAGES 223 diff --git a/myisam/ft_boolean_search.c b/myisam/ft_boolean_search.c index a850827c52e..15a6348336d 100644 --- a/myisam/ft_boolean_search.c +++ b/myisam/ft_boolean_search.c @@ -321,9 +321,9 @@ int ft_boolean_read_next(FT_INFO *ftb, char *record) return my_errno=HA_ERR_END_OF_FILE; } -float ft_boolean_find_relevance(FT_INFO *ftb, my_off_t docid) +float ft_boolean_find_relevance(FT_INFO *ftb, + my_off_t docid __attribute__((unused)), byte *record) { - fprintf(stderr, "ft_boolean_find_relevance called!\n"); return -1.0; /* to be done via str scan */ } diff --git a/myisam/ft_nlq_search.c b/myisam/ft_nlq_search.c index f0f878a7f16..93c63369ecc 100644 --- a/myisam/ft_nlq_search.c +++ b/myisam/ft_nlq_search.c @@ -247,7 +247,8 @@ int ft_nlq_read_next(FT_INFO *handler, char *record) return my_errno; } -float ft_nlq_find_relevance(FT_INFO *handler, my_off_t docid) +float ft_nlq_find_relevance(FT_INFO *handler, my_off_t docid, + byte *record __attribute__((unused))) { int a,b,c; FT_DOC *docs=handler->doc; diff --git a/myisam/ft_update.c b/myisam/ft_update.c index 1e00cc5d7a0..1e53b2d7775 100644 --- a/myisam/ft_update.c +++ b/myisam/ft_update.c @@ -164,41 +164,35 @@ int _mi_ft_update(MI_INFO *info, uint keynr, byte *keybuf, int error= -1; FT_WORD *oldlist,*newlist, *old_word, *new_word; uint key_length; - int cmp; + int cmp, cmp2; if (!(old_word=oldlist=_mi_ft_parserecord(info, keynr, keybuf, oldrec))) goto err0; if (!(new_word=newlist=_mi_ft_parserecord(info, keynr, keybuf, newrec))) goto err1; + error=0; while(old_word->pos && new_word->pos) { cmp=_mi_compare_text(default_charset_info, (uchar*) old_word->pos,old_word->len, (uchar*) new_word->pos,new_word->len,0); - if (cmp==0) - cmp=sgn(old_word->weight-new_word->weight); - else - cmp=sgn(cmp); + cmp2= cmp ? 0 : (abs(old_word->weight - new_word->weight) > 1.e-5); - switch (cmp) { - case -1: + if (cmp < 0 || cmp2) + { key_length=_ft_make_key(info,keynr,keybuf,old_word,pos); if ((error=_mi_ck_delete(info,keynr,(uchar*) keybuf,key_length))) goto err2; - old_word++; - break; - case 0: - old_word++; - new_word++; - break; - case 1: + } + if (cmp > 0 || cmp2) + { key_length=_ft_make_key(info,keynr,keybuf,new_word,pos); if ((error=_mi_ck_write(info,keynr,(uchar*) keybuf,key_length))) goto err2; - new_word++; - break; - } + } + if (cmp<=0) old_word++; + if (cmp>=0) new_word++; } if (old_word->pos) error=_mi_ft_erase(info,keynr,keybuf,old_word,pos); diff --git a/myisam/ftdefs.h b/myisam/ftdefs.h index 9eedf57c759..0d5aaf931e3 100644 --- a/myisam/ftdefs.h +++ b/myisam/ftdefs.h @@ -126,7 +126,7 @@ FT_WORD * _mi_ft_parserecord(MI_INFO *, uint , byte *, const byte *); const struct _ft_vft _ft_vft_nlq; FT_INFO *ft_init_nlq_search(MI_INFO *, uint, byte *, uint, my_bool); int ft_nlq_read_next(FT_INFO *, char *); -float ft_nlq_find_relevance(FT_INFO *, my_off_t ); +float ft_nlq_find_relevance(FT_INFO *, my_off_t, byte *); void ft_nlq_close_search(FT_INFO *); float ft_nlq_get_relevance(FT_INFO *); my_off_t ft_nlq_get_docid(FT_INFO *); @@ -135,7 +135,7 @@ void ft_nlq_reinit_search(FT_INFO *); const struct _ft_vft _ft_vft_boolean; FT_INFO *ft_init_boolean_search(MI_INFO *, uint, byte *, uint, my_bool); int ft_boolean_read_next(FT_INFO *, char *); -float ft_boolean_find_relevance(FT_INFO *, my_off_t ); +float ft_boolean_find_relevance(FT_INFO *, my_off_t, byte *); void ft_boolean_close_search(FT_INFO *); float ft_boolean_get_relevance(FT_INFO *); my_off_t ft_boolean_get_docid(FT_INFO *); diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 7428740d380..f99a594f1f1 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -673,9 +673,13 @@ start_master() "gdb -x $GDB_MASTER_INIT" $MYSQLD elif [ x$DO_GDB = x1 ] then - $ECHO "set args $master_args" > $GDB_MASTER_INIT - $ECHO "b mysql_parse" >> $GDB_MASTER_INIT - $ECHO "r" >> $GDB_MASTER_INIT + $CAT <<__GDB_MASTER_INIT__ > $GDB_MASTER_INIT +b mysql_parse +commands 1 +dele 1 +end +r $master_args +__GDB_MASTER_INIT__ manager_launch master $XTERM -display $DISPLAY \ -title "Master" -e gdb -x $GDB_MASTER_INIT $MYSQLD else diff --git a/mysql-test/r/fulltext.result b/mysql-test/r/fulltext.result index 47a823929f4..c2b4de5f439 100644 --- a/mysql-test/r/fulltext.result +++ b/mysql-test/r/fulltext.result @@ -112,3 +112,19 @@ Can't find FULLTEXT index matching the column list select * from t2,t3 where MATCH (t2.inhalt,t3.inhalt) AGAINST ('foobar'); Wrong arguments to MATCH drop table t1,t2,t3; +CREATE TABLE t1 ( +id int(11) auto_increment, +title varchar(100) default '', +PRIMARY KEY (id), +KEY ind5 (title), +FULLTEXT KEY FT1 (title) +) TYPE=MyISAM; +insert into t1 (title) values ('this is a test'); +update t1 set title='this is A test' where id=1; +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +update t1 set title='this test once revealed a bug' where id=1; +select * from t1; +id title +1 this test once revealed a bug diff --git a/mysql-test/t/fulltext.test b/mysql-test/t/fulltext.test index 4f7df2ac0b0..af58c747167 100644 --- a/mysql-test/t/fulltext.test +++ b/mysql-test/t/fulltext.test @@ -92,3 +92,22 @@ select * from t2 where MATCH ticket AGAINST ('foobar'); select * from t2,t3 where MATCH (t2.inhalt,t3.inhalt) AGAINST ('foobar'); drop table t1,t2,t3; + +# +# two more bugtests +# + +CREATE TABLE t1 ( + id int(11) auto_increment, + title varchar(100) default '', + PRIMARY KEY (id), + KEY ind5 (title), + FULLTEXT KEY FT1 (title) +) TYPE=MyISAM; + +insert into t1 (title) values ('this is a test'); +update t1 set title='this is A test' where id=1; +check table t1; +update t1 set title='this test once revealed a bug' where id=1; +select * from t1; + diff --git a/sql/ha_berkeley.h b/sql/ha_berkeley.h index cc193aba485..561e06229fa 100644 --- a/sql/ha_berkeley.h +++ b/sql/ha_berkeley.h @@ -90,7 +90,7 @@ class ha_berkeley: public handler HA_REC_NOT_IN_SEQ | HA_KEYPOS_TO_RNDPOS | HA_READ_ORDER | HA_LASTKEY_ORDER | HA_LONGLONG_KEYS | HA_NULL_KEY | HA_HAVE_KEY_READ_ONLY | - HA_BLOB_KEY | HA_NOT_EXACT_COUNT | + HA_BLOB_KEY | HA_NOT_EXACT_COUNT | HA_NO_FULLTEXT_KEY | HA_PRIMARY_KEY_IN_READ_INDEX | HA_DROP_BEFORE_CREATE | HA_AUTO_PART_KEY), changed_rows(0),last_dup_key((uint) -1),version(0),using_ignore(0) diff --git a/sql/ha_heap.h b/sql/ha_heap.h index 1a6e8d9393c..6b7e9c6c626 100644 --- a/sql/ha_heap.h +++ b/sql/ha_heap.h @@ -33,9 +33,9 @@ class ha_heap: public handler const char *table_type() const { return "HEAP"; } const char **bas_ext() const; ulong option_flag() const - { return (HA_READ_RND_SAME | HA_NO_INDEX | HA_ONLY_WHOLE_INDEX | + { return (HA_READ_RND_SAME | HA_NO_INDEX | HA_ONLY_WHOLE_INDEX | HA_WRONG_ASCII_ORDER | HA_KEYPOS_TO_RNDPOS | HA_NO_BLOBS | - HA_REC_NOT_IN_SEQ); } + HA_REC_NOT_IN_SEQ | HA_NO_FULLTEXT_KEY); } uint max_record_length() const { return HA_MAX_REC_LENGTH; } uint max_keys() const { return MAX_KEY; } uint max_key_parts() const { return MAX_REF_PARTS; } diff --git a/sql/ha_innobase.h b/sql/ha_innobase.h index 3b0144a4fca..404b20edbac 100644 --- a/sql/ha_innobase.h +++ b/sql/ha_innobase.h @@ -79,7 +79,7 @@ class ha_innobase: public handler HA_KEYPOS_TO_RNDPOS | HA_LASTKEY_ORDER | HA_HAVE_KEY_READ_ONLY | HA_READ_NOT_EXACT_KEY | HA_LONGLONG_KEYS | HA_NULL_KEY | - HA_NOT_EXACT_COUNT | + HA_NOT_EXACT_COUNT | HA_NO_FULLTEXT_KEY | HA_NO_WRITE_DELAYED | HA_PRIMARY_KEY_IN_READ_INDEX | HA_DROP_BEFORE_CREATE | diff --git a/sql/ha_isam.h b/sql/ha_isam.h index b255e8ba87f..5e01edcf889 100644 --- a/sql/ha_isam.h +++ b/sql/ha_isam.h @@ -30,11 +30,11 @@ class ha_isam: public handler public: ha_isam(TABLE *table): handler(table), file(0), - int_option_flag(HA_READ_NEXT+HA_READ_PREV+HA_READ_RND_SAME+ - HA_KEYPOS_TO_RNDPOS+ HA_READ_ORDER+ HA_LASTKEY_ORDER+ - HA_HAVE_KEY_READ_ONLY+HA_READ_NOT_EXACT_KEY+ - HA_LONGLONG_KEYS+HA_KEY_READ_WRONG_STR + HA_DUPP_POS + - HA_NOT_DELETE_WITH_CACHE) + int_option_flag(HA_READ_NEXT | HA_READ_PREV | HA_READ_RND_SAME | + HA_KEYPOS_TO_RNDPOS | HA_READ_ORDER | HA_LASTKEY_ORDER | + HA_HAVE_KEY_READ_ONLY | HA_READ_NOT_EXACT_KEY | + HA_LONGLONG_KEYS | HA_KEY_READ_WRONG_STR | HA_DUPP_POS | + HA_NOT_DELETE_WITH_CACHE | HA_NO_FULLTEXT_KEY) {} ~ha_isam() {} const char *table_type() const { return "ISAM"; } diff --git a/sql/ha_isammrg.h b/sql/ha_isammrg.h index edced83d85d..c8eb7dd9f69 100644 --- a/sql/ha_isammrg.h +++ b/sql/ha_isammrg.h @@ -32,7 +32,8 @@ class ha_isammrg: public handler ~ha_isammrg() {} const char *table_type() const { return "MRG_ISAM"; } const char **bas_ext() const; - ulong option_flag() const { return HA_READ_RND_SAME+HA_KEYPOS_TO_RNDPOS+HA_REC_NOT_IN_SEQ;} + ulong option_flag() const { return HA_READ_RND_SAME | HA_KEYPOS_TO_RNDPOS + | HA_REC_NOT_IN_SEQ | HA_NO_FULLTEXT_KEY;} uint max_record_length() const { return HA_MAX_REC_LENGTH; } uint max_keys() const { return 0; } uint max_key_parts() const { return 0; } diff --git a/sql/ha_myisammrg.h b/sql/ha_myisammrg.h index 089d9ca5107..b97baa0703c 100644 --- a/sql/ha_myisammrg.h +++ b/sql/ha_myisammrg.h @@ -33,11 +33,11 @@ class ha_myisammrg: public handler const char *table_type() const { return "MRG_MyISAM"; } const char **bas_ext() const; ulong option_flag() const - { return (HA_REC_NOT_IN_SEQ | HA_READ_NEXT | - HA_READ_PREV | HA_READ_RND_SAME | - HA_HAVE_KEY_READ_ONLY | - HA_KEYPOS_TO_RNDPOS | HA_READ_ORDER | - HA_LASTKEY_ORDER | HA_READ_NOT_EXACT_KEY | + { return (HA_REC_NOT_IN_SEQ | HA_READ_NEXT | + HA_READ_PREV | HA_READ_RND_SAME | + HA_HAVE_KEY_READ_ONLY | HA_NO_FULLTEXT_KEY | + HA_KEYPOS_TO_RNDPOS | HA_READ_ORDER | + HA_LASTKEY_ORDER | HA_READ_NOT_EXACT_KEY | HA_LONGLONG_KEYS | HA_NULL_KEY | HA_BLOB_KEY); } uint max_record_length() const { return HA_MAX_REC_LENGTH; } uint max_keys() const { return MI_MAX_KEY; } diff --git a/sql/item_func.cc b/sql/item_func.cc index bbe5e5fced9..1ca511be485 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -2065,6 +2065,7 @@ bool Item_func_match::fix_fields(THD *thd,struct st_table_list *tlist) } const_item_cache=0; table=((Item_field *)fields.head())->field->table; + record=table->record[0]; return 0; } @@ -2160,7 +2161,6 @@ bool Item_func_match::eq(const Item *item) const return 0; } -#if 0 double Item_func_match::val() { if (ft_handler==NULL) @@ -2182,10 +2182,10 @@ double Item_func_match::val() if ((null_value=(docid==HA_OFFSET_ERROR))) return 0.0; else - return ft_handler->please->find_relevance(ft_handler, docid); + return ft_handler->please->find_relevance(ft_handler, docid, record); } -#endif +#if 0 double Item_func_match_nl::val() { if (ft_handler==NULL) @@ -2207,7 +2207,7 @@ double Item_func_match_nl::val() if ((null_value=(docid==HA_OFFSET_ERROR))) return 0.0; else - return ft_handler->please->find_relevance(ft_handler, docid); + return ft_handler->please->find_relevance(ft_handler, docid, record); } double Item_func_match_bool::val() @@ -2226,9 +2226,11 @@ double Item_func_match_bool::val() join_key=0; } - null_value=1; - return -1.0; + return ft_handler->please->find_relevance(ft_handler, docid, record); + //null_value=1; + //return -1.0; } +#endif /*************************************************************************** System variables diff --git a/sql/item_func.h b/sql/item_func.h index b02d6ccaa8c..182daf9f74e 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -867,9 +867,10 @@ public: bool join_key; Item_func_match *master; FT_INFO * ft_handler; + byte *record; Item_func_match(List<Item> &a, Item *b): Item_real_func(b), - fields(a), table(0), join_key(0), master(0), ft_handler(0) {} + fields(a), table(0), join_key(0), master(0), ft_handler(0) {} ~Item_func_match() { if (!master && ft_handler) @@ -886,6 +887,7 @@ public: bool fix_fields(THD *thd,struct st_table_list *tlist); bool eq(const Item *) const; longlong val_int() { return val()!=0.0; } + double val(); bool fix_index(); void init_search(bool no_order); @@ -896,7 +898,7 @@ class Item_func_match_nl :public Item_func_match public: Item_func_match_nl(List<Item> &a, Item *b): Item_func_match(a,b) {} const char *func_name() const { return "match_nl"; } - double val(); +// double val(); int ft_handler_init(const byte *query, uint querylen, bool presort) { ft_handler=table->file->ft_init_ext(FT_NL,key, query, querylen, presort); @@ -909,7 +911,7 @@ class Item_func_match_bool :public Item_func_match public: Item_func_match_bool(List<Item> &a, Item *b): Item_func_match(a,b) {} const char *func_name() const { return "match_bool"; } - double val(); +// double val(); int ft_handler_init(const byte *query, uint querylen, bool presort) { ft_handler=table->file->ft_init_ext(FT_BOOL,key, query, querylen, presort); diff --git a/sql/share/czech/errmsg.txt b/sql/share/czech/errmsg.txt index 8d9fda437a5..bd941e9368e 100644 --- a/sql/share/czech/errmsg.txt +++ b/sql/share/czech/errmsg.txt @@ -232,3 +232,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/danish/errmsg.txt b/sql/share/danish/errmsg.txt index 81d44de6a87..d4db2409d45 100644 --- a/sql/share/danish/errmsg.txt +++ b/sql/share/danish/errmsg.txt @@ -226,3 +226,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/dutch/errmsg.txt b/sql/share/dutch/errmsg.txt index 68e20deb257..cd37e9c9937 100644 --- a/sql/share/dutch/errmsg.txt +++ b/sql/share/dutch/errmsg.txt @@ -229,3 +229,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/english/errmsg.txt b/sql/share/english/errmsg.txt index 5d057c30a0e..e8ca6fa5f57 100644 --- a/sql/share/english/errmsg.txt +++ b/sql/share/english/errmsg.txt @@ -223,3 +223,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/estonian/errmsg.txt b/sql/share/estonian/errmsg.txt index 3f9d15c2e4d..f2c416a1777 100644 --- a/sql/share/estonian/errmsg.txt +++ b/sql/share/estonian/errmsg.txt @@ -1,229 +1,231 @@ -/* Copyright Abandoned 1997 TCX DataKonsult AB & Monty Program KB & Detron HB +/* + Copyright Abandoned 1997 TCX DataKonsult AB & Monty Program KB & Detron HB This file is public domain and comes with NO WARRANTY of any kind - Translated into estonian language by Tonu Samuel - email: tonu@spam.ee + Esialgne tõlge: Tõnu Samuel (tonu@spam.ee) + Parandanud ja täiendanud: Indrek Siitan (tfr@mysql.com) */ "hashchk", "isamchk", "EI", "JAH", -"Ei saa luua tabelit '%-.64s' (vea kood: %d)", -"Ei saa luua tabelit '%-.64s' (vea kood: %d)", -"Ei saa luua andmebaasi '%-.64s'. (vea kood: %d)", -"Ei saa luua andmebaasi '%-.64s'. Andmebaas on juba olemas", -"Ei saa kustutada andmebaasi '%-.64s'. Andmebaasi ei eksisteeri", -"Ei saa kustutada andmebaasi (Ei saa kustutada faili '%-.64s', vea kood: %d)", -"Ei saa kustutada andmebaasi (Ei saa kustutada kataloogi '%-.64s', vea kood: %d)", -"Viga '%-.64s' kustutamisel (vea kood: %d)", -"Ei saa lugeda kirjet in süsteemsest tabelist", -"Ei saa lugeda '%-.64s' olekut (vea kood: %d)", -"Ei saa teada jooksva kataloogi nime (vea kood: %d)", -"Ei saa avada lukustusfaili (vea kood: %d)", -"Ei saa avada faili: '%-.64s'. (vea kood: %d)", -"Ei leia faili: '%-.64s' (vea kood: %d)", -"Ei saa lugeda kataloogi '%-.64s' (vea kood: %d)", -"Ei saa siseneda kataloogi '%-.64s' (vea kood: %d)", -"Kirje on muutunud võrreldes eelmise lugemisega tabelis '%-.64s'", -"Ketas on täis (%s). Ootame kuni tekib vaba ruumi....", -"Ei saa kirjutada, Korduv võti tabelis '%-.64s'", -"Viga faili '%-.64s' sulgemisel (vea kood: %d)", -"Viga faili '%-.64s' lugemisel (vea kood: %d)", -"Viga faili '%-.64s' ringi nimetamisel '%-.64s'-ks (vea kood: %d)", -"Viga faili '%-.64s' kirjutamisel (vea kood: %d)", +"Ei suuda luua faili '%-.64s' (veakood: %d)", +"Ei suuda luua tabelit '%-.64s' (veakood: %d)", +"Ei suuda luua andmebaasi '%-.64s'. (veakood: %d)", +"Ei suuda luua andmebaasi '%-.64s': andmebaas juba eksisteerib", +"Ei suuda kustutada andmebaasi '%-.64s': andmebaasi ei eksisteeri", +"Viga andmebaasi kustutamisel (ei suuda kustutada faili '%-.64s', veakood: %d)", +"Viga andmebaasi kustutamisel (ei suuda kustutada kataloogi '%-.64s', veakood: %d)", +"Viga '%-.64s' kustutamisel (veakood: %d)", +"Ei suuda lugeda kirjet süsteemsest tabelist", +"Ei suuda lugeda '%-.64s' olekut (veakood: %d)", +"Ei suuda identifitseerida jooksvat kataloogi (veakood: %d)", +"Ei suuda lukustada faili (veakood: %d)", +"Ei suuda avada faili '%-.64s'. (veakood: %d)", +"Ei suuda leida faili '%-.64s' (veakood: %d)", +"Ei suuda lugeda kataloogi '%-.64s' (veakood: %d)", +"Ei suuda siseneda kataloogi '%-.64s' (veakood: %d)", +"Kirje tabelis '%-.64s' on muutunud viimasest lugemisest saadik", +"Ketas täis (%s). Ootame kuni tekib vaba ruumi...", +"Ei saa kirjutada, korduv võti tabelis '%-.64s'", +"Viga faili '%-.64s' sulgemisel (veakood: %d)", +"Viga faili '%-.64s' lugemisel (veakood: %d)", +"Viga faili '%-.64s' ümbernimetamisel '%-.64s'-ks (veakood: %d)", +"Viga faili '%-.64s' kirjutamisel (veakood: %d)", "'%-.64s' on lukustatud muudatuste vastu", "Sorteerimine katkestatud", -"Vaade '%-.64s' puudub '%-.64s' jaoks", -"Viga %d tabelitöötluses", -"Table handler for '%-.64s' doesn't have this option", +"Vaade '%-.64s' ei eksisteeri '%-.64s' jaoks", +"Tabeli handler tagastas vea %d", +"Tabeli '%-.64s' handler ei toeta antud operatsiooni", "Ei suuda leida kirjet '%-.64s'-s", -"Väär informatsiion failis '%-.64s'", -"Vigastatud võtmefail tabelile '%-.64s'", -"Vana võtmefail tabelile '%-.64s'. Proovi teda parandada", -"Tabel '%-.64s' on ainult lugemise õigusega", -"Mälu sai otsa. Proovi MySQL uuesti käivitada (Puudu jäi %d baiti)", -"Mälu sai sorteerimie ajal otsa. Suurenda MySQL-i sorteerimispuhvrit", -"Ootamatu faili lõpp leitud faili '%-.64s' lugemisel (vea kood: %d)", +"Vigane informatsioon failis '%-.64s'", +"Tabeli '%-.64s' võtmefail on vigane; Proovi seda parandada", +"Tabeli '%-.64s' võtmefail on aegunud; Paranda see!", +"Tabel '%-.64s' on ainult lugemiseks", +"Mälu sai otsa. Proovi MySQL uuesti käivitada (puudu jäi %d baiti)", +"Mälu sai sorteerimisel otsa. Suurenda MySQL-i sorteerimispuhvrit", +"Ootamatu faililõpumärgend faili '%-.64s' lugemisel (veakood: %d)", "Liiga palju samaaegseid ühendusi", -"Mälu sai otsa. Võimalik, et aitab swap-i lisamine või käsu 'ulimit' abil MySQL-le rohkema mälu kasutamise lubamine.", +"Mälu sai otsa. Võimalik, et aitab swap-i lisamine või käsu 'ulimit' abil MySQL-le rohkema mälu kasutamise lubamine", "Ei suuda lahendada IP aadressi masina nimeks", "Väär handshake", -"Ligipääs piiratud kasutajale: '%-.32s@%-.64s' andmebaasi '%-.64s'", -"Ligipääs piiratud kasutajale: '%-.32s@%-.64s' (Kasutab parooli: %s)", -"Andmebaas pole valitud", +"Ligipääs keelatud kasutajale '%-.32s@%-.64s' andmebaasile '%-.64s'", +"Ligipääs keelatud kasutajale '%-.32s@%-.64s' (kasutab parooli: %s)", +"Andmebaasi ei ole valitud", "Tundmatu käsk", -"Tulp '%-.64s' ei saa olla null", +"Tulp '%-.64s' ei saa omada nullväärtust", "Tundmatu andmebaas '%-.64s'", -"Tabel '%-.64s' on juba olemas", +"Tabel '%-.64s' juba eksisteerib", "Tundmatu tabel '%-.64s'", -"Tulp: '%-.64s' in %-.64s on väär", +"Väli '%-.64s' %-.64s-s ei ole ühene", "Serveri seiskamine käib", -"Tundmatu tulp '%-.64s' in '%-.64s'", -"'%-.64s' puudub GROUP BY-s", +"Tundmatu tulp '%-.64s' '%-.64s'-s", +"'%-.64s' puudub GROUP BY klauslis", "Ei saa grupeerida '%-.64s' järgi", -"Lauses on korraga nii tulbad kui summad", -"Tuplade arv tabelis erineb antud väärtuste arvust", +"Lauses on korraga nii tulbad kui summeerimisfunktsioonid", +"Tulpade arv erineb väärtuste arvust", "Identifikaatori '%-.100s' nimi on liiga pikk", "Kattuv tulba nimi '%-.64s'", "Kattuv võtme nimi '%-.64s'", -"Kattuv nimi '%-.64s' võtmele %d", -"Väär tulba kirjeldus tulbale '%-.64s'", -"%s '%-.80s' ligidal reas %d", +"Kattuv väärtus '%-.64s' võtmele %d", +"Vigane tulba kirjeldus tulbale '%-.64s'", +"%s '%-.80s' ligidal real %d", "Tühi päring", -"Pole unikaalne tabel/alias '%-.64s'", -"Vale vaikeväärtus '%-.64s'", -"Mitut põhivõtit (PRIMARY KEY) ei saa olla", -"Liiga palju võtmeid määratletud. Maksimaalselt võib olla %d võtit", +"Ei ole unikaalne tabel/alias '%-.64s'", +"Vigane vaikeväärtus '%-.64s' jaoks", +"Mitut primaarset võtit ei saa olla", +"Liiga palju võtmeid. Maksimaalselt võib olla %d võtit", "Võti koosneb liiga paljudest osadest. Maksimaalselt võib olla %d osa", -"Määratletud võti sai liiga pikk. Maksimaalne lubatud pikkus on %d", -"Võtme tulp '%-.64s' puudub antud tabelis", -"BLOB tulpa '%-.64s' ei saa kasutada võtmena", -"Tulba '%-.64s' pikkus on liiga pikk (maksimaalne = %d).", -"Tabeli kohta saab olla ainult üks auto_increment tulp ja see peab olema samas ka võtmena", +"Võti on liiga pikk. Maksimaalne võtmepikkus on %d", +"Võtme tulp '%-.64s' puudub tabelis", +"BLOB-tüüpi tulpa '%-.64s' ei saa kasutada võtmena", +"Tulba '%-.64s' pikkus on liiga pikk (maksimaalne pikkus: %d). Kasuta BLOB väljatüüpi", +"Vigane tabelikirjeldus; Tabelis tohib olla üks auto_increment tüüpi tulp ning see peab olema defineeritud võtmena", "%s: ootab ühendusi\n", "%s: MySQL lõpetas\n", -"%s: Sain signaali %d. Lõpetan!\n", +"%s: sain signaali %d. Lõpetan!\n", "%s: Lõpp\n", -"%s: Sulgen jõuga threadi %ld kasutaja: '%-.64s'\n", -"Ei saa luua IP pesa", +"%s: Sulgen jõuga lõime %ld kasutaja: '%-.32s'\n", +"Ei suuda luua IP socketit", "Tabelil '%-.64s' puuduvad võtmed. Loo tabel uuesti", -"Väljade eraldaja on väär. Vaata kasutamisjuhendisse", -"BLOB väljadega ei saa kasutada fikseeritud väljapikkust. Seetõttu on vajalik lisaklausel 'fields terminated by'.", -"Fail '%-.64s' peab asuma andmebaasi kataloogis ning olema loetav", -"Fail '%-.64s' on juba olemas", -"Kirjed: %ld Kustutatud: %ld Vahele jäetud: %ld Hoiatusi: %ld", -"Kirjed: %ld Topelt: %ld", -"Väär võtme osa. Kasutatud võtme osa ei ole string või on pikkus pikem kui võtme osa", -"ALTER TABLE abil ei saa koiki tulpasid kustutada. DROP TABLE kustutab terve tabeli", -"Ei saa kustutada '%-.64s'. On selline tulp või võti üldse olemas?", -"Kirjed: %ld Topelt: %ld Hoiatusi: %ld", -"INSERT TABLE '%-.64s' pole lubatud FROM tabelite nimekirjas", -"Tundmatu threadi id: %lu", -"Pole threadi %lu omanik", -"Pole kasutatud tabeleid", -"Liiga palju stringe tulbale %-.64s ja tüübile SET", -"Ei saa luua ainulaadset failinime %-.64s.(1-999)\n", -"Tabel '%-.64s' on lukustatud ainult lugemiseks ja sinna kirjutada ei saa", -"Tabel '%-.64s' pole lukustatud käsuga LOCK TABLES", -"BLOB tüüpi tulbal '%-.64s' ei saa olla vaikeväärtust", -"Väär andmebaasi nimi '%-.100s'", -"Väär tabeli nimi '%-.100s'", -"SELECT lause peab läbi vaatama suure hulga kirjeid ja võtaks tõenäoliselt liiga kaua aega. Tasub kontrollide WHERE klauslit ja vajadusel kasutada käsku SET OPTION SQL_BIG_SELECTS=1", +"Väljade eraldaja erineb oodatust. Tutvu kasutajajuhendiga", +"BLOB-tüüpi väljade olemasolul ei saa kasutada fikseeritud väljapikkust. Vajalik 'fields terminated by' määrang.", +"Fail '%-.64s' peab asuma andmebaasi kataloogis või olema kõigile loetav", +"Fail '%-.80s' juba eksisteerib", +"Kirjeid: %ld Kustutatud: %ld Vahele jäetud: %ld Hoiatusi: %ld", +"Kirjeid: %ld Kattuvaid: %ld", +"Vigane võtme osa. Kasutatud võtmeosa ei ole string tüüpi, määratud pikkus on pikem kui võtmeosa või tabelihandler ei toeta seda tüüpi võtmeid", +"ALTER TABLE kasutades ei saa kustutada kõiki tulpasid. Kustuta tabel DROP TABLE abil", +"Ei suuda kustutada '%-.64s'. Kontrolli kas tulp/võti eksisteerib", +"Kirjeid: %ld Kattuvaid: %ld Hoiatusi: %ld", +"INSERT TABLE '%-.64s' ei ole lubatud FROM tabelite nimekirjas", +"Tundmatu lõim: %lu", +"Ei ole lõime %lu omanik", +"Ühtegi tabelit pole kasutusel", +"Liiga palju string tulbale %-.64s tüübile SET", +"Ei suuda luua unikaalset logifaili nime %-.64s.(1-999)\n", +"Tabel '%-.64s' on lukustatud READ lukuga ning ei ole muudetav", +"Tabel '%-.64s' ei ole lukustatud käsuga LOCK TABLES", +"BLOB-tüüpi tulp '%-.64s' ei saa omada vaikeväärtust", +"Vigane andmebaasi nimi '%-.100s'", +"Vigane tabeli nimi '%-.100s'", +"SELECT lause peab läbi vaatama suure hulga kirjeid ja võtaks tõenäoliselt liiga kaua aega. Tasub kontrollida WHERE klauslit ja vajadusel kasutada käsku SET OPTION SQL_BIG_SELECTS=1", "Tundmatu viga", "Tundmatu protseduur '%-.64s'", -"Väär parameetrite hulk protseduurile '%-.64s'", -"Valed parameetrid protseduurile '%-.64s'", -"Tundmatu tabel '%-.64s' %s-s", +"Vale parameetrite hulk protseduurile '%-.64s'", +"Vigased parameetrid protseduurile '%-.64s'", +"Tundmatu tabel '%-.64s' %-.32s-s", "Tulp '%-.64s' on määratletud topelt", -"GROUP BY funktsiooni väärkasutamine", -"Tabel '%-.64s' kasutab laiendit, mis on tundmatu sellele MySQL versioonile", -"Tabelil peab olema vähemalt üks tulp", +"Vigane grupeerimisfunktsiooni kasutus", +"Tabel '%-.64s' kasutab laiendust, mis ei eksisteeri antud MySQL versioonis", +"Tabelis peab olema vähemalt üks tulp", "Tabel '%-.64s' on täis", -"Tundmatu kooditabel: '%-.64s'", -"Liiga palju tabeleid. MySQL oskab kasutada kuni %d tabelit JOINi puhul", +"Vigane kooditabel '%-.64s'", +"Liiga palju tabeleid. MySQL suudab JOINiga ühendada kuni %d tabelit", "Liiga palju tulpasid", -"Liiga pikk kirje. Maksimaalne kirje pikkus arvestamata BLOB tüüpi on %d. Võib-olla aitab mõnede väljade muutmine BLOB tüübiks", -"Threadi stack overrun: Used: %ld of a %ld stack. Use 'mysqld -O thlugeda_stack=#' to specify a bigger stack if needed", -"Ristsõltuvus OUTER JOIN-s. ON tingimused tuleks üle kontrollida", -"Tulp '%-.64s' on kasutused indeksis kui pole defineeritud tüübiga NOT NULL", -"Ei saa avada funktsiooni '%-.64s'", -"Ei saa algväärtustada funktsiooni '%-.64s'; %-.80s", +"Liiga pikk kirje. Kirje maksimumpikkus arvestamata BLOB-tüüpi välju on %d. Muuda mõned väljad BLOB-tüüpi väljadeks", +"Thread stack overrun: Used: %ld of a %ld stack. Use 'mysqld -O thread_stack=#' to specify a bigger stack if needed", +"Ristsõltuvus OUTER JOIN klauslis. Kontrolli oma ON tingimusi", +"Tulp '%-.64s' on kasutusel indeksina, kuid ei ole määratletud kui NOT NULL", +"Ei suuda avada funktsiooni '%-.64s'", +"Ei suuda algväärtustada funktsiooni '%-.64s'; %-.80s", "Teegi nimes ei tohi olla kataloogi", -"Funktsioon '%-.64s' on juba olemas", -"Ei saa avada teeki '%-.64s' (vea kood: %d %s)", -"Ei leia funktsiooni '%-.64s' selles teegis'", -"Funktsiooni '%-.64s' pole defineeritud", -"Masin '%-.64s' blokeeritud hulgaliste ühendusvigade pärast. Blokeeringu saab eemaldada käsuga 'mysqladmin flush-hosts'", -"Masinale '%-.64s' pole lubatud ligipääsu sellele MySQL serverile", +"Funktsioon '%-.64s' juba eksisteerib", +"Ei suuda avada jagatud teeki '%-.64s' (veakood: %d %-.64s)", +"Ei leia funktsiooni '%-.64s' antud teegis", +"Funktsioon '%-.64s' ei ole defineeritud", +"Masin '%-.64s' on blokeeritud hulgaliste ühendusvigade tõttu. Blokeeringu saab tühistada 'mysqladmin flush-hosts' käsuga", +"Masinal '%-.64s' puudub ligipääs sellele MySQL serverile", "Te kasutate MySQL-i anonüümse kasutajana, kelledel pole parooli muutmise õigust", -"Teil peab olema tabelite muutmise õigus muutmaks teiste paroole", -"Ei leia kirjet kasutajate tabelis", -"Sobinud kirjed: %ld Muudetud: %ld Hoiatusi: %ld", -"Ei saa luua threadi (vea kood %d). Kui mälu pole otsas, tasub operatsioonisüsteemi spetsiifilist viga", -"Tulpade arv ei vasta väärtuste hulgale reas %ld", -"Ei saa avada tabelit: '%-.64s', +"Teiste paroolide muutmiseks on nõutav tabelite muutmisõigus 'mysql' andmebaasis", +"Ei leia vastavat kirjet kasutajate tabelis", +"Sobinud kirjeid: %ld Muudetud: %ld Hoiatusi: %ld", +"Ei suuda luua uut lõime (veakood %d). Kui mälu ei ole otsas, on tõenäoliselt tegemist operatsioonisüsteemispetsiifilise veaga", +"Tulpade hulk erineb väärtuste hulgast real %ld", +"Ei suuda taasavada tabelit '%-.64s'", "NULL väärtuse väärkasutus", -"Viga '%-.64s' regexp-i käest", -"GROUP tulpade segamine (MIN(),MAX(),COUNT()...) on väär kui ei kasutata GROUP BY klauslit", -"Sellist õigust ei ole kasutajale '%-.32s' masinast '%-.64s'", -"%-.16s käsk pole lubatud kasutajale '%-.32s@%-.64s' tabelile '%-.64s'", -"%-.16s käsk pole lubatud kasutajale '%-.32s@%-.64s' tulbale '%-.64s' tabelis '%-.64s'", -"Väär GRANT/REVOKE kasutus", -"Masina või kasutaja nimi on liiga pikk GRANT lauses", -"Tabelit '%-64s.%s' ei leitud", -"Sellist õigust pole kasutajale '%-.32s' masinast '%-.64s' tabelile '%-.64s'", -"Antud käsk pole lubatud selle MySQL-i versiooniga", +"regexp tagastas vea '%-.64s'", +"GROUP tulpade (MIN(),MAX(),COUNT()...) kooskasutamine tavaliste tulpadega ilma GROUP BY klauslita ei ole lubatud", +"Sellist õigust ei ole defineeritud kasutajale '%-.32s' masinast '%-.64s'", +"%-.16s käsk ei ole lubatud kasutajale '%-.32s@%-.64s' tabelis '%-.64s'", +"%-.16s käsk ei ole lubatud kasutajale '%-.32s@%-.64s' tulbale '%-.64s' tabelis '%-.64s'", +"Vigane GRANT/REVOKE käsk. Tutvu kasutajajuhendiga", +"Masina või kasutaja nimi GRANT lauses on liiga pikk", +"Tabelit '%-.64s.%-.64s' ei eksisteeri", +"Sellist õigust ei ole defineeritud kasutajale '%-.32s' masinast '%-.64s' tabelile '%-.64s'", +"Antud käsk ei ole lubatud käesolevas MySQL versioonis", "Viga SQL süntaksis", -"INSERT DELAYED thread ei saanud nõutavat lukku tabelile %-.64s", -"Liiga palju DELAYED threade on kasutusel", -"Ühendus katkestatud %ld andmebaasile '%-.64s' kasutaja '%-.64s' (%s)", -"Sain lubatust suurema paketi (max_allowed_packet)", -"Got a read error from the connection pipe", -"Got an error from fcntl()", -"Got packets out of order", -"Ei suuda ühendust lahti pakkida", -"Viga ühenduse lugemisel", -"Aeg sai otsa ühenduse lugemisel", -"Viga ühenduse kirjutamisel", -"Aeg sai otsa ühenduse kirjutamisel", -"Tulemuseks saadud string on pikem kui max_allowed_packet väärtus", -"Kasutatud tabeli tüüp ei toeta BLOB/TEXT tulpasid", -"Kasutatud tabeli tüüp ei toeta AUTO_INCREMENT tulpasid", -"INSERT DELAYED käsku ei saa kasutada tabeliga '%-.64s', kuna see on lukus käsuga LOCK TABLES", -"Väär tulba nimi '%-.100s'", -"Kasutusel olev tabelite haldur ei oska indekseerida tulpa '%-.64s'", -"All tables in the MERGE table are not identically defined", -"Can't write, because of unique constraint, to table '%-.64s'", -"BLOB column '%-.64s' used in key specification without a key length", -"All parts of a PRIMARY KEY must be NOT NULL; If you need NULL in a key, use UNIQUE instead", -"Tulemis on rohkem kui üks kirje", -"This table type requires a primary key", -"Antud MySQL ei ole kompileeritud RAID-i toega", -"You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column", -"Key '%-.64s' doesn't exist in table '%-.64s'", -"Ei suuda tabelit avada", -"See tabelitüüp ei toeta käske CHECK/REPAIR", -"Puudub õigus selle transaktsioonikäsu andmiseks", -"Sain vea %d COMMIT käsu täitmisel", -"Sain vea %d ROLLBACK käsu täitmisel", -"Sain vea %d FLUSH_LOGS käsu täitmisel", -"Sain vea %d CHECKPOINT käsu täitmisel", -"Ühendus %ld katkestatud andmebaas: '%-.64s' kasutaja: '%-.32s' masin: `%-.64s' (%-.64s)", +"INSERT DELAYED lõim ei suutnud saada soovitud lukku tabelile %-.64s", +"Liiga palju DELAYED lõimesid kasutusel", +"Ühendus katkestatud %ld andmebaasile: '%-.64s' kasutajale: '%-.32s' (%-.64s)", +"Saabus suurem pakett kui lubatud 'max_allowed_packet' muutujaga", +"Viga ühendustoru lugemisel", +"fcntl() tagastas vea", +"Paketid saabusid vales järjekorras", +"Viga andmepaketi lahtipakkimisel", +"Viga andmepaketi lugemisel", +"Kontrollaja ületamine andmepakettide lugemisel", +"Viga andmepaketi kirjutamisel", +"Kontrollaja ületamine andmepakettide kirjutamisel", +"Tulemus on pikem kui lubatud 'max_allowed_packet' muutujaga", +"Valitud tabelitüüp ei toeta BLOB/TEXT tüüpi välju", +"Valitud tabelitüüp ei toeta AUTO_INCREMENT tüüpi välju", +"INSERT DELAYED ei saa kasutada tabeli '%-.64s' peal, kuna see on lukustatud LOCK TABLES käsuga", +"Vigane tulba nimi '%-.100s'", +"Tabelihandler ei oska indekseerida tulpa '%-.64s'", +"Kõik tabelid MERGE tabeli määratluses ei ole identsed", +"Ei suuda kirjutada tabelisse '%-.64s', kuna see rikub ühesuse kitsendust", +"BLOB-tüüpi tulp '%-.64s' on kasutusel võtmes ilma pikkust määratlemata", +"Kõik PRIMARY KEY peavad olema määratletud NOT NULL piiranguga; vajadusel kasuta UNIQUE tüüpi võtit", +"Tulemis oli rohkem kui üks kirje", +"Antud tabelitüüp nõuab primaarset võtit", +"Antud MySQL versioon on kompileeritud ilma RAID toeta", +"Katse muuta tabelit turvalises rezhiimis ilma WHERE klauslita", +"Võti '%-.64s' ei eksisteeri tabelis '%-.64s'", +"Ei suuda avada tabelit", +"Antud tabelitüüp ei toeta CHECK/REPAIR käske", +"Seda käsku ei saa kasutada transaktsiooni sees", +"Viga %d käsu COMMIT täitmisel", +"Viga %d käsu ROLLBACK täitmisel", +"Viga %d käsu FLUSH_LOGS täitmisel", +"Viga %d käsu CHECKPOINT täitmisel", +"Ühendus katkestatud %ld andmebaas: '%-.64s' kasutaja: '%-.32s' masin: `%-.64s' (%-.64s)", "The handler for the table does not support binary table dump", -"Binlog closed while trying to FLUSH MASTER", -"Failed rebuilding the index of dumped table '%-.64s'", +"Binlog closed, cannot RESET MASTER", +"Failed rebuilding the index of dumped table '%-.64s'", "Error from master: '%-.64s'", "Net error reading from master", "Net error writing to master", -"Can't find FULLTEXT index matching the column list", -"Can't execute the given command because you have active locked tables or an active transaction", -"Tundmatu süsteemne muutja '%-.64'", +"Ei suutnud leida FULLTEXT indeksit, mis kattuks kasutatud tulpadega", +"Ei suuda täita antud käsku kuna on aktiivseid lukke või käimasolev transaktsioon", +"Tundmatu süsteemne muutuja '%-.64'", "Tabel '%-.64s' on märgitud vigaseks ja tuleb parandada", -"Tabel '%-.64s' on märgitud vigaseks ja viimane (automaatne?) parandamiskatse ebaõnnestus", -"Warning: Some non-transactional changed tables couldn't be rolled back", -"Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage. Increase this mysqld variable and try again', +"Tabel '%-.64s' on märgitud vigaseks ja viimane (automaatne?) parandus ebaõnnestus", +"Hoiatus: mõnesid transaktsioone mittetoetavaid tabeleid ei suudetud tagasi kerida", +"Mitme lausendiga transaktsioon nõudis rohkem ruumi kui lubatud 'max_binlog_cache_size' muutujaga. Suurenda muutuja väärtust ja proovi uuesti", "This operation cannot be performed with a running slave, run SLAVE STOP first", "This operation requires a running slave, configure slave and do SLAVE START", "The server is not configured as slave, fix in config file or with CHANGE MASTER TO", "Could not initialize master info structure, check permisions on master.info", "Could not create slave thread, check system resources", -"User %-.64s has already more than 'max_user_connections' active connections", -"You may only use constant expressions with SET", -"Lock wait timeout exceeded", -"The total number of locks exceeds the lock table size", -"Update locks cannot be acquired during a READ UNCOMMITTED transaction", -"DROP DATABASE not allowed while thread is holding global read lock", -"CREATE DATABASE not allowed while thread is holding global read lock", -"Wrong arguments to %s", -"%-.32s@%-.64s is not allowed to create new users", -"Incorrect table definition; All MERGE tables must be in the same database", -"Deadlock found when trying to get lock; Try restarting transaction", +"Kasutajal %-.64s on juba rohkem ühendusi kui lubatud 'max_user_connections' muutujaga", +"Ainult konstantsed suurused on lubatud SET klauslis", +"Kontrollaeg ületatud luku järel ootamisel; Proovi transaktsiooni otsast alata", +"Lukkude koguarv ületab lukutabeli suuruse", +"Uuenduslukke ei saa kasutada READ UNCOMMITTED transaktsiooni käigus", +"DROP DATABASE ei ole lubatud kui lõim omab globaalset READ lukku", +"CREATE DATABASE ei ole lubatud kui lõim omab globaalset READ lukku", +"Vigased parameetrid %s-le", +"Kasutajal %-.32s@%-.64s ei ole lubatud luua uusi kasutajaid", +"Vigane tabelimääratlus; kõik MERGE tabeli liikmed peavad asuma samas andmebaasis", +"Lukustamisel tekkis tupik (deadlock); alusta transaktsiooni otsast", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", -"Error when executing command %s: %-.128s", -"Wrong usage of %s and %s", -"The used SELECT statements have a different number of columns", -"Can't execute the query because you have a conflicting read lock", -"Mixing of transactional and non-transactional tables is disabled", -"Option '%s' used twice in statement", +"Viga käsu %s täitmisel: %-.128s", +"Vigane %s ja %s kasutus", +"Tulpade arv kasutatud SELECT lausetes ei kattu", +"Ei suuda täita päringut konfliktse luku tõttu", +"Transaktsioone toetavate ning mittetoetavate tabelite kooskasutamine ei ole lubatud", +"Määrangut '%s' on lauses kasutatud topelt", +"Antud tabelitüüp ei toeta FULLTEXT indekseid", diff --git a/sql/share/french/errmsg.txt b/sql/share/french/errmsg.txt index 7d9c6202c5f..a88e4dc0f1e 100644 --- a/sql/share/french/errmsg.txt +++ b/sql/share/french/errmsg.txt @@ -223,3 +223,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/german/errmsg.txt b/sql/share/german/errmsg.txt index 14bd0f8a042..a0aa5804959 100644 --- a/sql/share/german/errmsg.txt +++ b/sql/share/german/errmsg.txt @@ -226,3 +226,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"Der verwendete Tabellentyp unterstützt keine FULLTEXT-Indexe", diff --git a/sql/share/greek/errmsg.txt b/sql/share/greek/errmsg.txt index ab1103a56b4..62c9fb1b010 100644 --- a/sql/share/greek/errmsg.txt +++ b/sql/share/greek/errmsg.txt @@ -223,3 +223,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/hungarian/errmsg.txt b/sql/share/hungarian/errmsg.txt index 33d51cb0e60..c170ae172ff 100644 --- a/sql/share/hungarian/errmsg.txt +++ b/sql/share/hungarian/errmsg.txt @@ -225,3 +225,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/italian/errmsg.txt b/sql/share/italian/errmsg.txt index 127a33bbb28..131d4a5e25c 100644 --- a/sql/share/italian/errmsg.txt +++ b/sql/share/italian/errmsg.txt @@ -223,3 +223,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/japanese/errmsg.txt b/sql/share/japanese/errmsg.txt index e345f462f2a..ba355c03e13 100644 --- a/sql/share/japanese/errmsg.txt +++ b/sql/share/japanese/errmsg.txt @@ -225,3 +225,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/korean/errmsg.txt b/sql/share/korean/errmsg.txt index dd1d92adf64..39176b1fa13 100644 --- a/sql/share/korean/errmsg.txt +++ b/sql/share/korean/errmsg.txt @@ -223,3 +223,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/norwegian-ny/errmsg.txt b/sql/share/norwegian-ny/errmsg.txt index bbdf23e4056..d491c138acf 100644 --- a/sql/share/norwegian-ny/errmsg.txt +++ b/sql/share/norwegian-ny/errmsg.txt @@ -225,3 +225,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/norwegian/errmsg.txt b/sql/share/norwegian/errmsg.txt index 6139b1bb700..84e146a78c2 100644 --- a/sql/share/norwegian/errmsg.txt +++ b/sql/share/norwegian/errmsg.txt @@ -225,3 +225,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/polish/errmsg.txt b/sql/share/polish/errmsg.txt index 39ff72acba1..2eb601c1673 100644 --- a/sql/share/polish/errmsg.txt +++ b/sql/share/polish/errmsg.txt @@ -227,3 +227,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/portuguese/errmsg.txt b/sql/share/portuguese/errmsg.txt index a522e792750..c0154648b5e 100644 --- a/sql/share/portuguese/errmsg.txt +++ b/sql/share/portuguese/errmsg.txt @@ -223,3 +223,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/romanian/errmsg.txt b/sql/share/romanian/errmsg.txt index 0177ff942a0..f50009f3ad2 100644 --- a/sql/share/romanian/errmsg.txt +++ b/sql/share/romanian/errmsg.txt @@ -227,3 +227,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/russian/errmsg.txt b/sql/share/russian/errmsg.txt index c6b5c324cad..7d6ac176906 100644 --- a/sql/share/russian/errmsg.txt +++ b/sql/share/russian/errmsg.txt @@ -208,21 +208,22 @@ "īÅ ŠĻĢÕŽÉĢĻÓŲ ÉĪÉĆÉĮĢÉŚÉŅĻ×ĮŌŲ ÓŌŅÕĖŌÕŅÕ master info, ŠŅĻ×ÅŅŌÅ persmissions ĪĮ ĘĮŹĢÅ master.info", "īÅ ĶĻĒÕ ÓĻŚÄĮŌŲ ŠŅĻĆÅÓÓ SLAVE, ŠŅĻ×ÅŅŲŌÅ ÓÉÓŌÅĶĪŁÅ ŅÅÓÕŅÓŁ", "User %-.64s has already more than 'max_user_connections' active connections", -"You may only use constant expressions with SET", +"÷ SET ĶĻĒÕŌ ÉÓŠĻĢŲŚĻ×ĮŌŲÓŃ ŌĻĢŲĖĻ ĖĻĪÓŌĮĪŌĪŁÅ ףŅĮÖÅĪÉŃ", "Lock wait timeout exceeded", "The total number of locks exceeds the lock table size", "Update locks cannot be acquired during a READ UNCOMMITTED transaction", "DROP DATABASE not allowed while thread is holding global read lock", "CREATE DATABASE not allowed while thread is holding global read lock", -"Wrong arguments to %s", -"%-.32s@%-.64s is not allowed to create new users", -"Incorrect table definition; All MERGE tables must be in the same database", +"īÅ×ÅŅĪŁŹ ĮŅĒÕĶÅĪŌ ÄĢŃ %s", +"%-.32s@%-.64s ĪÅ ÉĶÅÅŌ ŠŅĮ×Į ÓĻŚÄĮ×ĮŌŲ ŠĻĢŲŚĻ×ĮŌÅĢÅŹ", +"īÅ×ÅŅĪĻÅ ĻŠŅÅÄÅĢÅĪÉÅ ŌĮĀĢÉĆŁ; ÷ÓÅ ŌĮĀĢÉĆŁ × MERGE ÄĻĢÖĪ× ĀŁŌŲ ÉŚ ĻÄĪĻŹ ĀĮŚŁ", "Deadlock found when trying to get lock; Try restarting transaction", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", -"Error when executing command %s: %-.128s", -"Wrong usage of %s and %s", -"The used SELECT statements have a different number of columns", +"ļŪÉĀĖĮ ×Ļ ×ŅÅĶŃ ×ŁŠĻĢĪÅĪÉŃ %s: %-.128s", +"īÅ×ÅŅĪĻÅ ÉÓŠĻĢŲŚĻ×ĮĪÉÅ %s É %s", +"éÓŠĻĢŲŚĻ×ĮĪĪŁÅ SELECT'Ł ÉĶÅĄŲ ŅĮŚĪĻÅ ĖĻĢÉŽÅÓŌ×Ļ ÓŌĻĢĀĆĻ×", "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"ōĮĀĢÉĆĮ ÄĮĪĪĻĒĻ ŌÉŠĮ ĪÅ ĶĻÖÅŌ ÉĶÅŌŲ FULLTEXT ÉĪÄÅĖÓĮ", diff --git a/sql/share/slovak/errmsg.txt b/sql/share/slovak/errmsg.txt index 26ca2881212..d01e2db7165 100644 --- a/sql/share/slovak/errmsg.txt +++ b/sql/share/slovak/errmsg.txt @@ -231,3 +231,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/spanish/errmsg.txt b/sql/share/spanish/errmsg.txt index 8bbf04c9a3d..6e2b238b91a 100644 --- a/sql/share/spanish/errmsg.txt +++ b/sql/share/spanish/errmsg.txt @@ -224,3 +224,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/swedish/errmsg.txt b/sql/share/swedish/errmsg.txt index b4303de8619..ee504036d8a 100644 --- a/sql/share/swedish/errmsg.txt +++ b/sql/share/swedish/errmsg.txt @@ -223,3 +223,4 @@ "Kan inte utföra kommandot emedan du har ett READ lås", "Blandning av transaktionella och icke-transaktionella tabeller är inaktiverat", "Option '%s' användes två gånger", +"The used table type doesn't support FULLTEXT indexes", diff --git a/sql/share/ukrainian/errmsg.txt b/sql/share/ukrainian/errmsg.txt index 80c2bcc06fb..2bd3d656ed3 100644 --- a/sql/share/ukrainian/errmsg.txt +++ b/sql/share/ukrainian/errmsg.txt @@ -228,3 +228,4 @@ "Can't execute the query because you have a conflicting read lock", "Mixing of transactional and non-transactional tables is disabled", "Option '%s' used twice in statement", +"÷ÉĖĻŅÉÓŌĮĪÉŹ ŌÉŠ ŌĮĀĢÉƦ ĪÅ Š¦ÄŌŅÉĶÕ¤ FULLTEXT ¦ĪÄÅĖÓ¦×", diff --git a/sql/sql_table.cc b/sql/sql_table.cc index d76c6bbd627..9b718bb9179 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -424,6 +424,15 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, key_info->key_parts=(uint8) key->columns.elements; key_info->key_part=key_part_info; + if (key->type == Key::FULLTEXT) + { + if (file->option_flag() & HA_NO_FULLTEXT_KEY) + { + my_error(ER_TABLE_CANT_HANDLE_FULLTEXT, MYF(0)); + DBUG_RETURN(-1); + } + } + List_iterator<key_part_spec> cols(key->columns); for (uint column_nr=0 ; (column=cols++) ; column_nr++) { @@ -439,13 +448,8 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, column->field_name); DBUG_RETURN(-1); } - if (key->type == Key::FULLTEXT && - (file->option_flag() & HA_NO_FULLTEXT_KEY)) - { - my_printf_error(ER_WRONG_KEY_COLUMN, ER(ER_WRONG_KEY_COLUMN), MYF(0), - column->field_name); - DBUG_RETURN(-1); - } + if (key->type == Key::FULLTEXT) + column->length=1; /* ft-code ignores it anyway :-) */ if (f_is_blob(sql_field->pack_flag)) { if (!(file->option_flag() & HA_BLOB_KEY)) @@ -456,15 +460,10 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, } if (!column->length) { - if (key->type == Key::FULLTEXT) - column->length=1; /* ft-code ignores it anyway :-) */ - else - { - my_printf_error(ER_BLOB_KEY_WITHOUT_LENGTH, - ER(ER_BLOB_KEY_WITHOUT_LENGTH),MYF(0), - column->field_name); - DBUG_RETURN(-1); - } + my_printf_error(ER_BLOB_KEY_WITHOUT_LENGTH, + ER(ER_BLOB_KEY_WITHOUT_LENGTH),MYF(0), + column->field_name); + DBUG_RETURN(-1); } } if (!(sql_field->flags & NOT_NULL_FLAG)) |