Merge 10.4 into 10.5

This commit is contained in:
Marko Mäkelä 2019-06-13 18:36:09 +03:00
commit 984d7100cd
157 changed files with 3036 additions and 2605 deletions

View File

@ -72,10 +72,10 @@ MYSQL_ADD_EXECUTABLE(mysql_plugin mysql_plugin.c)
TARGET_LINK_LIBRARIES(mysql_plugin ${CLIENT_LIB}) TARGET_LINK_LIBRARIES(mysql_plugin ${CLIENT_LIB})
MYSQL_ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc) MYSQL_ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc)
TARGET_LINK_LIBRARIES(mysqlbinlog ${CLIENT_LIB}) TARGET_LINK_LIBRARIES(mysqlbinlog ${CLIENT_LIB} mysys_ssl)
MYSQL_ADD_EXECUTABLE(mysqladmin mysqladmin.cc ../sql/password.c) MYSQL_ADD_EXECUTABLE(mysqladmin mysqladmin.cc ../sql/password.c)
TARGET_LINK_LIBRARIES(mysqladmin ${CLIENT_LIB}) TARGET_LINK_LIBRARIES(mysqladmin ${CLIENT_LIB} mysys_ssl)
MYSQL_ADD_EXECUTABLE(mysqlslap mysqlslap.c) MYSQL_ADD_EXECUTABLE(mysqlslap mysqlslap.c)
SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS") SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")

View File

@ -971,6 +971,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
exit(1); exit(1);
} }
break; break;
case (int) OPT_DEFAULT_CHARSET:
if (default_charset == disabled_my_option)
default_charset= (char *)mysql_universal_client_charset;
break;
} }
return 0; return 0;
} }

57
debian/po/ar.po vendored
View File

@ -190,60 +190,3 @@ msgstr ""
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
#~ msgid "Really proceed with downgrade?"
#~ msgstr "هل فعلاً تريد التثبيط؟"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr "هناك ملف مسمى /var/lib/mysql/debian-*.flag موجود على هذا النظام."
#, fuzzy
#~| msgid ""
#~| "Such file is an indication that a mariadb-server package with a higher "
#~| "version has been installed earlier."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "هذا الملف دلالة على أن نسخة أحدث من حزمة mariadb-server تم تثبيتها مسبقاً."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "ليست هناك أية ضمانة أن النسخة التي تقوم بتثبيتها ستكون قادرة على استخدام "
#~ "قواعد البيانات الحالية."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "تشغيل خادم MariaDB عند الإقلاع؟"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "يمكن تشغيل خادم MariaDB آلياً وقت الإقلاع أو يدوياً باستخدام الأمر '/etc/"
#~ "init.d/mysql start'."
#~ msgid ""
#~ "To use MariaDB, the following entries for users and groups should be "
#~ "added to the system:"
#~ msgstr ""
#~ "كي تستخدم MariaDB، يجب إضافة المُدخلات التالية الخاصة بالمستخدمين "
#~ "والمجموعات إلى النظام:"
#~ msgid ""
#~ "Support MySQL connections from hosts running Debian \"sarge\" or older?"
#~ msgstr ""
#~ "هل تريد دعم اتصالات MySQL من الأجهزة التي تعمل على ديبيان \"sarge\" أو "
#~ "أقدم؟"
#~ msgid ""
#~ "In old versions of MySQL clients on Debian, passwords were not stored "
#~ "securely. This has been improved since then, however clients (such as "
#~ "PHP) from hosts running Debian 3.1 Sarge will not be able to connect to "
#~ "recent accounts or accounts whose password have been changed."
#~ msgstr ""
#~ "في إصدارات عملاء MySQL القديمة من ديبيان، لم تكن كلمات المرور تحفظ بشكل "
#~ "آمن. ولقد حل هذه المشكلة بعدها، غير أن العملاء (مثل PHP) المتصلين من "
#~ "أجهزة تعمل على ديبيان Sarge 3.1 لن يكونوا قادرين على الاتصال باستخدام "
#~ "الحسابات الحديثة أو الحسابات التي تم تغيير كلمة مرورها."

163
debian/po/ca.po vendored
View File

@ -158,166 +158,3 @@ msgstr ""
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
#, fuzzy
#~| msgid "Should MySQL start on boot?"
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Voleu que el MariaDB s'inici� a l'arrencada ?"
#, fuzzy
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "El MariaDB es pot executar a l'arrencada o nom�s si executeu manualment '/"
#~ "etc/init.d/mysql start'. Seleccioneu 's�' si voleu que s'inicialitzi "
#~ "autom�ticament."
#, fuzzy
#~ msgid ""
#~ "To use mysql you must install an equivalent user and group to the "
#~ "following and ensure yourself that /var/lib/mysql has the right "
#~ "permissions (the uid/gid may be different)."
#~ msgstr ""
#~ "Per utilitzar la base de dades de MySQL heu d'afegir un usuari i grup "
#~ "equivalent al seg�ent i assegurar-vos que el directori /var/lib/mysql "
#~ "tingui els permisos correctes."
#~ msgid ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgstr ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgid "/etc/group: mysql:x:101:"
#~ msgstr "/etc/group: mysql:x:101:"
#~ msgid "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgstr "/var/lib/mysql: drwxr-xr-x mysql mysql"
#, fuzzy
#~ msgid "Please also read http://www.mysql.com/doc/en/Upgrade.html"
#~ msgstr ""
#~ "Feu una ullada al document: http://www.mysql.com/doc/en/Upgrade.html"
#, fuzzy
#~ msgid ""
#~ "MySQL will only install if you have a non-numeric hostname that is "
#~ "resolvable via the /etc/hosts file. E.g. if the \"hostname\" command "
#~ "returns \"myhostname\" then there must be a line like \"10.0.0.1 "
#~ "myhostname\"."
#~ msgstr ""
#~ "El MySQL nom�s s'instal�la en cas de tenir un nom d'ordinador central que "
#~ "no sigui num�ric i que es pugui resoldre a trav�s del fitxer /etc/hosts. "
#~ "Ex. si l'ordre \"hostname\" retorna \"myhostname\", llavors hi ha d'haver "
#~ "una línia com la següent \"10.0.0.1 myhostname\"."
#, fuzzy
#~ msgid ""
#~ "A new mysql user \"debian-sys-maint\" will be created. This mysql account "
#~ "is used in the start/stop and cron scripts. Don't delete."
#~ msgstr ""
#~ "Es crea un nou usuari de mysql \"debian-sys-maint\". S'utilitza per les "
#~ "seq��ncies d'inicialitzaci� i aturada del cron, no el suprimiu."
#, fuzzy
#~ msgid ""
#~ "Please remember to set a PASSWORD for the MySQL root user! If you use a /"
#~ "root/.my.cnf, always write the \"user\" and the \"password\" lines in "
#~ "there, never only the password!"
#~ msgstr ""
#~ "Recordeu posar una contrasenya al superusuari del MySQL. Si utilitzeu un "
#~ "fitxer /root/.my.cnf, escriviu sempre all� les l�nies \"user\" i "
#~ "\"password\".; mai nom�s la contrasenya. Per a m�s informaci� feu una "
#~ "ullada a /usr/share/doc/mysql-server/README.Debian."
#, fuzzy
#~ msgid ""
#~ "Should I remove all databases below /var/lib/mysql as you are purging the "
#~ "mysql-server package?"
#~ msgstr ""
#~ "Voleu suprimir totes les bases de dades en purgar el paquet mysql-server ?"
#~ msgid ""
#~ "Networking is disabled by default for security reasons. You can enable it "
#~ "by commenting out the skip-networking option in /etc/mysql/my.cnf."
#~ msgstr ""
#~ "La xarxa est� inhabilitada per defecte per a raons de seguretat. La podeu "
#~ "habilitar descomentant l'opci� de skip-networking del fitxer /etc/mysql/"
#~ "my.cnf."
#~ msgid "security and update notice"
#~ msgstr "Av�s de seguretat i actualitzaci�"
#~ msgid "Please run mysql_fix_privilege_tables !"
#~ msgstr "Executeu mysql_fix_privilege_tables"
#~ msgid ""
#~ "I will ensure secure permissions of /var/lib/mysql by replacing GIDs "
#~ "other than root and mysql with mysql."
#~ msgstr ""
#~ "S'asseguren els permisos de seguretat de /var/lib/mysql canviant a mysql "
#~ "tots els GIDs diferents a root i mysql."
#~ msgid ""
#~ "Instructions how to enable SSL support are in /usr/share/doc/mysql-server/"
#~ msgstr ""
#~ "Per habilitar el suport de SSL podeu seguir les instruccions de /usr/"
#~ "share/doc/mysql-server/"
#~ msgid "mysql_fix_privileges_tables will be executed"
#~ msgstr "s'executa mysql_fix_privileges_tables"
#~ msgid ""
#~ "The latest MySQL versions have an enhanced, more fine grained, privilege "
#~ "system. To make use of it, some new fields must be added to the tables "
#~ "in the \"mysql\" database. This is done by the "
#~ "mysql_fix_privilege_tables script during this upgrade regardless of if "
#~ "the server is currently running or not!"
#~ msgstr ""
#~ "Les �ltimes versions de MySQL tenen un sistema de privilegis m�s "
#~ "elaborat. Per utilitzar-lo cal afegir nous camps a les taules de la base "
#~ "de dades \"mysql\". Aquesta tasca la realitza la seq��ncia "
#~ "mysql_fix_privilege_tables durant l'actualitzaci� independentment de si "
#~ "el servidor s'est� executant o no!"
#~ msgid ""
#~ "This script is not supposed to give any user more rights that he had "
#~ "before, if you encounter such a case, please contact me."
#~ msgstr ""
#~ "Aquesta seq��ncia no assigna privilegis d'usuari diferents als que ja "
#~ "tenia, en cas que us trob�ssiu en aquesta situaci�, poseu-vos en contacte "
#~ "amb mi."
#~ msgid ""
#~ "Should I remove everything below /var/lib/mysql when you purge the mysql-"
#~ "server package with the \"dpkg --purge mysql-server\" command (i.e. "
#~ "remove everything including the configuration) somewhen? (default is not)"
#~ msgstr ""
#~ "Voleu suprimir tots els continguts de /var/lib/mysql quan es purgui el "
#~ "paquet mysql-server amb l'ordre \"dpkg --purge mysql-server\". (ex. "
#~ "suprimir-ho tot incl�s la configuraci�) ? (per defecte no)"
#~ msgid "Make MySQL reachable via network?"
#~ msgstr "Voleu fer accessible el MySQL via xarxa ?"
#~ msgid ""
#~ "Should MySQL listen on a network reachable TCP port? This is not "
#~ "necessary for use on a single computer and could be a security problem."
#~ msgstr ""
#~ "Voleu que el MySQL escolti a un port TCP accessible des de la xarxa ? "
#~ "Aquesta opci� no �s imprescindible en ordinadors a�llats i podria "
#~ "provocar un problema de seguretat."
#~ msgid "Enable chroot mode?"
#~ msgstr "Permetre el mode chroot ?"
#~ msgid ""
#~ "MySQL is able to jail itself into the /var/lib/mysql_jail directory so "
#~ "that users cannot modify any files outside this directory. This improves "
#~ "resistence against crackers, too, as they are not able to modify system "
#~ "files."
#~ msgstr ""
#~ "El MySQL es pot executar en una entorn tancat al directori /var/lib/"
#~ "mysql_jail perqu� els usuaris no puguin modificar cap fitxer fora del "
#~ "directori.Aquesta opci� tamb� augmenta la seguretat envers els crackers, "
#~ "jaque no poden modificar els fitxers del sistema."

151
debian/po/cs.po vendored
View File

@ -192,154 +192,3 @@ msgstr ""
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Opravdu pokračovat v degradaci?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr "V systému existuje soubor /var/lib/mysql/debian-*.flag."
#, fuzzy
#~| msgid ""
#~| "Such file is an indication that a mariadb-server package with a higher "
#~| "version has been installed earlier."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "To znamená, že již byl nainstalován balík mariadb-server s vyšší verzí."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "Neexistuje žádná záruka, že momentálně instalovaná verze bude umět "
#~ "pracovat se stávajícími databázemi."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Spustit MariaDB server při startu systému?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "MariaDB se může spouštět automaticky při startu systému, nebo ručně "
#~ "příkazem '/etc/init.d/mysql start'."
#~ msgid ""
#~ "To use MariaDB, the following entries for users and groups should be "
#~ "added to the system:"
#~ msgstr ""
#~ "Abyste mohli MariaDB používat, musíte v systému založit následující "
#~ "uživatele a skupiny:"
#~ msgid "Cannot upgrade if ISAM tables are present!"
#~ msgstr "Aktualizace nelze provést pokud jsou přítomny tabulky ISAM!"
#~ msgid ""
#~ "Recent versions of MySQL can no longer use the old ISAM table format and "
#~ "it is necessary to convert your tables to e.g. MyISAM before upgrading by "
#~ "using \"mysql_convert_table_format\" or \"ALTER TABLE x ENGINE=MyISAM\". "
#~ "The installation of mysql-server-5.1 will now abort. In case your old "
#~ "mysql-server-4.1 gets removed nevertheless just reinstall it to convert "
#~ "those tables."
#~ msgstr ""
#~ "Poslední verze MySQL již nemohou používat starý formát tabulek ISAM a "
#~ "před aktualizací je nutné převést tyto tabulky např. do formátu MyISAM "
#~ "pomocí \"mysql_convert_table_format\" nebo \"ALTER TABLE x ENGINE=MyISAM"
#~ "\". Instalace mysql-server-5.1 se nyní přeruší. V případě, že se mezitím "
#~ "odinstaloval původní mysql-server-4.1, jednoduše jej znovu nainstalujte a "
#~ "tabulky převeďte."
#~ msgid ""
#~ "Support MySQL connections from hosts running Debian \"sarge\" or older?"
#~ msgstr ""
#~ "Podporovat MySQL připojení z počítačů používajících Debian Sarge nebo "
#~ "starší?"
#~ msgid ""
#~ "In old versions of MySQL clients on Debian, passwords were not stored "
#~ "securely. This has been improved since then, however clients (such as "
#~ "PHP) from hosts running Debian 3.1 Sarge will not be able to connect to "
#~ "recent accounts or accounts whose password have been changed."
#~ msgstr ""
#~ "Způsob, jakým se dříve ukládala hesla, nebyl příliš bezpečný. To se nyní "
#~ "zlepšilo, ale nevýhodou je, že se klienti z Debianu 3.1 Sarge (např. PHP) "
#~ "nebudou moci připojit na nové účty, nebo na účty, u nichž se heslo "
#~ "změnilo."
#~ msgid ""
#~ "To use mysql you must install an equivalent user and group to the "
#~ "following and ensure yourself that /var/lib/mysql has the right "
#~ "permissions (the uid/gid may be different)."
#~ msgstr ""
#~ "Abyste mohli mysql používat, musíte do následujících souborů přidat "
#~ "ekvivalentního uživatele a skupinu a zajistit, že /var/lib/mysql má "
#~ "správná práva (uid/gid se mohou lišit)."
#~ msgid "Remove the databases used by all MySQL versions?"
#~ msgstr "Odstranit databáze používané všemi verzemi MySQL?"
#~ msgid ""
#~ "If you do not provide a password no changes will be made to the account."
#~ msgstr "Nezadáte-li heslo, žádné změny se s účtem neprovedou."
#~ msgid ""
#~ "When installation finishes, you should verify that the account is "
#~ "properly protected with a password (see README.Debian for more "
#~ "information)."
#~ msgstr ""
#~ "Po skončení instalace byste měli ověřit, že je účet chráněn heslem (více "
#~ "informací naleznete v souboru README.Debian)."
#~ msgid "Update Hints"
#~ msgstr "Poznámky k aktualizaci"
#~ msgid ""
#~ "You have to run \"mysql_upgrade\" after the upgrade, else tables can be "
#~ "corrupted! This script also enhances the privilege tables but is not "
#~ "supposed to give any user more rights that he had before,"
#~ msgstr ""
#~ "Po aktualizaci ještě musíte spustit \"mysql_upgrade\", protože jinak by "
#~ "se tabulky mohly narušit! Tento skript také rozšiřuje tabulky privilegií, "
#~ "ovšem neměl by uživatelům přidat více práv, než měli dosud."
#~ msgid "Please also read http://www.mysql.com/doc/en/Upgrade.html"
#~ msgstr "Také si přečtěte http://www.mysql.com/doc/en/Upgrade.html"
#~ msgid ""
#~ "MySQL will only install if you have a non-numeric hostname that is "
#~ "resolvable via the /etc/hosts file. E.g. if the \"hostname\" command "
#~ "returns \"myhostname\" then there must be a line like \"10.0.0.1 "
#~ "myhostname\"."
#~ msgstr ""
#~ "MySQL se nainstaluje pouze v případě, že používáte nenumerické jméno "
#~ "počítače, které se dá přeložit přes soubor /etc/hosts. Např. když příkaz "
#~ "\"hostname\" vrátí \"diamond\", tak v /etc/hosts musí existovat obdobný "
#~ "řádek jako \"10.0.0.1 diamond\"."
#~ msgid ""
#~ "A new mysql user \"debian-sys-maint\" will be created. This mysql account "
#~ "is used in the start/stop and cron scripts. Don't delete."
#~ msgstr ""
#~ "Bude vytvořen nový mysql uživatel \"debian-sys-maint\". Tento mysql účet "
#~ "se používá ve startovacích, ukončovacích a cronových skriptech. Nemažte "
#~ "jej."
#~ msgid ""
#~ "Please remember to set a PASSWORD for the MySQL root user! If you use a /"
#~ "root/.my.cnf, always write the \"user\" and the \"password\" lines in "
#~ "there, never only the password!"
#~ msgstr ""
#~ "Nezapomeňte nastavit heslo pro účet administrátora MySQL! Používáte-li /"
#~ "root/.my.cnf, vždy zde zadejte jak řádek \"user\", tak řádek \"password"
#~ "\". Nikdy zde nezadávejte jenom heslo!"
#~ msgid ""
#~ "Should I remove the complete /var/lib/mysql directory tree which is used "
#~ "by all MySQL versions, not necessarily only the one you are about to "
#~ "purge?"
#~ msgstr ""
#~ "Mám odstranit kompletní adresářový strom /var/lib/mysql, který se používá "
#~ "pro všechny verze MySQL, tedy ne nutně pouze pro verzi, kterou se "
#~ "chystáte vyčistit?"

185
debian/po/da.po vendored
View File

@ -192,188 +192,3 @@ msgstr ""
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Ønsker du virkelig at fortsætte nedgraderingen?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr ""
#~ "Der er en fil med navnet /var/lib/mysql/debian-*.flag på dette system."
#, fuzzy
#~| msgid ""
#~| "Such file is an indication that a mariadb-server package with a higher "
#~| "version has been installed earlier."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "Sådan en fil tyder på at der tidligere har været installeret en højere "
#~ "version af mariadb-server-pakken."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "Det kan ikke garanteres at den version, du er ved at installere, kan "
#~ "benytte data fra de eksisterende databaser."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Start MariaDB-serveren under systemopstart?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "MariaDB-serveren kan enten startes op automatisk under systemopstarten, "
#~ "eller manuelt med kommandoen '/etc/init.d/mysql start'."
#~ msgid ""
#~ "To use MariaDB, the following entries for users and groups should be "
#~ "added to the system:"
#~ msgstr ""
#~ "Nedenstående linjer for brugere og grupper skal tilføjes dette system for "
#~ "at benytte MariaDB:"
#~ msgid "Cannot upgrade if ISAM tables are present!"
#~ msgstr "Kan ikke opgradere hvis der er ISAM-tabeller!"
#~ msgid ""
#~ "Recent versions of MySQL can no longer use the old ISAM table format and "
#~ "it is necessary to convert your tables to e.g. MyISAM before upgrading by "
#~ "using \"mysql_convert_table_format\" or \"ALTER TABLE x ENGINE=MyISAM\". "
#~ "The installation of mysql-server-5.1 will now abort. In case your old "
#~ "mysql-server-4.1 gets removed nevertheless just reinstall it to convert "
#~ "those tables."
#~ msgstr ""
#~ "Nyere versioner af MySQL kan ikke længere benytte det gamle ISAM-"
#~ "tabelformat, og det er derfor nødvendigt at konvertere dine tabeller til "
#~ "f.eks. MyISAM forud for opgraderingen med \"mysql_convert_table_format\" "
#~ "eller \"ALTER TABLE x ENGINE=MyISAM\". Installationen af mysql-server-5.1 "
#~ "afbrydes nu. Skulle din gamle mysql-server-4.1 alligevel bliver "
#~ "afinstalleret, så geninstallér den blot og konverter tabellerne."
#~ msgid ""
#~ "Support MySQL connections from hosts running Debian \"sarge\" or older?"
#~ msgstr ""
#~ "Understøt MySQL-forbindelser fra maskiner, der kører Debian \"Sarge\" "
#~ "eller ældre?"
#~ msgid ""
#~ "In old versions of MySQL clients on Debian, passwords were not stored "
#~ "securely. This has been improved since then, however clients (such as "
#~ "PHP) from hosts running Debian 3.1 Sarge will not be able to connect to "
#~ "recent accounts or accounts whose password have been changed."
#~ msgstr ""
#~ "Gamle udgaver af MySQL-klienter på Debian gemte ikke adgangskoderne "
#~ "sikkert. Dette er blevet forbedret siden da, men klienter (f.eks. PHP) "
#~ "fra maskiner, der kører Debian 3.1 Sarge vil ikke kunne forbinde til "
#~ "nyere konti eller konti, hvis adgangskode er blevet ændret."
#~ msgid ""
#~ "To use mysql you must install an equivalent user and group to the "
#~ "following and ensure yourself that /var/lib/mysql has the right "
#~ "permissions (the uid/gid may be different)."
#~ msgstr ""
#~ "For at kunne bruge mysql skal du installere en bruger og en gruppe, der "
#~ "svarer til nedenstående, og sikre dig at /var/lib/mysql har de rigtige "
#~ "adgangsrettigheder (uid/gid kan afvige)."
#~ msgid ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgstr ""
#~ "etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgid "/etc/group: mysql:x:101:"
#~ msgstr "/etc/group: mysql:x:101:"
#~ msgid "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgstr "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgid "Remove the databases used by all MySQL versions?"
#~ msgstr "Fjern de databaser, der benyttes af samtlige MySQL-versioner?"
#~ msgid ""
#~ "If you do not provide a password no changes will be made to the account."
#~ msgstr "Hvis du ikke angiver en adgangskode, vil kontoen ikke blive ændret."
#~ msgid ""
#~ "When installation finishes, you should verify that the account is "
#~ "properly protected with a password (see README.Debian for more "
#~ "information)."
#~ msgstr ""
#~ "Når installationen afsluttes, bør du tjekke at kontoen er ordentligt "
#~ "beskyttet med en adgangskode (se README.Debian for yderligere "
#~ "oplysninger)."
#~ msgid "Update Hints"
#~ msgstr "Opdateringstips"
#~ msgid ""
#~ "You have to run \"mysql_upgrade\" after the upgrade, else tables can be "
#~ "corrupted! This script also enhances the privilege tables but is not "
#~ "supposed to give any user more rights that he had before,"
#~ msgstr ""
#~ "Du skal køre \"mysql_upgrade\" efter opgraderingen, da tabellerne eller "
#~ "kan blive ødelagt! Dette script forbedrer også rettighedstabellerne, men "
#~ "burde ikke give nogen bruger flere rettigheder, end han havde tidligere,"
#~ msgid "Please also read http://www.mysql.com/doc/en/Upgrade.html"
#~ msgstr "Læs også http://www.mysql.com/doc/en/Upgrade.html"
#~ msgid "Install Hints"
#~ msgstr "Installationstips"
#~ msgid ""
#~ "On upgrades from MySQL 3.23, as shipped with Debian Woody, symlinks in "
#~ "place of /var/lib/mysql or /var/log/mysql gets accidently removed and "
#~ "have manually be restored."
#~ msgstr ""
#~ "Ved opgraderinger fra MySQL 3.23, der fulgte med Debian Woody, kan de "
#~ "symbolske /var/lib/mysql or /var/log/mysql blive fjernet ved et uheld, og "
#~ "må genskabes manuelt."
#~ msgid ""
#~ "MySQL will only install if you have a non-numeric hostname that is "
#~ "resolvable via the /etc/hosts file. E.g. if the \"hostname\" command "
#~ "returns \"myhostname\" then there must be a line like \"10.0.0.1 "
#~ "myhostname\"."
#~ msgstr ""
#~ "MySQL vil kun blive installeret, hvis du har et ikke-numerisk værtsnavn, "
#~ "som kan slås op i filen /ets/hosts. Hvis f.eks. kommandoen \"hostname\" "
#~ "svarer med \"mitvaertsnavn\", skal du have en linje a'la \"10.0.0.1 "
#~ "mitvaertsnavn\" i /etc/hosts."
#~ msgid ""
#~ "A new mysql user \"debian-sys-maint\" will be created. This mysql account "
#~ "is used in the start/stop and cron scripts. Don't delete."
#~ msgstr ""
#~ "Det vil blive oprettet en ny mysql-bruger, \"debian-sys-maint\". Denne "
#~ "mysql-konto bruges i start/stop-cron-scripterne. Slet den ikke."
#~ msgid ""
#~ "Please remember to set a PASSWORD for the MySQL root user! If you use a /"
#~ "root/.my.cnf, always write the \"user\" and the \"password\" lines in "
#~ "there, never only the password!"
#~ msgstr ""
#~ "Husk at sætte en ADGANGSKODE for MySQLs root-bruger! Hvis du bruger en /"
#~ "etc/.my.cnf, så skriv altid \"user\"- og \"password\"-linjer ind her, "
#~ "ikke kun adgangskoden!"
#~ msgid ""
#~ "Should I remove the complete /var/lib/mysql directory tree which is used "
#~ "by all MySQL versions, not necessarily only the one you are about to "
#~ "purge?"
#~ msgstr ""
#~ "Skal jeg fjerne hele mappetræet /var/lib/mysql, som benyttes af alle "
#~ "MySQL-versioner, ikke kun den version, du er ved at slette?"
#~ msgid ""
#~ "Rarely, e.g. on new major versions, the privilege system is improved. To "
#~ "make use of it mysql_fix_privilege_tables must be executed manually. The "
#~ "script is not supposed to give any user more rights that he had before,"
#~ msgstr ""
#~ "En sjælden gang imellem, f.eks. ved nye hovedversioner, sker det at "
#~ "rettighedssystemet forbedres. For at gøre brug af dette, skal "
#~ "mysql_fix_privilege_tables køres manuelt. Scriptet vil ikke give nogen "
#~ "bruger flere rettigheder, end vedkommende havde tidligere,"

33
debian/po/de.po vendored
View File

@ -193,36 +193,3 @@ msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
"Die beiden von Ihnen eingegebenen Passwörter sind nicht identisch. Bitte " "Die beiden von Ihnen eingegebenen Passwörter sind nicht identisch. Bitte "
"erneut versuchen." "erneut versuchen."
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Möchten Sie wirklich eine ältere Version einspielen?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr ""
#~ "Auf diesem System existiert eine Datei mit dem Namen /var/lib/mysql/"
#~ "debian-*.flag"
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "Diese Datei ist ein Hinweis darauf, dass früher ein MariaDB-Server-Paket "
#~ "mit einer höheren Version installiert war."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "Es kann nicht garantiert werden, dass die gegenwärtig zu installierende "
#~ "Version dessen Daten benutzen kann."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Soll der MariaDB-Server automatisch beim Booten starten?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "Der MariaDB-Dienst kann entweder automatisch beim Systemstart oder "
#~ "manuell durch Eingabe des Befehls »/etc/init.d/mysql start« gestartet "
#~ "werden."

167
debian/po/es.po vendored
View File

@ -220,170 +220,3 @@ msgstr ""
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
#~ msgid "Really proceed with downgrade?"
#~ msgstr "¿Desea realmente continuar con la desactualización?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr ""
#~ "Existe un archivo con el nombre /var/lib/mysql/debian-*.flag en este "
#~ "sistema."
#, fuzzy
#~| msgid ""
#~| "Such file is an indication that a mariadb-server package with a higher "
#~| "version has been installed earlier."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "Este fichero indica que se instaló previamente una versión superior del "
#~ "paquete mariadb-server."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "No se puede garantizar que la versión que está instalando pueda usar la "
#~ "base de datos actual."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "¿Debería ejecutarse el servidor MariaDB al iniciarse el sistema?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "El servidor MariaDB puede iniciarse en el momento de arranque del sistema "
#~ "o manualmente si escribe la orden «/etc/init.d/mysql start»."
#~ msgid ""
#~ "To use MariaDB, the following entries for users and groups should be "
#~ "added to the system:"
#~ msgstr ""
#~ "Deben añadirse las siguientes entradas para usuarios y grupos en el "
#~ "sistema para poder utilizar MariaDB:"
#~ msgid "Cannot upgrade if ISAM tables are present!"
#~ msgstr "¡No se puede actualizar si ya hay tablas ISAM!"
#~ msgid ""
#~ "Recent versions of MySQL can no longer use the old ISAM table format and "
#~ "it is necessary to convert your tables to e.g. MyISAM before upgrading by "
#~ "using \"mysql_convert_table_format\" or \"ALTER TABLE x ENGINE=MyISAM\". "
#~ "The installation of mysql-server-5.1 will now abort. In case your old "
#~ "mysql-server-4.1 gets removed nevertheless just reinstall it to convert "
#~ "those tables."
#~ msgstr ""
#~ "Las versiones recientes de MySQL ya no soportan el antiguo formato de "
#~ "tabla ISAM. Antes de realizar la actualización es necesario convertir sus "
#~ "tablas a por ejemplo, MyISAM, usando «mysql_convert_table_format» o "
#~ "«ALTER TABLE x ENGINE=MyISAM». Se va a interrumpir ahora la instalación "
#~ "de mysql-server-5.1. Si aún así su mysql-server-4.1 se elimina aún así, "
#~ "puede reinstalarlo para convertir ese tipo de tablas."
#~ msgid ""
#~ "Support MySQL connections from hosts running Debian \"sarge\" or older?"
#~ msgstr ""
#~ "¿Soportar las conexiones MySQL establecidadas desde sistemas que ejecutan "
#~ "Debian Sarge o versiones anteriores?"
#~ msgid ""
#~ "In old versions of MySQL clients on Debian, passwords were not stored "
#~ "securely. This has been improved since then, however clients (such as "
#~ "PHP) from hosts running Debian 3.1 Sarge will not be able to connect to "
#~ "recent accounts or accounts whose password have been changed."
#~ msgstr ""
#~ "No era muy segura la forma en la que se almacenaban las contraseñas en "
#~ "versiones anteriores del cliente de MySQL en Debian. Este problema se ha "
#~ "mejorado posteriormente con el inconveniente, sin embargo, de que "
#~ "clientes (por ejemplo, PHP) en sistemas que ejecutan Debian 3.1 «Sarge» "
#~ "no podrán conectarse a cuentas que son nuevas o a las que se le haya "
#~ "cambiado la contraseña."
#~ msgid ""
#~ "To use mysql you must install an equivalent user and group to the "
#~ "following and ensure yourself that /var/lib/mysql has the right "
#~ "permissions (the uid/gid may be different)."
#~ msgstr ""
#~ "Para utilizar mysql debe instalar un usuario y grupo equivalente al "
#~ "siguiente y asegurarse de que /var/lib/mysql tiene los permisos correctos "
#~ "(los valores del «uid» y del «gid» pueden ser diferentes)."
#~ msgid ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgstr ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgid "/etc/group: mysql:x:101:"
#~ msgstr "/etc/group: mysql:x:101:"
#~ msgid "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgstr "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgid "Remove the databases used by all MySQL versions?"
#~ msgstr ""
#~ "¿Eliminar las bases de datos utilizadas por todas las versiones de MySQL?"
#~ msgid ""
#~ "If you do not provide a password no changes will be made to the account."
#~ msgstr ""
#~ "No se hará ningún cambio en la cuenta si no introduce una contraseña."
#~ msgid ""
#~ "When installation finishes, you should verify that the account is "
#~ "properly protected with a password (see README.Debian for more "
#~ "information)."
#~ msgstr ""
#~ "Debería confirmar que la contraseña está correctamente protegida con una "
#~ "contraseña cuando termine la instalación (consulte el fichero README."
#~ "Debian si desea más información)."
#~ msgid "Install Hints"
#~ msgstr "Sugerencias para la instalación"
#~ msgid ""
#~ "On upgrades from MySQL 3.23, as shipped with Debian Woody, symlinks in "
#~ "place of /var/lib/mysql or /var/log/mysql gets accidently removed and "
#~ "have manually be restored."
#~ msgstr ""
#~ "Al actualizar a la versión de MySQL 3.23, la vrsión proporcionada en "
#~ "Debian Woody, se eliminan de manera accidental, los enlaces simbólicos a "
#~ "«/var/lib/mysql» o «/var/log/mysql» y tienen que restaurarse manualmente."
#~ msgid ""
#~ "MySQL will only install if you have a non-numeric hostname that is "
#~ "resolvable via the /etc/hosts file. E.g. if the \"hostname\" command "
#~ "returns \"myhostname\" then there must be a line like \"10.0.0.1 "
#~ "myhostname\"."
#~ msgstr ""
#~ "Sólo se instalará MySQL si tiene un nombre de equipo que no sea una "
#~ "dirección IP y pueda resolverse a través del archivo /etc/hosts. Por "
#~ "ejemplo, si la orden «hostname» devuelve «MiNombreEquipo» entonces deberá "
#~ "existir una línea «10.0.0.1 MiNombreEquipo» en dicho archivo."
#~ msgid ""
#~ "A new mysql user \"debian-sys-maint\" will be created. This mysql account "
#~ "is used in the start/stop and cron scripts. Don't delete."
#~ msgstr ""
#~ "Se creará un nuevo usuario «debian-sys-maint». Esta cuenta de mysql se "
#~ "utilizará en los scripts de inicio y parada y en los scripts «cron». No "
#~ "la elimine."
#~ msgid ""
#~ "Please remember to set a PASSWORD for the MySQL root user! If you use a /"
#~ "root/.my.cnf, always write the \"user\" and the \"password\" lines in "
#~ "there, never only the password!"
#~ msgstr ""
#~ "¡Por favor, recuerde crear una CONTRASEÑA para el usuario «root» de "
#~ "MySQL! ¡Si utiliza /root/.my.cnf debe escribir las líneas «user» y "
#~ "«password» en dicho archivo, no incluya sólo la contraseña!"
#~ msgid ""
#~ "Should I remove the complete /var/lib/mysql directory tree which is used "
#~ "by all MySQL versions, not necessarily only the one you are about to "
#~ "purge?"
#~ msgstr ""
#~ "¿Debería eliminar el árbol de directorio /var/lib/mysql completo? Tenga "
#~ "en cuenta que lo utilizan todas las versiones de MySQL y no sólo la que "
#~ "está a punto de purgar."

41
debian/po/eu.po vendored
View File

@ -183,44 +183,3 @@ msgstr "Pasahitz sarrera errorea"
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "Idatzi dituzun bi pasahitzak ez dira berdina. Mesedez saiatu berriz." msgstr "Idatzi dituzun bi pasahitzak ez dira berdina. Mesedez saiatu berriz."
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Benetan bertsio zaharragora itzuli nahi duzu?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr "Sisteman badago /var/lib/mysql/debian-*.flag izeneko fitxategi bat."
#, fuzzy
#~| msgid ""
#~| "Such file is an indication that a mariadb-server package with a higher "
#~| "version has been installed earlier."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "Fitxategi honek aurretik bertsio berriagoko mysql-zerbitzari pakete bat "
#~ "instalatu dela adierazten du."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "Ezin da ziurtatu instalatzen ari zaren bertsio honek dauden datubaseak "
#~ "erabili ahal izango dituenik."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Abioan MariaDB zerbitzaria abiarazi?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "Sistema abioan MariaDB automatikoki abiarazi daiteke edo eskuz '/etc/init."
#~ "d/mysql start' eginaz."
#~ msgid ""
#~ "To use MariaDB, the following entries for users and groups should be "
#~ "added to the system:"
#~ msgstr ""
#~ "MariaDB erabili ahal izateko, hurrengo erabiltzaile eta taldeak gehitu "
#~ "behar dira sisteman:"

54
debian/po/fr.po vendored
View File

@ -185,57 +185,3 @@ msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
"Le mot de passe et sa confirmation ne sont pas identiques. Veuillez " "Le mot de passe et sa confirmation ne sont pas identiques. Veuillez "
"recommencer." "recommencer."
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Faut-il vraiment revenir à la version précédente ?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr "Un fichier /var/lib/mysql/debian-*.flag est présent sur ce système."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "Cela indique qu'une version plus récente du paquet mariadb-server a été "
#~ "précédemment installée."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "Il n'est pas garanti que cette version puisse en utiliser les données."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Faut-il lancer MariaDB au démarrage ?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "MariaDB peut être lancé soit au démarrage, soit en entrant la commande « /"
#~ "etc/init.d/mysql start »."
#~ msgid ""
#~ "To use MySQL, the following entries for users and groups should be added "
#~ "to the system:"
#~ msgstr ""
#~ "Pour pouvoir utiliser MySQL, les utilisateurs et les groupes suivants "
#~ "doivent être ajoutés au système :"
#~ msgid ""
#~ "Support MySQL connections from hosts running Debian \"sarge\" or older?"
#~ msgstr ""
#~ "Gérer les connexions d'hôtes qui utilisent les versions Debian « sarge » "
#~ "ou antérieures  ?"
#~ msgid ""
#~ "In old versions of MySQL clients on Debian, passwords were not stored "
#~ "securely. This has been improved since then, however clients (such as "
#~ "PHP) from hosts running Debian 3.1 Sarge will not be able to connect to "
#~ "recent accounts or accounts whose password have been changed."
#~ msgstr ""
#~ "La méthode de stockage des mots de passe n'était pas très sûre dans les "
#~ "version précédentes de ce paquet. Cette méthode a été améliorée mais les "
#~ "modifications empêchent la connexion avec de nouveaux comptes ou des "
#~ "comptes dont le mot de passe a été modifié, pour les clients (p. ex. PHP) "
#~ "depuis des hôtes qui utilisent Debian 3.1 « sarge »."

59
debian/po/gl.po vendored
View File

@ -185,62 +185,3 @@ msgstr ""
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
#~ msgid "Really proceed with downgrade?"
#~ msgstr "¿Quere pasar a unha versión anterior?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr "Neste sistema hai un ficheiro chamado /var/lib/mysql/debian-*.flag."
#, fuzzy
#~| msgid ""
#~| "Such file is an indication that a mariadb-server package with a higher "
#~| "version has been installed earlier."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "Este ficheiro indica que antes se instalou un paquete mariadb-server "
#~ "cunha versión superior."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "Non se pode garantir que a versión que está a instalar poida empregar as "
#~ "bases de datos actuais."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "¿Iniciar o servidor MariaDB co ordenador?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "Pódese iniciar automaticamente o servidor MariaDB ao iniciar o ordenador, "
#~ "ou manualmente coa orde \"/etc/init.d/mysql start\"."
#~ msgid ""
#~ "To use MariaDB, the following entries for users and groups should be "
#~ "added to the system:"
#~ msgstr ""
#~ "Para empregar MariaDB deberían engadirse ao sistema as seguintes entradas "
#~ "de usuarios e grupos:"
#~ msgid ""
#~ "Support MySQL connections from hosts running Debian \"sarge\" or older?"
#~ msgstr ""
#~ "¿Soportar as conexións a MySQL de máquinas que empreguen Debian \"sarge\" "
#~ "ou anterior?"
#~ msgid ""
#~ "In old versions of MySQL clients on Debian, passwords were not stored "
#~ "securely. This has been improved since then, however clients (such as "
#~ "PHP) from hosts running Debian 3.1 Sarge will not be able to connect to "
#~ "recent accounts or accounts whose password have been changed."
#~ msgstr ""
#~ "Nas versións antigas dos clientes MySQL de Debian, os contrasinais non se "
#~ "armacenaban de xeito seguro. Isto mellorouse desde aquela; nembargantes, "
#~ "os clientes (tales coma PHP) das máquinas que executen Debian 3.1 Sarge "
#~ "non se han poder conectar a contas recentes ou a contas nas que se "
#~ "cambiara o contrasinal."

31
debian/po/it.po vendored
View File

@ -179,34 +179,3 @@ msgstr "Errore di inserimento della password"
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "Le due password inserite sono diverse. Riprovare." msgstr "Le due password inserite sono diverse. Riprovare."
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Procedere realmente con l'abbassamento di versione?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr ""
#~ "Su questo sistema esiste un file con nome /var/lib/mysql/debian-*.flag."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "Quel file indica che in precedenza è stata installata una versione "
#~ "superiore del pacchetto mariadb-server."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "Non è garantito che la versione che si sta installando sia in grado di "
#~ "usare i database presenti."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Lanciare il server MariaDB all'avvio?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "Il server MariaDB può essere lanciato automaticamente all'avvio del "
#~ "sistema oppure manualmente con il comando «/etc/init.d/mysql start»."

32
debian/po/ja.po vendored
View File

@ -184,35 +184,3 @@ msgstr "パスワード入力エラー"
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "入力された二つのパスワードが一致しません。再入力してください。" msgstr "入力された二つのパスワードが一致しません。再入力してください。"
#~ msgid "Really proceed with downgrade?"
#~ msgstr "本当にダウングレードを実行しますか?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr ""
#~ "このシステムには /var/lib/mysql/debian-*.flag という名前のファイルが存在"
#~ "しています。"
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "このファイルが意味するのは、以前により新しいバージョンの mariadb-server "
#~ "パッケージがインストールされていたことを示します。"
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "このデータベースを現在インストールしようとしているバージョンで使えるかどう"
#~ "かは保証できません。"
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "MariaDB をシステム起動時に開始しますか?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "MariaDB の起動方法について、システム起動時に自動的に開始するか、あるいは "
#~ "'/etc/init.d/mysql start' と手で入力して起動するかを選べます。"

96
debian/po/nb.po vendored
View File

@ -190,99 +190,3 @@ msgstr ""
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
#, fuzzy
#~| msgid "Do you really want to downgrade?"
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Er du sikker på at du vil nedgradere?"
#, fuzzy
#~| msgid ""
#~| "WARNING: The file /var/lib/mysql/debian-*.flag exists. This indicates "
#~| "that a mysql-server package with a higher version has been installed "
#~| "before. It can not be guaranteed that this version can use its data."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "ADVARSEL: Fila /var/lib/mysql/debian-*.flag finnes. Dette viser at en "
#~ "mariadb-server-pakke med et høyere versjonsnummer har vært installert "
#~ "før. Det kan ikke garanteres at denne versjonen kan bruke data fra den "
#~ "høyere versjonen."
#, fuzzy
#~| msgid "Should MySQL start on boot?"
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Skal MariaDB startes ved maskinoppstart?"
#, fuzzy
#~| msgid ""
#~| "The MySQL can start automatically on boot time or only if you manually "
#~| "type '/etc/init.d/mysql start'."
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "MariaDB kan startes automatisk når maskinen starter, eller bare hvis du "
#~ "skriver «/etc/init.d/mysql start»."
#~ msgid ""
#~ "Support MySQL connections from hosts running Debian \"sarge\" or older?"
#~ msgstr ""
#~ "Skal MySQL-tilkoblinger støttes fra vertsmaskiner som kjører Debian "
#~ "«sarge» eller eldre?"
#, fuzzy
#~| msgid ""
#~| "The way passwords were stored was not very secure. This has been "
#~| "improved with the drawback that clients (e.g. PHP) from hosts running "
#~| "Debian 3.1 Sarge will not be able to connect to account which are new or "
#~| "whose password have been changed. See /usr/share/doc/mysql-server-5.1/"
#~| "README.Debian."
#~ msgid ""
#~ "In old versions of MySQL clients on Debian, passwords were not stored "
#~ "securely. This has been improved since then, however clients (such as "
#~ "PHP) from hosts running Debian 3.1 Sarge will not be able to connect to "
#~ "recent accounts or accounts whose password have been changed."
#~ msgstr ""
#~ "Passord ble tidligere lagret på en lite sikker måte. Dette er nå "
#~ "forbedret, med den ulempen at klienter (f.eks. PHP) fra verter som kjører "
#~ "Debian 3.1 Sarge ikke vil kunne koble til en konto som er ny eller har "
#~ "fått endret passordet. Se /usr/share/doc/mysql-server-5.1/README.Debian."
#~ msgid ""
#~ "To use mysql you must install an equivalent user and group to the "
#~ "following and ensure yourself that /var/lib/mysql has the right "
#~ "permissions (the uid/gid may be different)."
#~ msgstr ""
#~ "For å bruke MySQL må du installere en bruker og gruppe tilsvarende den "
#~ "nedenfor og se til at /var/lib/mysql har riktige rettigheter (uid/gid kan "
#~ "være forskjellig)."
#~ msgid ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgstr ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgid "/etc/group: mysql:x:101:"
#~ msgstr "/etc/group: mysql:x:101:"
#~ msgid "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgstr "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgid "Remove the databases used by all MySQL versions?"
#~ msgstr "Skal databasene brukt av alle MySQL-versjoner fjernes?"
#~ msgid ""
#~ "If you do not provide a password no changes will be made to the account."
#~ msgstr ""
#~ "Hvis du ikke oppgir et passord blir det ikke gjort noen endringer med "
#~ "kontoen."
#~ msgid ""
#~ "When installation finishes, you should verify that the account is "
#~ "properly protected with a password (see README.Debian for more "
#~ "information)."
#~ msgstr ""
#~ "Når installasjonen er ferdig bør det sjekkes at kontoen er ordentlig "
#~ "beskyttet med et passord (mer informasjon finnes i README.Debian)."

99
debian/po/nl.po vendored
View File

@ -190,102 +190,3 @@ msgstr ""
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
#, fuzzy
#~| msgid "Do you really want to downgrade?"
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Wilt u echt een oude versie herstellen?"
#, fuzzy
#~| msgid ""
#~| "WARNING: The file /var/lib/mysql/debian-*.flag exists. This indicates "
#~| "that a mysql-server package with a higher version has been installed "
#~| "before. It can not be guaranteed that this version can use its data."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "Waarschuwing: waarschijnlijk is een hogere versie van het mariadb-server "
#~ "pakket geïnstalleerd geweest (het bestand /var/lib/mysql/debian-*.flag "
#~ "bestaat). Er is geen garantie dat de gegevensbestanden, bewerkt met die "
#~ "hogere versie, kunnen worden gebruikt met de versie van mysql die u nu "
#~ "installeert."
#, fuzzy
#~| msgid "Should MySQL start on boot?"
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Moet MariaDB starten als de computer start?"
#, fuzzy
#~| msgid ""
#~| "The MySQL can start automatically on boot time or only if you manually "
#~| "type '/etc/init.d/mysql start'."
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "MariaDB kan automatisch starten bij het starten van de computer, of "
#~ "slechts wanneer u '/etc/init.d/mysql start' handmatig uitvoert."
#~ msgid ""
#~ "Support MySQL connections from hosts running Debian \"sarge\" or older?"
#~ msgstr ""
#~ "Moet u MySQL-verbindingen accepteren van computers die Debian \"sarge\" "
#~ "of ouder draaien?"
#, fuzzy
#~| msgid ""
#~| "The way passwords were stored was not very secure. This has been "
#~| "improved with the drawback that clients (e.g. PHP) from hosts running "
#~| "Debian 3.1 Sarge will not be able to connect to account which are new or "
#~| "whose password have been changed. See /usr/share/doc/mysql-server-5.1/"
#~| "README.Debian."
#~ msgid ""
#~ "In old versions of MySQL clients on Debian, passwords were not stored "
#~ "securely. This has been improved since then, however clients (such as "
#~ "PHP) from hosts running Debian 3.1 Sarge will not be able to connect to "
#~ "recent accounts or accounts whose password have been changed."
#~ msgstr ""
#~ "De wijze waarop wachtwoorden werden bewaard was niet erg veilig. Dit is "
#~ "verbeterd, maar helaas zullen programma's van computers die Debian 3.1 "
#~ "Sarge draaien, geen verbinding meer kunnen maken met accounts die nieuw "
#~ "zijn, of waarvan het wachtwoord is gewijzigd. Zie /usr/share/doc/mysql-"
#~ "server-5.1/README.Debian."
#~ msgid ""
#~ "To use mysql you must install an equivalent user and group to the "
#~ "following and ensure yourself that /var/lib/mysql has the right "
#~ "permissions (the uid/gid may be different)."
#~ msgstr ""
#~ "Om mysql te gebruiken dient u een gebruiker en groep aan te maken, "
#~ "gelijkwaardig aan onderstaand voorbeeld, en u dient ervoor te zorgen dat /"
#~ "var/lib/mysql de bijbehorende toegangsrechten heeft (uid en gid mogen "
#~ "anders zijn)."
#~ msgid ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgstr ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgid "/etc/group: mysql:x:101:"
#~ msgstr "/etc/group: mysql:x:101:"
#~ msgid "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgstr "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgid "Remove the databases used by all MySQL versions?"
#~ msgstr "Databases verwijderen die door alle MySQL versies worden gebruikt?"
#~ msgid ""
#~ "If you do not provide a password no changes will be made to the account."
#~ msgstr ""
#~ "Indien u geen wachtwoord opgeeft zal het account niet worden gewijzigd."
#~ msgid ""
#~ "When installation finishes, you should verify that the account is "
#~ "properly protected with a password (see README.Debian for more "
#~ "information)."
#~ msgstr ""
#~ "Wanneer de installatie klaar is, dient u te verifiëren dat het account "
#~ "netjes beschermd is met een wachtwoord (zie README.Debian voor meer "
#~ "informatie)."

114
debian/po/pt.po vendored
View File

@ -190,117 +190,3 @@ msgstr ""
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Deseja mesmo fazer downgrade?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr ""
#~ "Existe um ficheiro chamado /var/lib/mysql/debian-*.flag neste sistema."
#, fuzzy
#~| msgid ""
#~| "Such file is an indication that a mariadb-server package with a higher "
#~| "version has been installed earlier."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "Tal ficheiro significa que anteriormente foi instalado um pacote mariadb-"
#~ "server com um número de versão superior."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "Não existe nenhuma garantia que a versão que está actualmente a instalar "
#~ "seja capaz de utilizar as bases de dados actuais."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Iniciar o servidor MariaDB no arranque?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "O MariaDB pode ser automaticamente lançado no arranque ou manualmente "
#~ "através do comando '/etc/init.d/mysql start'."
#~ msgid ""
#~ "To use MariaDB, the following entries for users and groups should be "
#~ "added to the system:"
#~ msgstr ""
#~ "Para utilizar o MariaDB, têm de ser acrescentadas as seguintes entradas "
#~ "para os utilizadores e grupos:"
#~ msgid "Cannot upgrade if ISAM tables are present!"
#~ msgstr "Não é possível actualizar se estiverem presentes tabelas ISAM!"
#~ msgid ""
#~ "Recent versions of MySQL can no longer use the old ISAM table format and "
#~ "it is necessary to convert your tables to e.g. MyISAM before upgrading by "
#~ "using \"mysql_convert_table_format\" or \"ALTER TABLE x ENGINE=MyISAM\". "
#~ "The installation of mysql-server-5.1 will now abort. In case your old "
#~ "mysql-server-4.1 gets removed nevertheless just reinstall it to convert "
#~ "those tables."
#~ msgstr ""
#~ "As versões recentes de MySQL já não podem utilizar o antigo formato de "
#~ "tabelas ISAM e é por isso necessário converter as suas tabelas pra e.g. "
#~ "MyISAM antes da actualização, utilizando \"mysql_convert_table_format\" "
#~ "ou \"ALTER TABLE x ENGINE=MyISAM\". A instalação de mysql-server-5.1 irá "
#~ "agora ser cancelada. Se o seu antigo mysql-server-4.1 for removido apenas "
#~ "reinstale para converter essas tabelas."
#~ msgid ""
#~ "Support MySQL connections from hosts running Debian \"sarge\" or older?"
#~ msgstr ""
#~ "Suportar ligações MySQL de máquinas que corram Debian \"sarge\" ou mais "
#~ "antigos?"
#~ msgid ""
#~ "In old versions of MySQL clients on Debian, passwords were not stored "
#~ "securely. This has been improved since then, however clients (such as "
#~ "PHP) from hosts running Debian 3.1 Sarge will not be able to connect to "
#~ "recent accounts or accounts whose password have been changed."
#~ msgstr ""
#~ "Nas versões antigas de clientes de MySQL em Debian, as palavras-passe não "
#~ "eram guardadas de forma segura. Isto foi melhorado desde aí, no entanto "
#~ "os clientes (como o PHP) de máquinas que corram Debian 3.1 Sarge não irão "
#~ "conseguir ligar-se a contas novas ou cuja palavra-passe foi alterada."
#~ msgid ""
#~ "To use mysql you must install an equivalent user and group to the "
#~ "following and ensure yourself that /var/lib/mysql has the right "
#~ "permissions (the uid/gid may be different)."
#~ msgstr ""
#~ "Para utilizar mysql e instalar um utilizador e grupo equivalentes para o "
#~ "seguinte e assegurar-se que /var/lib/mysql têm as permissões correctas (o "
#~ "uid/gid podem ser diferentes)."
#~ msgid ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgstr ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgid "/etc/group: mysql:x:101:"
#~ msgstr "/etc/group: mysql:x:101:"
#~ msgid "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgstr "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgid "Remove the databases used by all MySQL versions?"
#~ msgstr "Remover as bases de dados utilizadas por todas as versões de MySQL?"
#~ msgid ""
#~ "If you do not provide a password no changes will be made to the account."
#~ msgstr ""
#~ "Se não disponibilizar uma password não serão feitas alterações nesta "
#~ "conta."
#~ msgid ""
#~ "When installation finishes, you should verify that the account is "
#~ "properly protected with a password (see README.Debian for more "
#~ "information)."
#~ msgstr ""
#~ "Quando terminar a instalação, deve verificar se a conta está devidamente "
#~ "protegida com uma password (para mais informações veja README.Debian)."

251
debian/po/pt_BR.po vendored
View File

@ -189,254 +189,3 @@ msgstr ""
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Realmente proceder com o rebaixamento de versão?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr "Um arquivo de nome /var/lib/mysql/debian-*.flag existe no sistema."
#, fuzzy
#~| msgid ""
#~| "Such file is an indication that a mariadb-server package with a higher "
#~| "version has been installed earlier."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "A presença de um arquivo como este é uma indicação de que um pacote "
#~ "mariadb-server com um número de versão mais alto já foi instalado "
#~ "anteriormente."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "Não há garantias de que a versão que você está instalando no momento "
#~ "conseguirá utilizar as bases de dados existentes."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Iniciar o servidor MariaDB junto a inicialização da máquina?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "O servidor MariaDB pode ser iniciado automaticamente junto a "
#~ "inicialização da máquina ou manualmente com o comando '/etc/init.d/mysql "
#~ "start'."
#~ msgid ""
#~ "To use MariaDB, the following entries for users and groups should be "
#~ "added to the system:"
#~ msgstr ""
#~ "Para utilizar o MariaDB, as seguintes entradas para usuários e grupos "
#~ "devem ser adicionadas ao sistema:"
#~ msgid ""
#~ "Support MySQL connections from hosts running Debian \"sarge\" or older?"
#~ msgstr ""
#~ "Suportar conexões MySQL originadas de hosts executando o Debian \"sarge\" "
#~ "ou mais antigos ?"
#~ msgid ""
#~ "In old versions of MySQL clients on Debian, passwords were not stored "
#~ "securely. This has been improved since then, however clients (such as "
#~ "PHP) from hosts running Debian 3.1 Sarge will not be able to connect to "
#~ "recent accounts or accounts whose password have been changed."
#~ msgstr ""
#~ "Em versões antigas dos clientes MySQL no Debian, as senhas não eram "
#~ "armazenadas de forma segura. Isto foi corrigido desde então, porém, "
#~ "clientes (como o PHP) em hosts executando o Debian 3.1 Sarge não serão "
#~ "capazes de conectar em contas recentes ou contas as quais as senhas "
#~ "tenham sido modificadas."
#~ msgid ""
#~ "To use mysql you must install an equivalent user and group to the "
#~ "following and ensure yourself that /var/lib/mysql has the right "
#~ "permissions (the uid/gid may be different)."
#~ msgstr ""
#~ "Para utilizar o MySQL, você deve instalar um usuário e um grupo "
#~ "equivalentes ao usuário e grupo a seguir para se certificar de que o "
#~ "diretório /var/lib/mysql possua as permissões correctas (o uid/gid podem "
#~ "ser diferentes)."
#~ msgid ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgstr ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgid "/etc/group: mysql:x:101:"
#~ msgstr "/etc/group: mysql:x:101:"
#~ msgid "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgstr "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgid "Remove the databases used by all MySQL versions?"
#~ msgstr "Remover as bases de dados utilizadas por todas as versões do MySQL?"
#~ msgid ""
#~ "If you do not provide a password no changes will be made to the account."
#~ msgstr ""
#~ "Caso você não forneça uma senha, nenhuma mudança será feita na conta."
#~ msgid ""
#~ "When installation finishes, you should verify that the account is "
#~ "properly protected with a password (see README.Debian for more "
#~ "information)."
#~ msgstr ""
#~ "Quando a instalação finalizar, você deverá verificar se a conta está "
#~ "apropriadamente protegida com uma senha (consulte o arquivo README.Debian "
#~ "para maiores informações)."
#~ msgid "internal"
#~ msgstr "interno"
#~ msgid "Only internally used."
#~ msgstr "Somente utilizado internamente."
#, fuzzy
#~ msgid "Update Hints"
#~ msgstr "Dicas de atualização"
#, fuzzy
#~ msgid ""
#~ "Rarely, e.g. on new major versions, the privilege system is improved. To "
#~ "make use of it mysql_fix_privilege_tables must be executed manually. The "
#~ "script is not supposed to give any user more rights that he had before,"
#~ msgstr ""
#~ "Raramente, por exemplo, em novas versões maiores, o sistema de "
#~ "privilégios é melhorado. Para fazer uso disso, o script "
#~ "mysql_fix_privilege_tables deve ser executado manualmente. O script não "
#~ "atribuirá a nenhum usuário mais direitos do que os mesmos já possuíam "
#~ "anteriormente."
#~ msgid "Please also read http://www.mysql.com/doc/en/Upgrade.html"
#~ msgstr "Por favor, leia http://www.mysql.com/doc/en/Upgrade.html"
#, fuzzy
#~ msgid "Install Hints"
#~ msgstr "Dicas de instalação"
#, fuzzy
#~ msgid ""
#~ "MySQL will only install if you have a non-numeric hostname that is "
#~ "resolvable via the /etc/hosts file. E.g. if the \"hostname\" command "
#~ "returns \"myhostname\" then there must be a line like \"10.0.0.1 "
#~ "myhostname\"."
#~ msgstr ""
#~ "O MySQL será instalado somente caso você possua um nome de host NÃO "
#~ "NUMÉRICO que possa ser resolvido através do arquivo /etc/hosts, ou seja, "
#~ "caso o comando \"hostname\" retorne \"myhostname\", uma linha como "
#~ "\"10.0.0.1 myhostname\" deverá existir no arquivo /etc/hosts."
#~ msgid ""
#~ "A new mysql user \"debian-sys-maint\" will be created. This mysql account "
#~ "is used in the start/stop and cron scripts. Don't delete."
#~ msgstr ""
#~ "Um novo usuário MySQL de nome \"debian-sys-maint\" será criado. Essa "
#~ "conta MySQL é utilizada pelos scripts de inicialização/parada e pelos "
#~ "scripts cron. Não remova esse usuário."
#, fuzzy
#~ msgid ""
#~ "Please remember to set a PASSWORD for the MySQL root user! If you use a /"
#~ "root/.my.cnf, always write the \"user\" and the \"password\" lines in "
#~ "there, never only the password!"
#~ msgstr ""
#~ "Por favor, lembre-se de definir uma SENHA para o usuário root do MySQL ! "
#~ "Caso você utilize um arquivo /root/.my.cnf, sempre inclua as linhas \"user"
#~ "\" e \"password\" nesse arquivo, nunca somente a senha ! Consulte o "
#~ "arquivo /usr/share/doc/mysql-server/README.Debian para mais informações."
#~ msgid ""
#~ "Should I remove all databases below /var/lib/mysql as you are purging the "
#~ "mysql-server package?"
#~ msgstr ""
#~ "Todas as base de dados sob o diretório /var/lib/mysql devem ser removidas "
#~ "quando você remover o pacote pacote mysql-server ?"
#~ msgid ""
#~ "Networking is disabled by default for security reasons. You can enable it "
#~ "by commenting out the skip-networking option in /etc/mysql/my.cnf."
#~ msgstr ""
#~ "O suporte ao funcionamento em rede está desativado por padrão por "
#~ "questões de segurança. Você poderá ativá-lo comentando a opção 'skip-"
#~ "networking' no arquivo /etc/mysql/my.cnf."
#~ msgid "security and update notice"
#~ msgstr "aviso de segurança e actualização"
#~ msgid ""
#~ "Should I remove everything below /var/lib/mysql when you purge the mysql-"
#~ "server package with the \"dpkg --purge mysql-server\" command (i.e. "
#~ "remove everything including the configuration) somewhen? (default is not)"
#~ msgstr ""
#~ "Devo remover tudo abaixo de /var/lib/mysql quando fizer o purge do pacote "
#~ "mysql-server com o comando \"dpkg --purge mysql-server\" (ou seja, "
#~ "remover tudo incluíndo a configuração)? (o padrão é não remover)"
#~ msgid "Make MySQL reachable via network?"
#~ msgstr "Fazer com que o MySQL seja acessível via rede?"
#~ msgid ""
#~ "Should MySQL listen on a network reachable TCP port? This is not "
#~ "necessary for use on a single computer and could be a security problem."
#~ msgstr ""
#~ "O MySQL deve aguardar ligações numa porta TCP acessível via rede? Isto "
#~ "não é necessário para uso num único computador e pode ser um problema de "
#~ "segurança."
#~ msgid "Enable chroot mode?"
#~ msgstr "Activar o modo chroot?"
#~ msgid ""
#~ "MySQL is able to jail itself into the /var/lib/mysql_jail directory so "
#~ "that users cannot modify any files outside this directory. This improves "
#~ "resistence against crackers, too, as they are not able to modify system "
#~ "files."
#~ msgstr ""
#~ "O MySQL é capaz de se prender no diretório /var/lib/mysql_jail, assim os "
#~ "utilizadores não poderão modificar ficheiros fora deste directório. Isto "
#~ "aumenta também a resistência contra crackers, pois eles não poderão "
#~ "modificar arquivos de sistema."
#~ msgid "Please run mysql_fix_privilege_tables !"
#~ msgstr "Por favor execute mysql_fix_privilege_tables !"
#~ msgid ""
#~ "I will ensure secure permissions of /var/lib/mysql by replacing GIDs "
#~ "other than root and mysql with mysql."
#~ msgstr ""
#~ "Permissões seguras para o diretório /var/lib/mysql serão asseguradas "
#~ "substituíndo GIDs diferentes de root e mysql por mysql."
#~ msgid ""
#~ "Instructions how to enable SSL support are in /usr/share/doc/mysql-server/"
#~ msgstr ""
#~ "Instruções sobre como activar o suporte de SSL estão disponíveis no "
#~ "directório /usr/share/doc/mysql-server/."
#, fuzzy
#~ msgid "mysql_fix_privileges_tables should be executed"
#~ msgstr "mysql_fix_privileges_tables será executado"
#, fuzzy
#~ msgid ""
#~ "The latest MySQL versions have an enhanced, more fine grained, privilege "
#~ "system. To make use of it, some new fields must be added to the tables "
#~ "in the \"mysql\" database. This will not happen automatically."
#~ msgstr ""
#~ "As últimas versões do MySQL possuem um sistema de privilégios melhorado e "
#~ "mais refinado. Para utilizá-lo, alguns novos campos devem ser adicionados "
#~ "as tabelas na base de dados \"mysql\". Isto é feito pelo script "
#~ "mysql_fix_privileges_tables durante esta actualização independente do "
#~ "servidor estar a correr ou não !"
#~ msgid ""
#~ "This script is not supposed to give any user more rights that he had "
#~ "before, if you encounter such a case, please contact me."
#~ msgstr ""
#~ "Este script não deverá fornecer mais direitos a um utilizador além dos "
#~ "quais ele já possua anteriormente. SE encontrar um caso desses, por favor "
#~ "entre em contacto com o mantainer deste pacote Debian."

117
debian/po/ro.po vendored
View File

@ -190,120 +190,3 @@ msgstr ""
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
#, fuzzy
#~| msgid "Do you really want to downgrade?"
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Sunteţi sigur că doriţi să instalaţi o versiune mai veche?"
#, fuzzy
#~| msgid ""
#~| "WARNING: The file /var/lib/mysql/debian-*.flag exists. This indicates "
#~| "that a mysql-server package with a higher version has been installed "
#~| "before. It can not be guaranteed that this version can use its data."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "AVERTISMENT: Fişierul /var/lib/mysql/debian-*.flag există. Acest lucru "
#~ "indică faptul că anterior a fost instalată o versiune nouă a pachetului "
#~ "mariadb-server. Nu se poate garanta că versiunea instalată acum poate "
#~ "folosi datele versiunii instalate anterior."
#, fuzzy
#~| msgid "Should MySQL start on boot?"
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Doriţi ca MariaDB să pornească la initializarea sistemului?"
#, fuzzy
#~| msgid ""
#~| "The MySQL can start automatically on boot time or only if you manually "
#~| "type '/etc/init.d/mysql start'."
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "MariaDB poate porni automat la iniţializarea sistemului sau doar dacă "
#~ "rulaţi comanda „/etc/init.d/mysql start”."
#~ msgid "Cannot upgrade if ISAM tables are present!"
#~ msgstr "Nu se poate face actualizarea dacă sunt prezente tabele ISAM!"
#~ msgid ""
#~ "Recent versions of MySQL can no longer use the old ISAM table format and "
#~ "it is necessary to convert your tables to e.g. MyISAM before upgrading by "
#~ "using \"mysql_convert_table_format\" or \"ALTER TABLE x ENGINE=MyISAM\". "
#~ "The installation of mysql-server-5.1 will now abort. In case your old "
#~ "mysql-server-4.1 gets removed nevertheless just reinstall it to convert "
#~ "those tables."
#~ msgstr ""
#~ "Versiunile recente MySQL nu mai pot folosi vechiul format de tabele ISAM "
#~ "şieste necesar să convertiţi tabelele dumneavoastră de ex. la formatul "
#~ "MyISAM înainte de a face actualizarea folosind comanda "
#~ "„mysql_convert_table_format” sau „ALTER TABLE x ENGINE=MyISAM”. "
#~ "Instalarea mysql-server-5.1 va eşua. În caz că ştergeţiversiunea "
#~ "anterioară mysql-server-4.1 va trebui reinstalată pentru a converti "
#~ "tabelele."
#~ msgid ""
#~ "Support MySQL connections from hosts running Debian \"sarge\" or older?"
#~ msgstr ""
#~ "Suportaţi conexiuni MySQL de la staţii ce rulează sistemul Debian „sarge” "
#~ "sau mai vechi?"
#, fuzzy
#~| msgid ""
#~| "The way passwords were stored was not very secure. This has been "
#~| "improved with the drawback that clients (e.g. PHP) from hosts running "
#~| "Debian 3.1 Sarge will not be able to connect to account which are new or "
#~| "whose password have been changed. See /usr/share/doc/mysql-server-5.1/"
#~| "README.Debian."
#~ msgid ""
#~ "In old versions of MySQL clients on Debian, passwords were not stored "
#~ "securely. This has been improved since then, however clients (such as "
#~ "PHP) from hosts running Debian 3.1 Sarge will not be able to connect to "
#~ "recent accounts or accounts whose password have been changed."
#~ msgstr ""
#~ "Modul în care erau păstrate parolele nu era foarte sigur. Acest lucru a "
#~ "fost îmbunătăţitcu dezajantajul că clienţii (de ex. PHP) de pe staţii ce "
#~ "rulează sistemul Debian 3.1 Sargenu se vor putea conecta la conturi noi "
#~ "sau ale căror parole au fost schimbate. Citiţi /usr/share/doc/mysql-"
#~ "server-5.1/README.Debian."
#~ msgid ""
#~ "To use mysql you must install an equivalent user and group to the "
#~ "following and ensure yourself that /var/lib/mysql has the right "
#~ "permissions (the uid/gid may be different)."
#~ msgstr ""
#~ "Pentru a folosi mysql trebuie să adăugaţi un utilizator şi grup "
#~ "echivalent şi să vă asiguraţi că /var/lib/mysql are permisiunile "
#~ "stabilite corect (uid/gid pot aveavalori diferite)."
#~ msgid ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgstr ""
#~ "/etc/passwd:\tmysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgid "/etc/group: mysql:x:101:"
#~ msgstr "/etc/group:\tmysql:x:101:"
#~ msgid "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgstr "/var/lib/mysql:\tdrwxr-xr-x\tmysql\tmysql"
#~ msgid "Remove the databases used by all MySQL versions?"
#~ msgstr "Doriţi să ştergeţi bazele de date folosite de toate versiune MySQL?"
#~ msgid ""
#~ "If you do not provide a password no changes will be made to the account."
#~ msgstr ""
#~ "Dacă nu introduceţi nici o parolă, nici o schimbare nu va fi luată în "
#~ "considerare."
#~ msgid ""
#~ "When installation finishes, you should verify that the account is "
#~ "properly protected with a password (see README.Debian for more "
#~ "information)."
#~ msgstr ""
#~ "După finalizarea instalării, ar trebui să verificaţi dacă contul este "
#~ "protejat cu o parolă (citiţi fişierul README.Debian pentru informaţii "
#~ "suplimentare)."

30
debian/po/ru.po vendored
View File

@ -187,33 +187,3 @@ msgstr "Ошибка ввода пароля"
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "Два введённых пароля не одинаковы. Повторите ввод." msgstr "Два введённых пароля не одинаковы. Повторите ввод."
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Действительно установить более старую версию?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr "В системе найден файл /var/lib/mysql/debian-*.flag."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "Это означает, что ранее уже был установлен пакет mariadb-server более "
#~ "новой версии."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "Нет гарантий, что версия, которая устанавливается сейчас, будет способна "
#~ "работать с имеющимися базами данных."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Запускать MariaDB при загрузке системы?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "Сервер MariaDB можно запускать автоматически при загрузке системы или "
#~ "вручную по команде '/etc/init.d/mysql start'."

37
debian/po/sv.po vendored
View File

@ -181,40 +181,3 @@ msgstr "Fel vid inmatning av lösenord"
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "De två lösenorden du angav stämde inte överrens. Prova igen." msgstr "De två lösenorden du angav stämde inte överrens. Prova igen."
#~ msgid "Really proceed with downgrade?"
#~ msgstr "Vill du verkligen genomföra nedgraderingen?"
#~ msgid "A file named /var/lib/mysql/debian-*.flag exists on this system."
#~ msgstr "En fil med namnet /var/lib/mysql/debian-*.flag hittades i systemet."
#~ msgid ""
#~ "Such a file is an indication that a mariadb-server package with a higher "
#~ "version has been installed previously."
#~ msgstr ""
#~ "En sådan fil är en indikation på att paketet mariadb-server med ett högre "
#~ "versionsnummer har installerats tidigare."
#~ msgid ""
#~ "There is no guarantee that the version you're currently installing will "
#~ "be able to use the current databases."
#~ msgstr ""
#~ "Det finns ingen garanti för att den version som du håller på att "
#~ "installera kommer att kunna använda de aktuella databaserna."
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "Ska MariaDB startas vid systemets uppstart?"
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "MariaDB-servern kan startas vid systemets uppstart eller manuellt med "
#~ "kommandot \"/etc/init.d/mysql start\"."
#~ msgid ""
#~ "To use MySQL, the following entries for users and groups should be added "
#~ "to the system:"
#~ msgstr ""
#~ "För att använda MySQL måste följande användare och grupper läggas till i "
#~ "systemet:"

162
debian/po/tr.po vendored
View File

@ -159,165 +159,3 @@ msgstr ""
#: ../mariadb-server-10.5.templates:8001 #: ../mariadb-server-10.5.templates:8001
msgid "The two passwords you entered were not the same. Please try again." msgid "The two passwords you entered were not the same. Please try again."
msgstr "" msgstr ""
#, fuzzy
#~| msgid "Should MySQL start on boot?"
#~ msgid "Start the MariaDB server on boot?"
#~ msgstr "MariaDB açılış sırasında başlatılsın mı?"
#, fuzzy
#~ msgid ""
#~ "The MariaDB server can be launched automatically at boot time or manually "
#~ "with the '/etc/init.d/mysql start' command."
#~ msgstr ""
#~ "MariaDB açılış sırasında veya '/etc/init.d/mysql start' komutunu vermeniz "
#~ "halinde elle başlatılabilir. Eğer açılışta otomatik olarak başlatılmasını "
#~ "istiyorsanız burada 'evet'i seçin."
#~ msgid ""
#~ "To use mysql you must install an equivalent user and group to the "
#~ "following and ensure yourself that /var/lib/mysql has the right "
#~ "permissions (the uid/gid may be different)."
#~ msgstr ""
#~ "Mysql'i kullanmak için aşağıdakiyle eşdeğer bir kullanıcı ve grup "
#~ "tanımlamalı, ve /var/lib/mysql izinlerinin uygun şekilde ayarlandığından "
#~ "emin olmalısınız (uid/gid farklı olabilir)."
#~ msgid ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgstr ""
#~ "/etc/passwd: mysql:x:100:101:MySQL Server:/var/lib/mysql:/bin/false"
#~ msgid "/etc/group: mysql:x:101:"
#~ msgstr "/etc/group: mysql:x:101:"
#~ msgid "/var/lib/mysql: drwxr-xr-x mysql mysql"
#~ msgstr "/var/lib/mysql: drwxr-xr-x mysql mysql"
#, fuzzy
#~ msgid "Please also read http://www.mysql.com/doc/en/Upgrade.html"
#~ msgstr "Lütfen http://www.mysql.com/doc/en/Upgrade.html belgesini okuyun"
#, fuzzy
#~ msgid ""
#~ "MySQL will only install if you have a non-numeric hostname that is "
#~ "resolvable via the /etc/hosts file. E.g. if the \"hostname\" command "
#~ "returns \"myhostname\" then there must be a line like \"10.0.0.1 "
#~ "myhostname\"."
#~ msgstr ""
#~ "MySQL sadece /etc/hosts dosyası yoluyla çözülebilir NUMERİK OLMAYAN bir "
#~ "makine adına sahipseniz kurulacaktır. Örneğin, eğer \"hostname\" komutu "
#~ "\"makinem\" ismini döndürüyorsa, bu dosya içinde \"10.0.0.1 makinem\" "
#~ "gibi bir satır olmalıdır."
#, fuzzy
#~ msgid ""
#~ "A new mysql user \"debian-sys-maint\" will be created. This mysql account "
#~ "is used in the start/stop and cron scripts. Don't delete."
#~ msgstr ""
#~ "Yeni mysql kullanıcısı \"debian-sys-maint\" yaratılacak. Bu hesap, "
#~ "başlangıç betiklerinde ve cron içinde kullanılıyor. Bu hesabı silmeyin."
#, fuzzy
#~ msgid ""
#~ "Please remember to set a PASSWORD for the MySQL root user! If you use a /"
#~ "root/.my.cnf, always write the \"user\" and the \"password\" lines in "
#~ "there, never only the password!"
#~ msgstr ""
#~ "Lütfen MySQL root kullanıcısı için bir PAROLA girmeyi unutmayın! Eğer /"
#~ "root/.my.cnf kullanıyorsanız, \"user\" ve \"password\" satırlarını her "
#~ "zaman buraya ekleyin, sadece parolayı değil! Daha fazla bilgi için /usr/"
#~ "share/doc/mysql-server/README.Debian dosyasını okuyun."
#, fuzzy
#~ msgid ""
#~ "Should I remove all databases below /var/lib/mysql as you are purging the "
#~ "mysql-server package?"
#~ msgstr ""
#~ "mysql-server paketi kaldırıldıktan sonra bütün veritabanları silinsin mi?"
#~ msgid ""
#~ "Networking is disabled by default for security reasons. You can enable it "
#~ "by commenting out the skip-networking option in /etc/mysql/my.cnf."
#~ msgstr ""
#~ "Ağ, öntanımlı olarak güvenlik gerekçeleriyle devre dışı bırakıldı. Bu "
#~ "özelliği /etc/mysql/my.cnf dosyası içindeki \"skip-networking\" "
#~ "seçeneğini kaldırarak etkinleştirebilirsiniz."
#~ msgid "security and update notice"
#~ msgstr "güvenlik ve güncelleme duyurusu"
#~ msgid ""
#~ "Should I remove everything below /var/lib/mysql when you purge the mysql-"
#~ "server package with the \"dpkg --purge mysql-server\" command (i.e. "
#~ "remove everything including the configuration) somewhen? (default is not)"
#~ msgstr ""
#~ "mysql-server paketini temizlemek için \"dpkg --purge mysql-server\" "
#~ "komutunu kullandığınızda (yani yapılandırma dahil herşeyi silmek) /var/"
#~ "lib/mysql altındaki herşeyi sileyim mi? (öntanımlı cevap hayır'dır)."
#~ msgid "Please run mysql_fix_privilege_tables !"
#~ msgstr "Lütfen mysql_fix_privilege_tables komutunu çalıştırın!"
#~ msgid ""
#~ "I will ensure secure permissions of /var/lib/mysql by replacing GIDs "
#~ "other than root and mysql with mysql."
#~ msgstr ""
#~ "/var/lib/mysql'in izinlerinin güvenli olmasını sağlamak amacıyla, buna "
#~ "ait GID'leri root ve mysql'den farklı olacak şekilde değiştireceğim."
#~ msgid ""
#~ "Instructions how to enable SSL support are in /usr/share/doc/mysql-server/"
#~ msgstr ""
#~ "SSL desteğini nasıl etkinleştirebileceğinize ilişkin talimatlar /usr/"
#~ "share/doc/mysql-server/ içinde."
#~ msgid "mysql_fix_privileges_tables will be executed"
#~ msgstr "mysql_fix_privileges_tables çalıştırılacak"
#~ msgid ""
#~ "The latest MySQL versions have an enhanced, more fine grained, privilege "
#~ "system. To make use of it, some new fields must be added to the tables "
#~ "in the \"mysql\" database. This is done by the "
#~ "mysql_fix_privilege_tables script during this upgrade regardless of if "
#~ "the server is currently running or not!"
#~ msgstr ""
#~ "En son MySQL sürümleri zenginleştirilmiş, daha ayrıntılandırılmış bir "
#~ "ayrıcalık (privilege) sistemine sahiptir. Yeni sistemi kullanmak için, "
#~ "\"mysql\" veritabanındaki tablolara bazı yeni alanlar eklenmelidir. Bu "
#~ "işlem, sunucunun çalışıp çalışmamasına bağlı olmaksızın "
#~ "mysql_fix_privilege_tables betiği tarafından bu yükseltme sırasında "
#~ "yapılır."
#~ msgid ""
#~ "This script is not supposed to give any user more rights that he had "
#~ "before, if you encounter such a case, please contact me."
#~ msgstr ""
#~ "Bu betiğin hiç bir kullanıcıya öncekinden daha fazla hak kazandırmadığı "
#~ "varsayılıyor. Eğer bunun aksinde bir durumla karşılaşırsanız, lütfen "
#~ "benimle bağlantıya geçin."
#~ msgid "Make MySQL reachable via network?"
#~ msgstr "MySQL network üzerinden ulaşılabilir olsun mu?"
#~ msgid ""
#~ "Should MySQL listen on a network reachable TCP port? This is not "
#~ "necessary for use on a single computer and could be a security problem."
#~ msgstr ""
#~ "MySQL ağ üzerinde ulaşılabilen bir TCP portunu dinlesin mi? Tek olan bir "
#~ "bilgisayar için bu ayar gerekli değildir ve bir güvenlik sorunu "
#~ "oluşturabilir."
#~ msgid "Enable chroot mode?"
#~ msgstr "chroot kipi etkinleştirilsin mi?"
#~ msgid ""
#~ "MySQL is able to jail itself into the /var/lib/mysql_jail directory so "
#~ "that users cannot modify any files outside this directory. This improves "
#~ "resistence against crackers, too, as they are not able to modify system "
#~ "files."
#~ msgstr ""
#~ "MySQL kendini /var/lib/mysql_jail dizinine hapsederek kullanıcıların bu "
#~ "dizin dışındaki hiç bir dosyayı değiştirmemesini sağlayabilir. Bu "
#~ "düzenleme, sistem dosyalarını değiştirmelerini engelleyeceğinden, "
#~ "cracker'lara karşı dayanıklılığı arttırır."

View File

@ -5193,7 +5193,11 @@ next_file_item_1:
goto next_datadir_item; goto next_datadir_item;
} }
snprintf(dbpath, sizeof(dbpath)-1, "%s/%s", path, dbinfo.name); snprintf(dbpath, sizeof(dbpath), "%.*s/%.*s",
OS_FILE_MAX_PATH/2-1,
path,
OS_FILE_MAX_PATH/2-1,
dbinfo.name);
os_normalize_path(dbpath); os_normalize_path(dbpath);

View File

@ -1,3 +1,26 @@
IF(MSVC)
PROJECT(wolfssl C ASM_MASM)
ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
PROJECT(wolfssl C ASM)
ELSE()
PROJECT(wolfssl C)
ENDIF()
IF(MSVC AND (CMAKE_SIZEOF_VOID_P MATCHES 8))
SET(WOLFSSL_INTELASM ON)
ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
IF(CMAKE_C_COMPILER_ID MATCHES GNU AND CMAKE_C_COMPILER_VERSION VERSION_LESS 4.9)
MESSAGE_ONCE(NO_INTEL_ASSEMBLY "Disable Intel assembly for WolfSSL - compiler is too old")
ELSE()
MY_CHECK_C_COMPILER_FLAG(-maes)
MY_CHECK_C_COMPILER_FLAG(-msse4)
MY_CHECK_C_COMPILER_FLAG(-mpclmul)
ENDIF()
IF(have_C__maes AND have_C__msse4 AND have_C__mpclmul)
SET(WOLFSSL_INTELASM ON)
ENDIF()
ENDIF()
SET(WOLFSSL_SRCDIR ${CMAKE_CURRENT_SOURCE_DIR}/wolfssl/src) SET(WOLFSSL_SRCDIR ${CMAKE_CURRENT_SOURCE_DIR}/wolfssl/src)
ADD_DEFINITIONS(${SSL_DEFINES}) ADD_DEFINITIONS(${SSL_DEFINES})
ADD_DEFINITIONS( ADD_DEFINITIONS(
@ -32,7 +55,7 @@ ADD_DEFINITIONS(-DWOLFSSL_LIB)
INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/wolfssl) INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/wolfssl)
IF(MSVC) IF(MSVC)
# size_t to long truncation warning # size_t to long truncation warning
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -wd4267") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -wd4267 -wd4334")
IF(CMAKE_C_COMPILER_ID MATCHES Clang) IF(CMAKE_C_COMPILER_ID MATCHES Clang)
# Workaround a bug with clang-cl, see https://github.com/wolfSSL/wolfssl/pull/2090 # Workaround a bug with clang-cl, see https://github.com/wolfSSL/wolfssl/pull/2090
ADD_DEFINITIONS(-DMP_16BIT) ADD_DEFINITIONS(-DMP_16BIT)
@ -66,7 +89,6 @@ ${WOLFCRYPT_SRCDIR}/dsa.c
${WOLFCRYPT_SRCDIR}/ecc.c ${WOLFCRYPT_SRCDIR}/ecc.c
${WOLFCRYPT_SRCDIR}/error.c ${WOLFCRYPT_SRCDIR}/error.c
${WOLFCRYPT_SRCDIR}/hmac.c ${WOLFCRYPT_SRCDIR}/hmac.c
${WOLFCRYPT_SRCDIR}/integer.c
${WOLFCRYPT_SRCDIR}/logging.c ${WOLFCRYPT_SRCDIR}/logging.c
${WOLFCRYPT_SRCDIR}/md4.c ${WOLFCRYPT_SRCDIR}/md4.c
${WOLFCRYPT_SRCDIR}/md5.c ${WOLFCRYPT_SRCDIR}/md5.c
@ -85,5 +107,42 @@ ${WOLFCRYPT_SRCDIR}/hash.c
${WOLFCRYPT_SRCDIR}/wolfmath.c ${WOLFCRYPT_SRCDIR}/wolfmath.c
) )
# Use fastmath large number math library.
IF(NOT (MSVC AND CMAKE_C_COMPILER_ID MATCHES Clang)
AND (CMAKE_SIZEOF_VOID_P EQUAL 8))
SET(WOLFSSL_FASTMATH 1)
ENDIF()
IF(WOLFSSL_FASTMATH)
ADD_DEFINITIONS(-DUSE_FAST_MATH)
# FP_MAX_BITS is set high solely to satisfy ssl_8k_key.test
# WolfSSL will use more stack space with it
ADD_DEFINITIONS(-DFP_MAX_BITS=16384)
SET(WOLFCRYPT_SOURCES ${WOLFCRYPT_SOURCES} ${WOLFCRYPT_SRCDIR}/tfm.c)
ELSE()
SET(WOLFCRYPT_SOURCES ${WOLFCRYPT_SOURCES} ${WOLFCRYPT_SRCDIR}/integer.c)
ENDIF()
IF(WOLFSSL_INTELASM)
ADD_DEFINITIONS(-DWOLFSSL_AESNI)
SET(SSL_DEFINES "${SSL_DEFINES} -DWOLFSSL_AESNI" PARENT_SCOPE)
LIST(APPEND WOLFCRYPT_SOURCES ${WOLFCRYPT_SRCDIR}/cpuid.c)
IF(MSVC)
LIST(APPEND WOLFCRYPT_SOURCES ${WOLFCRYPT_SRCDIR}/aes_asm.asm)
IF(CMAKE_C_COMPILER_ID MATCHES Clang)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes")
ELSE()
ADD_DEFINITIONS(-DHAVE_INTEL_RDSEED -DWOLFSSL_X86_64_BUILD)
ENDIF()
ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
ADD_DEFINITIONS(-DHAVE_INTEL_RDSEED -DUSE_INTEL_SPEEDUP)
LIST(APPEND WOLFCRYPT_SOURCES
${WOLFCRYPT_SRCDIR}/aes_asm.S
${WOLFCRYPT_SRCDIR}/sha512_asm.S
${WOLFCRYPT_SRCDIR}/sha256_asm.S)
ADD_DEFINITIONS(-maes -msse4 -mpclmul)
ENDIF()
ENDIF()
ADD_CONVENIENCE_LIBRARY(wolfcrypt ${WOLFCRYPT_SOURCES}) ADD_CONVENIENCE_LIBRARY(wolfcrypt ${WOLFCRYPT_SOURCES})

View File

@ -45,7 +45,7 @@ extern "C" {
/* The max key length of all supported algorithms */ /* The max key length of all supported algorithms */
#define MY_AES_MAX_KEY_LENGTH 32 #define MY_AES_MAX_KEY_LENGTH 32
#define MY_AES_CTX_SIZE 560 #define MY_AES_CTX_SIZE 600
enum my_aes_mode { enum my_aes_mode {
MY_AES_ECB, MY_AES_CBC MY_AES_ECB, MY_AES_CBC

@ -1 +1 @@
Subproject commit 68e6c5bd670ee0e6fee8fd82f160611c4529ac5a Subproject commit ab4d09dd8de0bb2c56ca0c60cb386f02d1736190

View File

@ -21,6 +21,17 @@ use strict;
use warnings; use warnings;
use Carp; use Carp;
# Define all MariaDB options that the user should be able to specify
# many times in the config file. Note that options must be written
# using '-' instead of '_' here!
my %multipart_options=
(
"plugin-load-add" => 1,
"optimizer-switch" => 1,
);
sub new { sub new {
my ($class, $option_name, $option_value)= @_; my ($class, $option_name, $option_value)= @_;
my $self= bless { name => $option_name, my $self= bless { name => $option_name,
@ -327,7 +338,6 @@ sub new {
# Skip comment # Skip comment
next; next;
} }
else { else {
croak "Unexpected line '$line' found in '$path'"; croak "Unexpected line '$line' found in '$path'";
} }
@ -355,6 +365,11 @@ sub insert {
if ( defined $option ) { if ( defined $option ) {
#print "option: $option, value: $value\n"; #print "option: $option, value: $value\n";
my $tmp_option= $option;
$tmp_option =~ s/_/-/g;
# If the option is an option that one can specify many times, always add
$if_not_exist= 1 if ($multipart_options{$tmp_option});
# Add the option to the group # Add the option to the group
$group->insert($option, $value, $if_not_exist); $group->insert($option, $value, $if_not_exist);

View File

@ -291,7 +291,7 @@ sub post_check_client_groups {
$first_mysqld->name()); $first_mysqld->name());
# Then generate [client.<suffix>] for each [mysqld.<suffix>] # Then generate [client.<suffix>] for each [mysqld.<suffix>]
foreach my $mysqld ( $config->like('mysqld.') ) { foreach my $mysqld ( $config->like('mysqld\.') ) {
$self->post_check_client_group($config, $self->post_check_client_group($config,
'client'.$mysqld->after('mysqld'), 'client'.$mysqld->after('mysqld'),
$mysqld->name()) $mysqld->name())
@ -313,7 +313,7 @@ sub post_check_embedded_group {
my $mysqld= $config->group('mysqld') or my $mysqld= $config->group('mysqld') or
croak "Can't run with embedded, config has no default mysqld section"; croak "Can't run with embedded, config has no default mysqld section";
my $first_mysqld= $config->first_like('mysqld.') or my $first_mysqld= $config->first_like('mysqld\.') or
croak "Can't run with embedded, config has no mysqld"; croak "Can't run with embedded, config has no mysqld";
my %no_copy = map { $_ => 1 } my %no_copy = map { $_ => 1 }
@ -351,7 +351,7 @@ sub resolve_at_variable {
} }
$res .= $after; $res .= $after;
$config->insert($group->name(), $option->name(), $res) $option->{value}= $res;
} }
@ -436,7 +436,7 @@ sub new_config {
} }
$self->run_section_rules($config, $self->run_section_rules($config,
'mysqld.', 'mysqld\.',
@mysqld_rules); @mysqld_rules);
# [mysqlbinlog] need additional settings # [mysqlbinlog] need additional settings

View File

@ -26,3 +26,28 @@ disconnect con1;
connection default; connection default;
DROP TABLE t1; DROP TABLE t1;
SET DEBUG_SYNC= 'RESET'; SET DEBUG_SYNC= 'RESET';
#
# Demonstrates a deadlock if BACKUP namespace is reorder after SCHEMA.
# Culprit is ALTER TABLE taking SCHEMA lock on target database after
# BACKUP lock was acquired.
#
CREATE DATABASE test2;
CREATE TABLE t1(a INT) ENGINE=InnoDB;
SET DEBUG_SYNC='alter_opened_table SIGNAL ready WAIT_FOR go';
ALTER TABLE t1 RENAME TO test2.t1;
connect con1,localhost,root,,;
SET DEBUG_SYNC='now WAIT_FOR ready';
BACKUP STAGE START;
SET DEBUG_SYNC='mdl_acquire_lock_wait SIGNAL ready1';
BACKUP STAGE BLOCK_DDL;
connect con2,localhost,root,,;
SET DEBUG_SYNC='now WAIT_FOR ready1';
SET DEBUG_SYNC='mdl_acquire_lock_wait SIGNAL go';
DROP DATABASE test2;
connection default;
connection con1;
disconnect con1;
connection con2;
disconnect con2;
connection default;
SET DEBUG_SYNC='reset';

View File

@ -3,6 +3,7 @@
######################################################################## ########################################################################
--source include/have_debug_sync.inc --source include/have_debug_sync.inc
--source include/have_innodb.inc
--echo # --echo #
--echo # Make sure pending LOCK TABLES doesn't block BACKUP STAGE --echo # Make sure pending LOCK TABLES doesn't block BACKUP STAGE
@ -38,3 +39,40 @@ disconnect con1;
connection default; connection default;
DROP TABLE t1; DROP TABLE t1;
SET DEBUG_SYNC= 'RESET'; SET DEBUG_SYNC= 'RESET';
--echo #
--echo # Demonstrates a deadlock if BACKUP namespace is reorder after SCHEMA.
--echo # Culprit is ALTER TABLE taking SCHEMA lock on target database after
--echo # BACKUP lock was acquired.
--echo #
CREATE DATABASE test2;
CREATE TABLE t1(a INT) ENGINE=InnoDB;
SET DEBUG_SYNC='alter_opened_table SIGNAL ready WAIT_FOR go';
send ALTER TABLE t1 RENAME TO test2.t1;
connect (con1,localhost,root,,);
SET DEBUG_SYNC='now WAIT_FOR ready';
BACKUP STAGE START;
SET DEBUG_SYNC='mdl_acquire_lock_wait SIGNAL ready1';
send BACKUP STAGE BLOCK_DDL;
connect (con2,localhost,root,,);
SET DEBUG_SYNC='now WAIT_FOR ready1';
SET DEBUG_SYNC='mdl_acquire_lock_wait SIGNAL go';
send DROP DATABASE test2;
connection default;
reap;
connection con1;
reap;
disconnect con1;
connection con2;
reap;
disconnect con2;
connection default;
SET DEBUG_SYNC='reset';

View File

@ -404,8 +404,8 @@ b int(11) YES NULL
c int(11) YES NULL c int(11) YES NULL
explain select * from t1,t2 where t1.b = t2.c and t1.c = t2.b; explain select * from t1,t2 where t1.b = t2.c and t1.c = t2.b;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL b,c NULL NULL NULL 10 1 SIMPLE t2 ALL NULL NULL NULL NULL 10 Using where
1 SIMPLE t2 ALL NULL NULL NULL NULL 10 Using where; Using join buffer (flat, BNL join) 1 SIMPLE t1 ref b,c b 5 test.t2.c 1 Using where
select * from t1,t2 where t1.b = t2.c and t1.c = t2.b; select * from t1,t2 where t1.b = t2.c and t1.c = t2.b;
a a b c a a b c
1 1 1 1 1 1 1 1

View File

@ -1605,3 +1605,34 @@ SELECT STRAIGHT_JOIN * FROM t1, t2 AS t2_1, t2 AS t2_2
WHERE t2_2.c = t2_1.c AND t2_2.b = t2_1.b AND ( a IS NULL OR t2_1.c = a ); WHERE t2_2.c = t2_1.c AND t2_2.b = t2_1.b AND ( a IS NULL OR t2_1.c = a );
a b c b c a b c b c
DROP TABLE t1,t2; DROP TABLE t1,t2;
#
# MDEV-19600: The optimizer should be able to produce rows=1 estimate for unique index with NULLable columns
#
create table t0(a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (
pk int not null primary key auto_increment,
a int,
b int,
unique key(a)
);
insert into t1 (a,b) select null, 12345 from t0 A, t0 B, t0 C;
insert into t1 (a,b) select a,a from t0;
# Simulate InnoDB's persistent statistics (It always uses nulls_equal)
set @tmp1= @@myisam_stats_method;
set myisam_stats_method=nulls_equal;
analyze table t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
set myisam_stats_method=@tmp1;
show keys from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A 1010 NULL NULL BTREE
t1 0 a 1 a A 1010 NULL NULL YES BTREE
# t1 must use ref(t1.a=t0.a) and rows must be 1 (and not 45):
explain select * from t0,t1 where t0.a=t1.a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using where
1 SIMPLE t1 ref a a 5 test.t0.a 1
drop table t0,t1;

View File

@ -1255,3 +1255,33 @@ SELECT STRAIGHT_JOIN * FROM t1, t2 AS t2_1, t2 AS t2_2
WHERE t2_2.c = t2_1.c AND t2_2.b = t2_1.b AND ( a IS NULL OR t2_1.c = a ); WHERE t2_2.c = t2_1.c AND t2_2.b = t2_1.b AND ( a IS NULL OR t2_1.c = a );
DROP TABLE t1,t2; DROP TABLE t1,t2;
--echo #
--echo # MDEV-19600: The optimizer should be able to produce rows=1 estimate for unique index with NULLable columns
--echo #
create table t0(a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (
pk int not null primary key auto_increment,
a int,
b int,
unique key(a)
);
# 10K of null values
insert into t1 (a,b) select null, 12345 from t0 A, t0 B, t0 C;
insert into t1 (a,b) select a,a from t0;
--echo # Simulate InnoDB's persistent statistics (It always uses nulls_equal)
set @tmp1= @@myisam_stats_method;
set myisam_stats_method=nulls_equal;
analyze table t1;
set myisam_stats_method=@tmp1;
show keys from t1;
--echo # t1 must use ref(t1.a=t0.a) and rows must be 1 (and not 45):
explain select * from t0,t1 where t0.a=t1.a;
drop table t0,t1;

View File

@ -867,7 +867,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
"table": "t1", "table": "t1",
"field": "a", "field": "a",
"equals": "t2.b + 2", "equals": "t2.b + 2",
"null_rejecting": false "null_rejecting": true
}, },
{ {
"table": "t2", "table": "t2",
@ -1446,7 +1446,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
{ {
"index": "id", "index": "id",
"covering": true, "covering": true,
"ranges": ["(0x24a20f) <= (a)"], "ranges": ["(2001-01-04) <= (a)"],
"rows": 9, "rows": 9,
"cost": 2.35 "cost": 2.35
} }
@ -1462,7 +1462,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
"rows": 9, "rows": 9,
"cost": 2.35, "cost": 2.35,
"key_parts_used_for_access": ["id"], "key_parts_used_for_access": ["id"],
"ranges": ["(0x24a20f) <= (a)"], "ranges": ["(2001-01-04) <= (a)"],
"chosen": false, "chosen": false,
"cause": "cost" "cause": "cost"
}, },
@ -1624,7 +1624,7 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
{ {
"index": "id", "index": "id",
"covering": true, "covering": true,
"ranges": ["(0x24a20f) <= (a) <= (0x24a20f)"], "ranges": ["(2001-01-04) <= (a) <= (2001-01-04)"],
"rows": 9, "rows": 9,
"cost": 2.35 "cost": 2.35
} }
@ -1640,7 +1640,7 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
"rows": 9, "rows": 9,
"cost": 2.35, "cost": 2.35,
"key_parts_used_for_access": ["id", "a"], "key_parts_used_for_access": ["id", "a"],
"ranges": ["(0x24a20f) <= (a) <= (0x24a20f)"], "ranges": ["(2001-01-04) <= (a) <= (2001-01-04)"],
"chosen": false, "chosen": false,
"cause": "cost" "cause": "cost"
}, },
@ -1805,19 +1805,19 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"table": "t1", "table": "t1",
"field": "a", "field": "a",
"equals": "1", "equals": "1",
"null_rejecting": false "null_rejecting": true
}, },
{ {
"table": "t1", "table": "t1",
"field": "a", "field": "a",
"equals": "1", "equals": "1",
"null_rejecting": false "null_rejecting": true
}, },
{ {
"table": "t1", "table": "t1",
"field": "b", "field": "b",
"equals": "2", "equals": "2",
"null_rejecting": false "null_rejecting": true
} }
] ]
}, },
@ -2821,37 +2821,37 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"table": "t1", "table": "t1",
"field": "pk", "field": "pk",
"equals": "2", "equals": "2",
"null_rejecting": false "null_rejecting": true
}, },
{ {
"table": "t1", "table": "t1",
"field": "pk", "field": "pk",
"equals": "2", "equals": "2",
"null_rejecting": false "null_rejecting": true
}, },
{ {
"table": "t1", "table": "t1",
"field": "a", "field": "a",
"equals": "5", "equals": "5",
"null_rejecting": false "null_rejecting": true
}, },
{ {
"table": "t1", "table": "t1",
"field": "pk", "field": "pk",
"equals": "2", "equals": "2",
"null_rejecting": false "null_rejecting": true
}, },
{ {
"table": "t1", "table": "t1",
"field": "a", "field": "a",
"equals": "5", "equals": "5",
"null_rejecting": false "null_rejecting": true
}, },
{ {
"table": "t1", "table": "t1",
"field": "b", "field": "b",
"equals": "1", "equals": "1",
"null_rejecting": false "null_rejecting": true
} }
] ]
}, },
@ -6130,7 +6130,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"index": "start_date", "index": "start_date",
"ranges": "ranges":
[ [
"(0x4ac60f,NULL) < (start_date,end_date)" "(2019-02-10,NULL) < (start_date,end_date)"
], ],
"rowid_ordered": false, "rowid_ordered": false,
"using_mrr": false, "using_mrr": false,
@ -6214,7 +6214,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"index": "i_b", "index": "i_b",
"ranges": "ranges":
[ [
"(0xd95b94336a9946a39cf5b58cfe772d8c) <= (b) <= (0xd95b94336a9946a39cf5b58cfe772d8c)" "(\xD9[\x943j\x99F\xA3\x9C\xF5\xB5\x8C\xFEw-\x8C) <= (b) <= (\xD9[\x943j\x99F\xA3\x9C\xF5\xB5\x8C\xFEw-\x8C)"
], ],
"rowid_ordered": true, "rowid_ordered": true,
"using_mrr": false, "using_mrr": false,
@ -6268,4 +6268,290 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
} }
] ]
drop table t1; drop table t1;
#
# MDEV-18880: Optimizer trace prints date in hexadecimal
#
CREATE TABLE t1(i INT PRIMARY KEY, b VARCHAR(10) CHARSET BINARY , INDEX i_b(b));
INSERT INTO t1 VALUES (1, 'ab\n');
INSERT INTO t1 VALUES (2, NULL);
set optimizer_trace=1;
EXPLAIN SELECT * FROM t1 WHERE b='ab\n';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref i_b i_b 13 const 1 Using index condition
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
[
{
"range_scan_alternatives":
[
{
"index": "i_b",
"ranges":
[
"(ab\x0A) <= (b) <= (ab\x0A)"
],
"rowid_ordered": true,
"using_mrr": false,
"index_only": false,
"rows": 1,
"cost": 2.3787,
"chosen": true
}
],
"analyzing_roworder_intersect":
{
"cause": "too few roworder scans"
},
"analyzing_index_merge_union":
[
]
}
]
ALTER TABLE t1 modify column b BINARY(10) AFTER i;
EXPLAIN SELECT * FROM t1 WHERE b='ab\n';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref i_b i_b 11 const 1 Using index condition
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
[
{
"range_scan_alternatives":
[
{
"index": "i_b",
"ranges":
[
"(ab\x0A\x00\x00\x00\x00\x00\x00\x00) <= (b) <= (ab\x0A\x00\x00\x00\x00\x00\x00\x00)"
],
"rowid_ordered": true,
"using_mrr": false,
"index_only": false,
"rows": 1,
"cost": 2.3785,
"chosen": true
}
],
"analyzing_roworder_intersect":
{
"cause": "too few roworder scans"
},
"analyzing_index_merge_union":
[
]
}
]
ALTER TABLE t1 modify column b VARBINARY(10) AFTER i;
EXPLAIN SELECT * FROM t1 WHERE b='ab\n';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref i_b i_b 13 const 1 Using index condition
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
[
{
"range_scan_alternatives":
[
{
"index": "i_b",
"ranges":
[
"(ab\x0A) <= (b) <= (ab\x0A)"
],
"rowid_ordered": true,
"using_mrr": false,
"index_only": false,
"rows": 1,
"cost": 2.3787,
"chosen": true
}
],
"analyzing_roworder_intersect":
{
"cause": "too few roworder scans"
},
"analyzing_index_merge_union":
[
]
}
]
drop table t1;
CREATE TABLE t1(i INT PRIMARY KEY, b CHAR(10), INDEX i_b(b));
INSERT INTO t1 VALUES (1, 'ab\n');
INSERT INTO t1 VALUES (2, NULL);
EXPLAIN SELECT * FROM t1 WHERE b='ab\n';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref i_b i_b 11 const 1 Using index condition
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
[
{
"range_scan_alternatives":
[
{
"index": "i_b",
"ranges":
[
"(ab\n) <= (b) <= (ab\n)"
],
"rowid_ordered": true,
"using_mrr": false,
"index_only": false,
"rows": 1,
"cost": 2.3785,
"chosen": true
}
],
"analyzing_roworder_intersect":
{
"cause": "too few roworder scans"
},
"analyzing_index_merge_union":
[
]
}
]
drop table t1;
CREATE TABLE t1(i INT PRIMARY KEY, b blob , INDEX i_b(b));
Warnings:
Note 1071 Specified key was too long; max key length is 1000 bytes
INSERT INTO t1 VALUES (1, 'ab\n');
INSERT INTO t1 VALUES (2, NULL);
set optimizer_trace=1;
EXPLAIN SELECT * FROM t1 WHERE b= 'ab\n';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref i_b i_b 1003 const 1 Using where
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
[
{
"range_scan_alternatives":
[
{
"index": "i_b",
"ranges":
[
"(ab\x0A) <= (b) <= (ab\x0A)"
],
"rowid_ordered": false,
"using_mrr": false,
"index_only": false,
"rows": 1,
"cost": 3.5719,
"chosen": true
}
],
"analyzing_roworder_intersect":
{
"cause": "too few roworder scans"
},
"analyzing_index_merge_union":
[
]
}
]
drop table t1;
CREATE TABLE t1(i INT PRIMARY KEY, b VARCHAR(10), INDEX i_b(b));
INSERT INTO t1 VALUES (1, 'ab\n');
INSERT INTO t1 VALUES (2, 'ab\n');
set optimizer_trace=1;
EXPLAIN SELECT * FROM t1 WHERE b='ab\n';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref i_b i_b 13 const 2 Using index condition
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
[
{
"range_scan_alternatives":
[
{
"index": "i_b",
"ranges":
[
"(ab\n) <= (b) <= (ab\n)"
],
"rowid_ordered": true,
"using_mrr": false,
"index_only": false,
"rows": 2,
"cost": 3.6324,
"chosen": true
}
],
"analyzing_roworder_intersect":
{
"cause": "too few roworder scans"
},
"analyzing_index_merge_union":
[
]
}
]
drop table t1;
create table t0(a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table one_k (a int);
insert into one_k select A.a + B.a*10 + C.a*100 from t0 A, t0 B, t0 C;
create table t1 (start_date date, end_date date, filler char(100), key(start_date, end_date)) ;
insert into t1 select date_add(now(), interval a day), date_add(now(), interval (a+7) day), 'data' from one_k;
explain format=json select * from t1 force index(start_date) where start_date >= '2019-02-10' and end_date <'2019-04-01';
EXPLAIN
{
"query_block": {
"select_id": 1,
"table": {
"table_name": "t1",
"access_type": "range",
"possible_keys": ["start_date"],
"key": "start_date",
"key_length": "8",
"used_key_parts": ["start_date", "end_date"],
"rows": 1000,
"filtered": 100,
"index_condition": "t1.start_date >= '2019-02-10' and t1.end_date < '2019-04-01'"
}
}
}
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
[
{
"range_scan_alternatives":
[
{
"index": "start_date",
"ranges":
[
"(2019-02-10,NULL) < (start_date,end_date)"
],
"rowid_ordered": false,
"using_mrr": false,
"index_only": false,
"rows": 1000,
"cost": 1282.2,
"chosen": true
}
],
"analyzing_roworder_intersect":
{
"cause": "too few roworder scans"
},
"analyzing_index_merge_union":
[
]
}
]
drop table t1, t0, one_k;
set optimizer_trace='enabled=off'; set optimizer_trace='enabled=off';

View File

@ -444,4 +444,58 @@ select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) fr
drop table t1; drop table t1;
--echo #
--echo # MDEV-18880: Optimizer trace prints date in hexadecimal
--echo #
CREATE TABLE t1(i INT PRIMARY KEY, b VARCHAR(10) CHARSET BINARY , INDEX i_b(b));
INSERT INTO t1 VALUES (1, 'ab\n');
INSERT INTO t1 VALUES (2, NULL);
set optimizer_trace=1;
EXPLAIN SELECT * FROM t1 WHERE b='ab\n';
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
ALTER TABLE t1 modify column b BINARY(10) AFTER i;
EXPLAIN SELECT * FROM t1 WHERE b='ab\n';
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
ALTER TABLE t1 modify column b VARBINARY(10) AFTER i;
EXPLAIN SELECT * FROM t1 WHERE b='ab\n';
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
drop table t1;
CREATE TABLE t1(i INT PRIMARY KEY, b CHAR(10), INDEX i_b(b));
INSERT INTO t1 VALUES (1, 'ab\n');
INSERT INTO t1 VALUES (2, NULL);
EXPLAIN SELECT * FROM t1 WHERE b='ab\n';
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
drop table t1;
CREATE TABLE t1(i INT PRIMARY KEY, b blob , INDEX i_b(b));
INSERT INTO t1 VALUES (1, 'ab\n');
INSERT INTO t1 VALUES (2, NULL);
set optimizer_trace=1;
EXPLAIN SELECT * FROM t1 WHERE b= 'ab\n';
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
drop table t1;
CREATE TABLE t1(i INT PRIMARY KEY, b VARCHAR(10), INDEX i_b(b));
INSERT INTO t1 VALUES (1, 'ab\n');
INSERT INTO t1 VALUES (2, 'ab\n');
set optimizer_trace=1;
EXPLAIN SELECT * FROM t1 WHERE b='ab\n';
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
drop table t1;
create table t0(a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table one_k (a int);
insert into one_k select A.a + B.a*10 + C.a*100 from t0 A, t0 B, t0 C;
create table t1 (start_date date, end_date date, filler char(100), key(start_date, end_date)) ;
--disable_warnings
insert into t1 select date_add(now(), interval a day), date_add(now(), interval (a+7) day), 'data' from one_k;
--enable_warnings
explain format=json select * from t1 force index(start_date) where start_date >= '2019-02-10' and end_date <'2019-04-01';
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
drop table t1, t0, one_k;
set optimizer_trace='enabled=off'; set optimizer_trace='enabled=off';

View File

@ -0,0 +1,54 @@
create or replace table t1 (col1 char(10) character set ucs2, filler char(100), key(col1)) ;
insert into t1 values ('a', 'a');
insert into t1 values ('a', 'a');
set optimizer_trace=1;
explain format=json select * from t1 force index(col1) where col1 >='a';
EXPLAIN
{
"query_block": {
"select_id": 1,
"table": {
"table_name": "t1",
"access_type": "range",
"possible_keys": ["col1"],
"key": "col1",
"key_length": "21",
"used_key_parts": ["col1"],
"rows": 2,
"filtered": 100,
"index_condition": "t1.col1 >= 'a'"
}
}
}
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
[
{
"range_scan_alternatives":
[
{
"index": "col1",
"ranges":
[
"(a) <= (col1)"
],
"rowid_ordered": false,
"using_mrr": false,
"index_only": false,
"rows": 2,
"cost": 3.7609,
"chosen": true
}
],
"analyzing_roworder_intersect":
{
"cause": "too few roworder scans"
},
"analyzing_index_merge_union":
[
]
}
]
drop table t1;

View File

@ -0,0 +1,10 @@
--source include/not_embedded.inc
--source include/have_ucs2.inc
create or replace table t1 (col1 char(10) character set ucs2, filler char(100), key(col1)) ;
insert into t1 values ('a', 'a');
insert into t1 values ('a', 'a');
set optimizer_trace=1;
explain format=json select * from t1 force index(col1) where col1 >='a';
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
drop table t1;

View File

@ -1589,7 +1589,7 @@ WHERE t2.b=14 AND t2.a=t1.a AND 5.1<t2.c AND t1.b='DE'
ORDER BY t2.c LIMIT 1; ORDER BY t2.c LIMIT 1;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 range a,b,c c 5 NULL 420 Using where 1 SIMPLE t2 range a,b,c c 5 NULL 420 Using where
1 SIMPLE t1 ref a a 39 test.t2.a,const 10 Using where; Using index 1 SIMPLE t1 ref a a 39 test.t2.a,const 1 Using where; Using index
SELECT d FROM t3 AS t1, t2 AS t2 SELECT d FROM t3 AS t1, t2 AS t2
WHERE t2.b=14 AND t2.a=t1.a AND 5.1<t2.c AND t1.b='DE' WHERE t2.b=14 AND t2.a=t1.a AND 5.1<t2.c AND t1.b='DE'
ORDER BY t2.c LIMIT 1; ORDER BY t2.c LIMIT 1;

View File

@ -0,0 +1,11 @@
create table t1 (a int);
alter table mysql.column_stats rename to mysql.column_stats1;
flush tables;
alter table t1 change a b varchar(100);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`b` varchar(100) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
alter table mysql.column_stats1 rename to mysql.column_stats;
drop table t1;

View File

@ -0,0 +1,10 @@
#
# MDEV-18788 Live upgrade from MySQL 5.6/5.7 to MariaDB 10.4 fails with "Event Scheduler: An error occurred when initializing system tables"
#
create table t1 (a int);
alter table mysql.column_stats rename to mysql.column_stats1;
flush tables;
alter table t1 change a b varchar(100);
show create table t1;
alter table mysql.column_stats1 rename to mysql.column_stats;
drop table t1;

View File

@ -7314,5 +7314,60 @@ ERROR HY000: Illegal parameter data types row and boolean for operation '='
# #
# End of 10.4 tests # End of 10.4 tests
# #
#
# MDEV-19714: JOIN::pseudo_bits_cond is not visible in EXPLAIN FORMAT=JSON
#
CREATE TABLE t1 ( a INT );
INSERT INTO t1 VALUES (1),(5);
CREATE TABLE t2 ( b INT ) ENGINE=MyISAM;
INSERT INTO t2 VALUES (1);
CREATE TABLE t3 ( c INT );
INSERT INTO t3 VALUES (4),(5);
SET @tmp19714=@@optimizer_switch;
SET optimizer_switch='subquery_cache=off';
explain format=json
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
EXPLAIN
{
"query_block": {
"select_id": 1,
"table": {
"table_name": "t1",
"access_type": "ALL",
"rows": 2,
"filtered": 100
},
"subqueries": [
{
"query_block": {
"select_id": 2,
"pseudo_bits_condition": "1 = t1.a or <in_optimizer>(1,<exists>(subquery#3))",
"table": {
"table_name": "t2",
"access_type": "system",
"rows": 1,
"filtered": 100
},
"subqueries": [
{
"query_block": {
"select_id": 3,
"table": {
"table_name": "t3",
"access_type": "ALL",
"rows": 2,
"filtered": 100,
"attached_condition": "1 = t3.c"
}
}
}
]
}
}
]
}
}
SET optimizer_switch=@tmp19714;
drop table t1,t2,t3;
set @optimizer_switch_for_subselect_test=null; set @optimizer_switch_for_subselect_test=null;
set @join_cache_level_for_subselect_test=NULL; set @join_cache_level_for_subselect_test=NULL;

View File

@ -8,5 +8,28 @@ set @join_cache_level_for_subselect_test=@@join_cache_level;
--source subselect.test --source subselect.test
--echo #
--echo # MDEV-19714: JOIN::pseudo_bits_cond is not visible in EXPLAIN FORMAT=JSON
--echo #
CREATE TABLE t1 ( a INT );
INSERT INTO t1 VALUES (1),(5);
# t2 must be MyISAM or Aria and contain 1 row
CREATE TABLE t2 ( b INT ) ENGINE=MyISAM;
INSERT INTO t2 VALUES (1);
CREATE TABLE t3 ( c INT );
INSERT INTO t3 VALUES (4),(5);
SET @tmp19714=@@optimizer_switch;
SET optimizer_switch='subquery_cache=off';
explain format=json
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
SET optimizer_switch=@tmp19714;
drop table t1,t2,t3;
set @optimizer_switch_for_subselect_test=null; set @optimizer_switch_for_subselect_test=null;
set @join_cache_level_for_subselect_test=NULL; set @join_cache_level_for_subselect_test=NULL;

View File

@ -2555,33 +2555,94 @@ CREATE TABLE t1 ( a INT PRIMARY KEY, b INT, KEY(b) );
INSERT INTO t1 VALUES INSERT INTO t1 VALUES
(1,2),(2,1),(3,3),(4,2),(5,5), (1,2),(2,1),(3,3),(4,2),(5,5),
(6,3),(7,1),(8,4),(9,3),(10,2); (6,3),(7,1),(8,4),(9,3),(10,2);
CREATE TABLE t2 ( c INT, d INT, UNIQUE KEY(c) ); CREATE TABLE t2 ( c INT, d INT, KEY(c) );
INSERT INTO t2 VALUES INSERT INTO t2 VALUES
(1,2),(2,1),(3,3),(4,2),(5,5),(6,3),(7,1); (1,2),(2,1),(3,3),(4,2),(5,5),(6,3),(7,1);
analyze table t1,t2;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
explain
SELECT a, b, d FROM t1, t2
WHERE ( b, d ) IN
( SELECT b, d FROM t1, t2 WHERE b = c );
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t2 ALL NULL NULL NULL NULL 7
1 PRIMARY t1 index b b 5 NULL 10 Using where; Using index; LooseScan
1 PRIMARY t2 ref c c 5 test.t1.b 1 Using where; FirstMatch(t1)
1 PRIMARY t1 ref b b 5 test.t1.b 2
SELECT a, b, d FROM t1, t2 SELECT a, b, d FROM t1, t2
WHERE ( b, d ) IN WHERE ( b, d ) IN
( SELECT b, d FROM t1, t2 WHERE b = c ); ( SELECT b, d FROM t1, t2 WHERE b = c );
a b d a b d
2 1 2 2 1 2
7 1 2 7 1 2
8 4 2
1 2 1
4 2 1
10 2 1
3 3 3
6 3 3
9 3 3
2 1 2 2 1 2
7 1 2 7 1 2
1 2 1
4 2 1
10 2 1
1 2 1
4 2 1
10 2 1
3 3 3
6 3 3
9 3 3
3 3 3
6 3 3
9 3 3
8 4 2
8 4 2 8 4 2
5 5 5 5 5 5
3 3 3
6 3 3
9 3 3
1 2 1
4 2 1
10 2 1
DROP TABLE t1, t2; DROP TABLE t1, t2;
# Another testcase for the above that still uses LooseScan:
create table t0(a int primary key);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t10(a int primary key);
insert into t10 select A.a + B.a* 10 + C.a * 100 from t0 A, t0 B, t0 C;
create table t1 (
pk int primary key auto_increment,
kp1 int,
kp2 int,
filler char(100),
key (kp1, kp2)
);
insert into t1 (kp1, kp2, filler)
select
A.a, B.a, 'filler-data'
from t0 A, t0 B;
create table t2 (a int, filler char(100), key(a));
create table t3 (a int);
insert into t3 values (1),(2);
insert into t2
select (A.a+1000*B.a)/20, 'filler_data' from t10 A, t0 B;
analyze table t1,t2,t3;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status Table is already up to date
test.t3 analyze status Engine-independent statistics collected
test.t3 analyze status OK
delete from t1 where kp2 in (1,3);
# Ref + LooseScan on t1:
explain select sum(t2.a)
from t2,t3
where (t3.a,t2.a) in (select kp1,kp2 from t1,t0 where t0.a=2);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t0 const PRIMARY PRIMARY 4 const 1 Using index
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 Using where
1 PRIMARY t1 ref kp1 kp1 5 test.t3.a 10 Using where; Using index; LooseScan
1 PRIMARY t2 ref a a 5 test.t1.kp2 19 Using index
select sum(t2.a)
from t2,t3
where (t3.a,t2.a) in (select kp1,kp2 from t1,t0 where t0.a=2);
sum(t2.a)
1640
drop table t0,t10;
drop table t1,t2,t3;
# #
# BUG#920713: Wrong result (missing rows) with firstmatch+BNL, IN subquery, ... # BUG#920713: Wrong result (missing rows) with firstmatch+BNL, IN subquery, ...
# #

View File

@ -2285,16 +2285,66 @@ INSERT INTO t1 VALUES
(1,2),(2,1),(3,3),(4,2),(5,5), (1,2),(2,1),(3,3),(4,2),(5,5),
(6,3),(7,1),(8,4),(9,3),(10,2); (6,3),(7,1),(8,4),(9,3),(10,2);
CREATE TABLE t2 ( c INT, d INT, UNIQUE KEY(c) ); CREATE TABLE t2 ( c INT, d INT, KEY(c) );
INSERT INTO t2 VALUES INSERT INTO t2 VALUES
(1,2),(2,1),(3,3),(4,2),(5,5),(6,3),(7,1); (1,2),(2,1),(3,3),(4,2),(5,5),(6,3),(7,1);
analyze table t1,t2;
explain
SELECT a, b, d FROM t1, t2
WHERE ( b, d ) IN
( SELECT b, d FROM t1, t2 WHERE b = c );
SELECT a, b, d FROM t1, t2 SELECT a, b, d FROM t1, t2
WHERE ( b, d ) IN WHERE ( b, d ) IN
( SELECT b, d FROM t1, t2 WHERE b = c ); ( SELECT b, d FROM t1, t2 WHERE b = c );
DROP TABLE t1, t2; DROP TABLE t1, t2;
--echo # Another testcase for the above that still uses LooseScan:
create table t0(a int primary key);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t10(a int primary key);
insert into t10 select A.a + B.a* 10 + C.a * 100 from t0 A, t0 B, t0 C;
create table t1 (
pk int primary key auto_increment,
kp1 int,
kp2 int,
filler char(100),
key (kp1, kp2)
);
# 10 groups, each has 10 elements.
insert into t1 (kp1, kp2, filler)
select
A.a, B.a, 'filler-data'
from t0 A, t0 B;
create table t2 (a int, filler char(100), key(a));
create table t3 (a int);
insert into t3 values (1),(2);
insert into t2
select (A.a+1000*B.a)/20, 'filler_data' from t10 A, t0 B;
analyze table t1,t2,t3;
delete from t1 where kp2 in (1,3);
--echo # Ref + LooseScan on t1:
explain select sum(t2.a)
from t2,t3
where (t3.a,t2.a) in (select kp1,kp2 from t1,t0 where t0.a=2);
select sum(t2.a)
from t2,t3
where (t3.a,t2.a) in (select kp1,kp2 from t1,t0 where t0.a=2);
drop table t0,t10;
drop table t1,t2,t3;
--echo # --echo #
--echo # BUG#920713: Wrong result (missing rows) with firstmatch+BNL, IN subquery, ... --echo # BUG#920713: Wrong result (missing rows) with firstmatch+BNL, IN subquery, ...
--echo # --echo #

View File

@ -2569,9 +2569,24 @@ CREATE TABLE t1 ( a INT PRIMARY KEY, b INT, KEY(b) );
INSERT INTO t1 VALUES INSERT INTO t1 VALUES
(1,2),(2,1),(3,3),(4,2),(5,5), (1,2),(2,1),(3,3),(4,2),(5,5),
(6,3),(7,1),(8,4),(9,3),(10,2); (6,3),(7,1),(8,4),(9,3),(10,2);
CREATE TABLE t2 ( c INT, d INT, UNIQUE KEY(c) ); CREATE TABLE t2 ( c INT, d INT, KEY(c) );
INSERT INTO t2 VALUES INSERT INTO t2 VALUES
(1,2),(2,1),(3,3),(4,2),(5,5),(6,3),(7,1); (1,2),(2,1),(3,3),(4,2),(5,5),(6,3),(7,1);
analyze table t1,t2;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
explain
SELECT a, b, d FROM t1, t2
WHERE ( b, d ) IN
( SELECT b, d FROM t1, t2 WHERE b = c );
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t2 ALL NULL NULL NULL NULL 7
1 PRIMARY t1 index b b 5 NULL 10 Using where; Using index; LooseScan
1 PRIMARY t2 ref c c 5 test.t1.b 1 Using where; FirstMatch(t1)
1 PRIMARY t1 ref b b 5 test.t1.b 2 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
SELECT a, b, d FROM t1, t2 SELECT a, b, d FROM t1, t2
WHERE ( b, d ) IN WHERE ( b, d ) IN
( SELECT b, d FROM t1, t2 WHERE b = c ); ( SELECT b, d FROM t1, t2 WHERE b = c );
@ -2596,6 +2611,52 @@ a b d
10 2 1 10 2 1
10 2 1 10 2 1
DROP TABLE t1, t2; DROP TABLE t1, t2;
# Another testcase for the above that still uses LooseScan:
create table t0(a int primary key);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t10(a int primary key);
insert into t10 select A.a + B.a* 10 + C.a * 100 from t0 A, t0 B, t0 C;
create table t1 (
pk int primary key auto_increment,
kp1 int,
kp2 int,
filler char(100),
key (kp1, kp2)
);
insert into t1 (kp1, kp2, filler)
select
A.a, B.a, 'filler-data'
from t0 A, t0 B;
create table t2 (a int, filler char(100), key(a));
create table t3 (a int);
insert into t3 values (1),(2);
insert into t2
select (A.a+1000*B.a)/20, 'filler_data' from t10 A, t0 B;
analyze table t1,t2,t3;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status Table is already up to date
test.t3 analyze status Engine-independent statistics collected
test.t3 analyze status OK
delete from t1 where kp2 in (1,3);
# Ref + LooseScan on t1:
explain select sum(t2.a)
from t2,t3
where (t3.a,t2.a) in (select kp1,kp2 from t1,t0 where t0.a=2);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t0 const PRIMARY PRIMARY 4 const 1 Using index
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 Using where
1 PRIMARY t1 ref kp1 kp1 5 test.t3.a 10 Using where; Using index; LooseScan
1 PRIMARY t2 ref a a 5 test.t1.kp2 19 Using index
select sum(t2.a)
from t2,t3
where (t3.a,t2.a) in (select kp1,kp2 from t1,t0 where t0.a=2);
sum(t2.a)
1640
drop table t0,t10;
drop table t1,t2,t3;
# #
# BUG#920713: Wrong result (missing rows) with firstmatch+BNL, IN subquery, ... # BUG#920713: Wrong result (missing rows) with firstmatch+BNL, IN subquery, ...
# #

View File

@ -67,9 +67,9 @@ insert into t4 select A.a + 10*B.a, A.a + 10*B.a, 'filler' from t0 A, t0 B;
explain select * from t0, t4 where explain select * from t0, t4 where
t4.b=t0.a and t4.a in (select max(t2.a) from t1, t2 group by t2.b); t4.b=t0.a and t4.a in (select max(t2.a) from t1, t2 group by t2.b);
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t0 ALL NULL NULL NULL NULL 10 1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 5
1 PRIMARY t4 ALL a NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join) 1 PRIMARY t0 ALL NULL NULL NULL NULL 10 Using where; Using join buffer (flat, BNL join)
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 test.t4.a 1 1 PRIMARY t4 ref a a 10 <subquery2>.max(t2.a),test.t0.a 1
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary 2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join) 2 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
insert into t4 select 100 + (B.a *100 + A.a), 100 + (B.a*100 + A.a), 'filler' from t4 A, t0 B; insert into t4 select 100 + (B.a *100 + A.a), 100 + (B.a*100 + A.a), 'filler' from t4 A, t0 B;
@ -77,9 +77,9 @@ explain select * from t4 where
t4.a in (select max(t2.a) from t1, t2 group by t2.b) and t4.a in (select max(t2.a) from t1, t2 group by t2.b) and
t4.b in (select max(t2.a) from t1, t2 group by t2.b); t4.b in (select max(t2.a) from t1, t2 group by t2.b);
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 5 1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 5
1 PRIMARY t4 ref a a 5 <subquery2>.max(t2.a) 12 Using index condition 1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 5 Using join buffer (flat, BNL join)
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 test.t4.b 1 1 PRIMARY t4 ref a a 10 <subquery2>.max(t2.a),<subquery3>.max(t2.a) 1
3 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary 3 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary
3 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join) 3 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary 2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary

View File

@ -279,7 +279,7 @@ insert into t2 values
explain select t1.* from t1 left join t2 on t2.a=t1.a; explain select t1.* from t1 left join t2 on t2.a=t1.a;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index NULL PRIMARY 10 NULL 2 Using index 1 SIMPLE t1 index NULL PRIMARY 10 NULL 2 Using index
1 SIMPLE t2 ref a a 3 test.t1.a 2 Using where 1 SIMPLE t2 ref a a 3 test.t1.a 1 Using where
drop table t1, t2; drop table t1, t2;
# #
# check UPDATE/DELETE that look like they could be eliminated # check UPDATE/DELETE that look like they could be eliminated

View File

@ -3607,6 +3607,33 @@ b row_number() over (partition by sum(a)+1)
2000 1 2000 1
drop table t1; drop table t1;
# #
# MDEV-18015: Assertion `global_status_var.global_memory_used == 0' failed when using UDF,
# window functions and views
#
create table t1 (id int, n1 int);
insert into t1 values (1,1),(2,1),(3,2),(4,4);
explain
select max(n1) over (partition by 'abc') from t1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using temporary
select max(n1) over (partition by 'abc') from t1;
max(n1) over (partition by 'abc')
4
4
4
4
explain
select rank() over (partition by 'abc' order by 'xyz') from t1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using temporary
select rank() over (partition by 'abc' order by 'xyz') from t1;
rank() over (partition by 'abc' order by 'xyz')
1
1
1
1
drop table t1;
#
# End of 10.2 tests # End of 10.2 tests
# #
# #

View File

@ -2325,6 +2325,22 @@ select b, row_number() over (partition by sum(a)+1) from t1 group by b;
drop table t1; drop table t1;
--echo #
--echo # MDEV-18015: Assertion `global_status_var.global_memory_used == 0' failed when using UDF,
--echo # window functions and views
--echo #
create table t1 (id int, n1 int);
insert into t1 values (1,1),(2,1),(3,2),(4,4);
explain
select max(n1) over (partition by 'abc') from t1;
select max(n1) over (partition by 'abc') from t1;
explain
select rank() over (partition by 'abc' order by 'xyz') from t1;
select rank() over (partition by 'abc' order by 'xyz') from t1;
drop table t1;
--echo # --echo #
--echo # End of 10.2 tests --echo # End of 10.2 tests
--echo # --echo #

View File

@ -9,5 +9,3 @@
# Do not use any TAB characters for whitespace. # Do not use any TAB characters for whitespace.
# #
############################################################################## ##############################################################################
archive_gis : MDEV-17297 wait for the fix and then enable it

View File

@ -0,0 +1,71 @@
#
# Preparatory cleanup.
#
drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
DROP TABLE IF EXISTS t1;
#
# We need a fixed timestamp to avoid varying results.
#
SET timestamp=1000000000;
#
# We need big packets.
#
# Capture initial value to reset at the end of the test
# Now adjust max_allowed_packet
SET @@global.max_allowed_packet= 10*1024*1024*1024;
Warnings:
Warning 1292 Truncated incorrect max_allowed_packet value: '10737418240'
max_allowed_packet is a global variable.
In order for the preceding change in max_allowed_packets' value
to be seen and used, we must start a new connection.
The change does not take effect with the current one.
For simplicity, we just disconnect / reconnect connection default here.
disconnect default;
connect default, localhost,root,,;
#
# Delete all existing binary logs.
#
RESET MASTER;
#
# Create a test table.
#
use mysqltest;
CREATE TABLE t1 (
c1 LONGTEXT
) DEFAULT CHARSET latin1;
#
# Show how many rows are affected by each statement.
#
#
# Insert some big rows.
#
insert 1024MB data twice
INSERT INTO t1 VALUES (REPEAT('ManyMegaByteBlck', 67108864));
affected rows: 1
INSERT INTO t1 VALUES (REPEAT('MegaByteBlckMany', 67108864));
affected rows: 1
#
# Flush all log buffers to the log file.
#
FLUSH LOGS;
affected rows: 0
#
# Call mysqlbinlog to display the log file contents.
# NOTE: The output of mysqlbinlog is redirected to
# $MYSQLTEST_VARDIR/tmp/mysqlbinlog_big_1.out
# If you want to examine it, disable remove_file
# at the bottom of the test script.
#
#
# Cleanup.
#
# reset variable value to pass testcase checks
SET @@global.max_allowed_packet = 16777216;
affected rows: 0
DROP TABLE t1;
affected rows: 0
drop database if exists mysqltest;
affected rows: 0
remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_big_1.out

View File

@ -0,0 +1,110 @@
# mysqlbinlog_big.test
#
# Show that mysqlbinlog can handle big rows.
#
#
# The *huge* output of mysqlbinlog will be redirected to
# $MYSQLTEST_VARDIR/$mysqlbinlog_output
#
--let $mysqlbinlog_output= tmp/mysqlbinlog_big_1.out
--source include/have_binlog_format_row.inc
--source include/have_log_bin.inc
# This is a big test.
--source include/big_test.inc
--echo #
--echo # Preparatory cleanup.
--echo #
--disable_warnings
drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
DROP TABLE IF EXISTS t1;
--enable_warnings
--echo #
--echo # We need a fixed timestamp to avoid varying results.
--echo #
SET timestamp=1000000000;
--echo #
--echo # We need big packets.
--echo #
--echo # Capture initial value to reset at the end of the test
# use let $<var> = query_get_value as FLUSH statements
# in the test will set @<var> values to NULL
let $orig_max_allowed_packet =
query_get_value(SELECT @@global.max_allowed_packet, @@global.max_allowed_packet, 1);
--echo # Now adjust max_allowed_packet
SET @@global.max_allowed_packet= 10*1024*1024*1024;
--echo max_allowed_packet is a global variable.
--echo In order for the preceding change in max_allowed_packets' value
--echo to be seen and used, we must start a new connection.
--echo The change does not take effect with the current one.
--echo For simplicity, we just disconnect / reconnect connection default here.
disconnect default;
connect (default, localhost,root,,);
--echo #
--echo # Delete all existing binary logs.
--echo #
RESET MASTER;
--echo #
--echo # Create a test table.
--echo #
use mysqltest;
eval CREATE TABLE t1 (
c1 LONGTEXT
) DEFAULT CHARSET latin1;
--echo #
--echo # Show how many rows are affected by each statement.
--echo #
--enable_info
--echo #
--echo # Insert some big rows.
--echo #
--echo insert 1024MB data twice
INSERT INTO t1 VALUES (REPEAT('ManyMegaByteBlck', 67108864));
INSERT INTO t1 VALUES (REPEAT('MegaByteBlckMany', 67108864));
--echo #
--echo # Flush all log buffers to the log file.
--echo #
FLUSH LOGS;
--echo #
--echo # Call mysqlbinlog to display the log file contents.
--echo # NOTE: The output of mysqlbinlog is redirected to
--echo # \$MYSQLTEST_VARDIR/$mysqlbinlog_output
--echo # If you want to examine it, disable remove_file
--echo # at the bottom of the test script.
--echo #
let $MYSQLD_DATADIR= `select @@datadir`;
--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
--replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/ /exec_time=[0-9]*/exec_time=#/ /end_log_pos [0-9]*/end_log_pos #/ /# at [0-9]*/# at #/ /Xid = [0-9]*/Xid = #/
--exec $MYSQL_BINLOG -B -v -v $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/$mysqlbinlog_output
--echo #
--echo # Cleanup.
--echo #
--echo # reset variable value to pass testcase checks
eval SET @@global.max_allowed_packet = $orig_max_allowed_packet;
DROP TABLE t1;
drop database if exists mysqltest;
--echo remove_file \$MYSQLTEST_VARDIR/$mysqlbinlog_output
#
# NOTE: If you want to see the *huge* mysqlbinlog output, disable next line:
#
--remove_file $MYSQLTEST_VARDIR/$mysqlbinlog_output

View File

@ -0,0 +1,39 @@
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED ENCRYPTED=YES;
INSERT INTO t1 VALUES(1, repeat('Nesamani', 10));
SELECT COUNT(*) FROM t1;
COUNT(*)
1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` int(11) NOT NULL,
`a` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED `ENCRYPTED`=YES
# Wait max 10 min for key encryption threads to encrypt all spaces
db.opt
t1.frm
t1.ibd
FLUSH TABLES t1 FOR EXPORT;
backup: t1
db.opt
t1.cfg
t1.frm
t1.ibd
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED ENCRYPTED=YES;
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
SELECT COUNT(*) FROM t1;
COUNT(*)
1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` int(11) NOT NULL,
`a` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED `ENCRYPTED`=YES
DROP TABLE t1;

View File

@ -0,0 +1,3 @@
--innodb-encrypt-tables=ON
--innodb-encryption-threads=4
--innodb-tablespaces-encryption

View File

@ -0,0 +1,45 @@
-- source include/have_innodb.inc
-- source include/have_example_key_management_plugin.inc
-- source include/not_valgrind.inc
-- source include/not_embedded.inc
let MYSQLD_DATADIR = `SELECT @@datadir`;
--let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED ENCRYPTED=YES;
INSERT INTO t1 VALUES(1, repeat('Nesamani', 10));
SELECT COUNT(*) FROM t1;
SHOW CREATE TABLE t1;
--echo # Wait max 10 min for key encryption threads to encrypt all spaces
--let $wait_timeout= 600
--let $wait_condition=SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND ROTATING_OR_FLUSHING <> 0
--source include/wait_condition.inc
let $restart_noprint=2;
--source include/restart_mysqld.inc
let MYSQLD_DATADIR =`SELECT @@datadir`;
--list_files $MYSQLD_DATADIR/test
FLUSH TABLES t1 FOR EXPORT;
perl;
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
ib_backup_tablespaces("test", "t1");
EOF
--list_files $MYSQLD_DATADIR/test
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED ENCRYPTED=YES;
ALTER TABLE t1 DISCARD TABLESPACE;
perl;
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
ib_discard_tablespaces("test", "t1");
ib_restore_tablespaces("test", "t1");
EOF
ALTER TABLE t1 IMPORT TABLESPACE;
SELECT COUNT(*) FROM t1;
SHOW CREATE TABLE t1;
DROP TABLE t1;

View File

@ -49,6 +49,8 @@ tr1 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE
DROP TABLE t1; DROP TABLE t1;
connection node_1; connection node_1;
CREATE EVENT event1 ON SCHEDULE AT '2038-01-01 23:59:59' DO SELECT 1; CREATE EVENT event1 ON SCHEDULE AT '2038-01-01 23:59:59' DO SELECT 1;
Warnings:
Warning 1105 Event scheduler is switched off, use SET GLOBAL event_scheduler=ON to enable it.
connection node_2; connection node_2;
SHOW CREATE EVENT event1; SHOW CREATE EVENT event1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation

View File

@ -25,7 +25,7 @@ CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoD
set session wsrep_sync_wait=15; set session wsrep_sync_wait=15;
--let $wsrep_slave_threads_orig = `SELECT @@wsrep_slave_threads` --let $wsrep_slave_threads_orig = `SELECT @@wsrep_slave_threads`
SET GLOBAL wsrep_slave_threads = 4; SET GLOBAL wsrep_slave_threads = 4;
--let $wait_condition = SELECT COUNT(*) = @@wsrep_slave_threads + 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND (STATE IS NULL OR STATE NOT LIKE 'InnoDB%'); --let $wait_condition = SELECT COUNT(*) = @@wsrep_slave_threads + 2 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND (STATE IS NULL OR STATE NOT LIKE 'InnoDB%');
--source include/wait_condition.inc --source include/wait_condition.inc
--connection node_1 --connection node_1

View File

@ -23,8 +23,7 @@ connection node_2;
Shutting down server ... Shutting down server ...
connection node_1; connection node_1;
connection node_2; connection node_2;
Starting server ... # restart: with restart_parameters
# restart: --wsrep_sst_auth=sst:sst --wsrep_sst_method=mysqldump --wsrep-sst-receive-address=127.0.0.1:16001
connection node_1; connection node_1;
connection node_2; connection node_2;
SELECT COUNT(*) > 0 FROM mysql.wsrep_streaming_log; SELECT COUNT(*) > 0 FROM mysql.wsrep_streaming_log;

View File

@ -43,7 +43,7 @@ UPDATE t1 SET f2 = REPEAT('y', 255);
--source include/wait_condition.inc --source include/wait_condition.inc
--connection node_2 --connection node_2
--echo Starting server ... --let $restart_noprint = 1
--let $restart_parameters = --wsrep_sst_auth=sst:sst --wsrep_sst_method=mysqldump --wsrep-sst-receive-address=127.0.0.1:$NODE_MYPORT_2 --let $restart_parameters = --wsrep_sst_auth=sst:sst --wsrep_sst_method=mysqldump --wsrep-sst-receive-address=127.0.0.1:$NODE_MYPORT_2
--source include/start_mysqld.inc --source include/start_mysqld.inc

View File

@ -1110,7 +1110,7 @@ id select_type table type possible_keys key key_len ref rows Extra
EXPLAIN SELECT * FROM t1 AS t2 STRAIGHT_JOIN t1 FORCE INDEX(b) WHERE t1.b=t2.b; EXPLAIN SELECT * FROM t1 AS t2 STRAIGHT_JOIN t1 FORCE INDEX(b) WHERE t1.b=t2.b;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 ALL b NULL NULL NULL 2 Using where 1 SIMPLE t2 ALL b NULL NULL NULL 2 Using where
1 SIMPLE t1 ref b b 5 test.t2.b 2 1 SIMPLE t1 ref b b 5 test.t2.b 1
EXPLAIN SELECT b FROM t1 FORCE INDEX(b); EXPLAIN SELECT b FROM t1 FORCE INDEX(b);
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index NULL b 5 NULL 2 Using index 1 SIMPLE t1 index NULL b 5 NULL 2 Using index

View File

@ -64,7 +64,7 @@ a b c
explain select * from t1 where b in (select c from t3); explain select * from t1 where b in (select c from t3);
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 Using where 1 PRIMARY t1 ALL NULL NULL NULL NULL 5 Using where
1 PRIMARY t3 ref c c 5 test.t1.b 2 Using index 1 PRIMARY t3 ref c c 5 test.t1.b 1 Using index
# select_type=PRIMARY, type=range,ref # select_type=PRIMARY, type=range,ref
select * from t1 where c in (select c from t3 where c between -2 and -1); select * from t1 where c in (select c from t3 where c between -2 and -1);
a b c a b c
@ -74,7 +74,7 @@ a b c
explain select * from t1 where c in (select c from t3 where c between -2 and -1); explain select * from t1 where c in (select c from t3 where c between -2 and -1);
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 range c c 5 NULL 3 Using index condition 1 PRIMARY t1 range c c 5 NULL 3 Using index condition
1 PRIMARY t3 index c c 5 NULL 6 Using where; Using index; Using join buffer (flat, BNL join) 1 PRIMARY t3 ref c c 5 test.t1.c 1 Using index
# select_type=UNION, type=system # select_type=UNION, type=system
# select_type=UNION RESULT, type=<union1,2> # select_type=UNION RESULT, type=<union1,2>
select * from t1 union select * from t2; select * from t1 union select * from t2;

View File

@ -74,7 +74,7 @@ IF(HAVE_MLOCK)
ENDIF() ENDIF()
ADD_CONVENIENCE_LIBRARY(mysys ${MYSYS_SOURCES}) ADD_CONVENIENCE_LIBRARY(mysys ${MYSYS_SOURCES})
TARGET_LINK_LIBRARIES(mysys dbug strings mysys_ssl ${ZLIB_LIBRARY} TARGET_LINK_LIBRARIES(mysys dbug strings ${ZLIB_LIBRARY}
${LIBNSL} ${LIBM} ${LIBRT} ${LIBDL} ${LIBSOCKET} ${LIBEXECINFO} ${CRC32_LIBRARY}) ${LIBNSL} ${LIBM} ${LIBRT} ${LIBDL} ${LIBSOCKET} ${LIBEXECINFO} ${CRC32_LIBRARY})
DTRACE_INSTRUMENT(mysys) DTRACE_INSTRUMENT(mysys)

View File

@ -25,16 +25,28 @@
#include <my_crypt.h> #include <my_crypt.h>
#include <ssl_compat.h> #include <ssl_compat.h>
#include <cstdint>
#ifdef HAVE_WOLFSSL
#define CTX_ALIGN 16
#else
#define CTX_ALIGN 0
#endif
class MyCTX class MyCTX
{ {
public: public:
char ctx_buf[EVP_CIPHER_CTX_SIZE]; char ctx_buf[EVP_CIPHER_CTX_SIZE + CTX_ALIGN];
EVP_CIPHER_CTX *ctx; EVP_CIPHER_CTX* ctx;
MyCTX() MyCTX()
{ {
ctx= (EVP_CIPHER_CTX *)ctx_buf; #if CTX_ALIGN > 0
uintptr_t p= ((uintptr_t)ctx_buf + (CTX_ALIGN - 1)) & ~(CTX_ALIGN - 1);
ctx = reinterpret_cast<EVP_CIPHER_CTX*>(p);
#else
ctx = (EVP_CIPHER_CTX*)ctx_buf;
#endif
EVP_CIPHER_CTX_init(ctx); EVP_CIPHER_CTX_init(ctx);
} }
virtual ~MyCTX() virtual ~MyCTX()
@ -149,8 +161,11 @@ public:
uchar mask[MY_AES_BLOCK_SIZE]; uchar mask[MY_AES_BLOCK_SIZE];
uint mlen; uint mlen;
my_aes_crypt(MY_AES_ECB, ENCRYPTION_FLAG_ENCRYPT | ENCRYPTION_FLAG_NOPAD, int rc= my_aes_crypt(MY_AES_ECB, ENCRYPTION_FLAG_ENCRYPT | ENCRYPTION_FLAG_NOPAD,
oiv, sizeof(mask), mask, &mlen, key, klen, 0, 0); oiv, sizeof(mask), mask, &mlen, key, klen, 0, 0);
DBUG_ASSERT(rc == MY_AES_OK);
if (rc)
return rc;
DBUG_ASSERT(mlen == sizeof(mask)); DBUG_ASSERT(mlen == sizeof(mask));
for (uint i=0; i < buf_len; i++) for (uint i=0; i < buf_len; i++)

View File

@ -25,8 +25,8 @@ MYSQL_ADD_PLUGIN(auth_ed25519 server_ed25519.c ${REF10_SOURCES} MODULE_ONLY)
# client plugin and unit test ed25519-t can use the library # client plugin and unit test ed25519-t can use the library
#MYSQL_ADD_PLUGIN(client_ed25519 client_ed25519.c MODULE_ONLY #MYSQL_ADD_PLUGIN(client_ed25519 client_ed25519.c MODULE_ONLY
# CLIENT LINK_LIBRARIES mysys_ssl ref10 COMPONENT ClientPlugins) # CLIENT LINK_LIBRARIES ref10 mysys_ssl COMPONENT ClientPlugins)
IF(WITH_UNIT_TESTS) IF(WITH_UNIT_TESTS)
MY_ADD_TESTS(ed25519 LINK_LIBRARIES mysys ref10) MY_ADD_TESTS(ed25519 LINK_LIBRARIES ref10 mysys_ssl)
ENDIF() ENDIF()

View File

@ -11246,3 +11246,58 @@ bool Field::val_str_nopad(MEM_ROOT *mem_root, LEX_CSTRING *to)
return rc; return rc;
} }
void Field::print_key_value(String *out, uint32 length)
{
if (charset() == &my_charset_bin)
print_key_value_binary(out, ptr, length);
else
val_str(out);
}
void Field_string::print_key_value(String *out, uint32 length)
{
if (charset() == &my_charset_bin)
{
size_t len= field_charset->cset->lengthsp(field_charset, (const char*) ptr, length);
print_key_value_binary(out, ptr, static_cast<uint32>(len));
}
else
{
THD *thd= get_thd();
sql_mode_t sql_mode_backup= thd->variables.sql_mode;
thd->variables.sql_mode&= ~MODE_PAD_CHAR_TO_FULL_LENGTH;
val_str(out,out);
thd->variables.sql_mode= sql_mode_backup;
}
}
void Field_varstring::print_key_value(String *out, uint32 length)
{
if (charset() == &my_charset_bin)
print_key_value_binary(out, get_data(), get_length());
else
val_str(out,out);
}
void Field_blob::print_key_value(String *out, uint32 length)
{
if (charset() == &my_charset_bin)
{
uchar *blob;
memcpy(&blob, ptr+packlength, sizeof(uchar*));
print_key_value_binary(out, blob, get_length());
}
else
val_str(out, out);
}
void Field::print_key_value_binary(String *out, const uchar* key, uint32 length)
{
out->append_semi_hex((const char*)key, length, charset());
}

View File

@ -1442,6 +1442,8 @@ public:
virtual int set_time() { return 1; } virtual int set_time() { return 1; }
bool set_warning(Sql_condition::enum_warning_level, unsigned int code, bool set_warning(Sql_condition::enum_warning_level, unsigned int code,
int cuted_increment, ulong current_row=0) const; int cuted_increment, ulong current_row=0) const;
virtual void print_key_value(String *out, uint32 length);
void print_key_value_binary(String *out, const uchar* key, uint32 length);
protected: protected:
bool set_warning(unsigned int code, int cuted_increment) const bool set_warning(unsigned int code, int cuted_increment) const
{ {
@ -3699,6 +3701,7 @@ public:
{ return charset() == &my_charset_bin ? FALSE : TRUE; } { return charset() == &my_charset_bin ? FALSE : TRUE; }
Field *make_new_field(MEM_ROOT *root, TABLE *new_table, bool keep_type); Field *make_new_field(MEM_ROOT *root, TABLE *new_table, bool keep_type);
virtual uint get_key_image(uchar *buff,uint length, imagetype type); virtual uint get_key_image(uchar *buff,uint length, imagetype type);
void print_key_value(String *out, uint32 length);
private: private:
int save_field_metadata(uchar *first_byte); int save_field_metadata(uchar *first_byte);
}; };
@ -3815,6 +3818,7 @@ public:
uint is_equal(Create_field *new_field); uint is_equal(Create_field *new_field);
void hash(ulong *nr, ulong *nr2); void hash(ulong *nr, ulong *nr2);
uint length_size() { return length_bytes; } uint length_size() { return length_bytes; }
void print_key_value(String *out, uint32 length);
private: private:
int save_field_metadata(uchar *first_byte); int save_field_metadata(uchar *first_byte);
}; };
@ -4163,6 +4167,7 @@ public:
uint32 char_length() const; uint32 char_length() const;
uint32 character_octet_length() const; uint32 character_octet_length() const;
uint is_equal(Create_field *new_field); uint is_equal(Create_field *new_field);
void print_key_value(String *out, uint32 length);
friend void TABLE::remember_blob_values(String *blob_storage); friend void TABLE::remember_blob_values(String *blob_storage);
friend void TABLE::restore_blob_values(String *blob_storage); friend void TABLE::restore_blob_values(String *blob_storage);
@ -4290,6 +4295,10 @@ public:
geometry_type get_geometry_type() { return geom_type; }; geometry_type get_geometry_type() { return geom_type; };
static geometry_type geometry_type_merge(geometry_type, geometry_type); static geometry_type geometry_type_merge(geometry_type, geometry_type);
uint get_srid() { return srid; } uint get_srid() { return srid; }
void print_key_value(String *out, uint32 length)
{
out->append(STRING_WITH_LEN("unprintable_geometry_value"));
}
}; };
uint gis_field_options_image(uchar *buff, List<Create_field> &create_fields); uint gis_field_options_image(uchar *buff, List<Create_field> &create_fields);
@ -4608,6 +4617,11 @@ public:
{ {
return get_mm_leaf_int(param, key_part, cond, op, value, true); return get_mm_leaf_int(param, key_part, cond, op, value, true);
} }
void print_key_value(String *out, uint32 length)
{
val_int_as_str(out, 1);
}
private: private:
virtual size_t do_last_null_byte() const; virtual size_t do_last_null_byte() const;
int save_field_metadata(uchar *first_byte); int save_field_metadata(uchar *first_byte);

View File

@ -8199,6 +8199,7 @@ int ha_partition::info(uint flag)
stats.delete_length= 0; stats.delete_length= 0;
stats.check_time= 0; stats.check_time= 0;
stats.checksum= 0; stats.checksum= 0;
stats.checksum_null= TRUE;
for (i= bitmap_get_first_set(&m_part_info->read_partitions); for (i= bitmap_get_first_set(&m_part_info->read_partitions);
i < m_tot_parts; i < m_tot_parts;
i= bitmap_get_next_set(&m_part_info->read_partitions, i)) i= bitmap_get_next_set(&m_part_info->read_partitions, i))
@ -8212,7 +8213,11 @@ int ha_partition::info(uint flag)
stats.delete_length+= file->stats.delete_length; stats.delete_length+= file->stats.delete_length;
if (file->stats.check_time > stats.check_time) if (file->stats.check_time > stats.check_time)
stats.check_time= file->stats.check_time; stats.check_time= file->stats.check_time;
stats.checksum+= file->stats.checksum; if (!file->stats.checksum_null)
{
stats.checksum+= file->stats.checksum;
stats.checksum_null= FALSE;
}
} }
if (stats.records && stats.records < 2 && if (stats.records && stats.records < 2 &&
!(m_file[0]->ha_table_flags() & HA_STATS_RECORDS_IS_EXACT)) !(m_file[0]->ha_table_flags() & HA_STATS_RECORDS_IS_EXACT))
@ -8369,6 +8374,7 @@ void ha_partition::get_dynamic_partition_info(PARTITION_STATS *stat_info,
stat_info->update_time= file->stats.update_time; stat_info->update_time= file->stats.update_time;
stat_info->check_time= file->stats.check_time; stat_info->check_time= file->stats.check_time;
stat_info->check_sum= file->stats.checksum; stat_info->check_sum= file->stats.checksum;
stat_info->check_sum_null= file->stats.checksum_null;
} }
@ -10585,6 +10591,64 @@ void ha_partition::init_table_handle_for_HANDLER()
} }
/**
Calculate the checksum of the table (all partitions)
*/
int ha_partition::pre_calculate_checksum()
{
int error;
DBUG_ENTER("ha_partition::pre_calculate_checksum");
m_pre_calling= TRUE;
if ((table_flags() & (HA_HAS_OLD_CHECKSUM | HA_HAS_NEW_CHECKSUM)))
{
handler **file= m_file;
do
{
if ((error= (*file)->pre_calculate_checksum()))
{
DBUG_RETURN(error);
}
} while (*(++file));
}
DBUG_RETURN(0);
}
int ha_partition::calculate_checksum()
{
int error;
stats.checksum= 0;
stats.checksum_null= TRUE;
DBUG_ENTER("ha_partition::calculate_checksum");
if (!m_pre_calling)
{
if ((error= pre_calculate_checksum()))
{
m_pre_calling= FALSE;
DBUG_RETURN(error);
}
}
m_pre_calling= FALSE;
handler **file= m_file;
do
{
if ((error= (*file)->calculate_checksum()))
{
DBUG_RETURN(error);
}
if (!(*file)->stats.checksum_null)
{
stats.checksum+= (*file)->stats.checksum;
stats.checksum_null= FALSE;
}
} while (*(++file));
DBUG_RETURN(0);
}
/**************************************************************************** /****************************************************************************
MODULE enable/disable indexes MODULE enable/disable indexes
****************************************************************************/ ****************************************************************************/

View File

@ -1441,6 +1441,9 @@ public:
void append_row_to_str(String &str); void append_row_to_str(String &str);
public: public:
virtual int pre_calculate_checksum();
virtual int calculate_checksum();
/* Enabled keycache for performance reasons, WL#4571 */ /* Enabled keycache for performance reasons, WL#4571 */
virtual int assign_to_keycache(THD* thd, HA_CHECK_OPT *check_opt); virtual int assign_to_keycache(THD* thd, HA_CHECK_OPT *check_opt);
virtual int preload_keys(THD* thd, HA_CHECK_OPT* check_opt); virtual int preload_keys(THD* thd, HA_CHECK_OPT* check_opt);

View File

@ -4859,6 +4859,7 @@ void handler::get_dynamic_partition_info(PARTITION_STATS *stat_info,
stat_info->update_time= stats.update_time; stat_info->update_time= stats.update_time;
stat_info->check_time= stats.check_time; stat_info->check_time= stats.check_time;
stat_info->check_sum= stats.checksum; stat_info->check_sum= stats.checksum;
stat_info->check_sum_null= stats.checksum_null;
} }
@ -5013,7 +5014,7 @@ int handler::calculate_checksum()
return HA_ERR_ABORTED_BY_USER; return HA_ERR_ABORTED_BY_USER;
ha_checksum row_crc= 0; ha_checksum row_crc= 0;
error= table->file->ha_rnd_next(table->record[0]); error= ha_rnd_next(table->record[0]);
if (error) if (error)
break; break;
@ -5067,7 +5068,7 @@ int handler::calculate_checksum()
stats.checksum+= row_crc; stats.checksum+= row_crc;
} }
table->file->ha_rnd_end(); ha_rnd_end();
return error == HA_ERR_END_OF_FILE ? 0 : error; return error == HA_ERR_END_OF_FILE ? 0 : error;
} }

View File

@ -1040,7 +1040,7 @@ typedef bool (stat_print_fn)(THD *thd, const char *type, size_t type_len,
const char *file, size_t file_len, const char *file, size_t file_len,
const char *status, size_t status_len); const char *status, size_t status_len);
enum ha_stat_type { HA_ENGINE_STATUS, HA_ENGINE_LOGS, HA_ENGINE_MUTEX }; enum ha_stat_type { HA_ENGINE_STATUS, HA_ENGINE_LOGS, HA_ENGINE_MUTEX };
extern st_plugin_int *hton2plugin[MAX_HA]; extern MYSQL_PLUGIN_IMPORT st_plugin_int *hton2plugin[MAX_HA];
/* Transaction log maintains type definitions */ /* Transaction log maintains type definitions */
enum log_status enum log_status
@ -1929,6 +1929,7 @@ typedef struct {
time_t check_time; time_t check_time;
time_t update_time; time_t update_time;
ulonglong check_sum; ulonglong check_sum;
bool check_sum_null;
} PARTITION_STATS; } PARTITION_STATS;
#define UNDEF_NODEGROUP 65535 #define UNDEF_NODEGROUP 65535
@ -2890,6 +2891,7 @@ public:
time_t update_time; time_t update_time;
uint block_size; /* index block size */ uint block_size; /* index block size */
ha_checksum checksum; ha_checksum checksum;
bool checksum_null;
/* /*
number of buffer bytes that native mrr implementation needs, number of buffer bytes that native mrr implementation needs,
@ -2901,7 +2903,7 @@ public:
index_file_length(0), max_index_file_length(0), delete_length(0), index_file_length(0), max_index_file_length(0), delete_length(0),
auto_increment_value(0), records(0), deleted(0), mean_rec_length(0), auto_increment_value(0), records(0), deleted(0), mean_rec_length(0),
create_time(0), check_time(0), update_time(0), block_size(0), create_time(0), check_time(0), update_time(0), block_size(0),
mrr_length_per_rec(0) checksum(0), checksum_null(FALSE), mrr_length_per_rec(0)
{} {}
}; };
@ -3934,6 +3936,7 @@ public:
virtual uint max_supported_key_part_length() const { return 255; } virtual uint max_supported_key_part_length() const { return 255; }
virtual uint min_record_length(uint options) const { return 1; } virtual uint min_record_length(uint options) const { return 1; }
virtual int pre_calculate_checksum() { return 0; }
virtual int calculate_checksum(); virtual int calculate_checksum();
virtual bool is_crashed() const { return 0; } virtual bool is_crashed() const { return 0; }
virtual bool auto_repair(int error) const { return 0; } virtual bool auto_repair(int error) const { return 0; }

View File

@ -3915,7 +3915,6 @@ int subselect_single_select_engine::exec()
tab->save_read_record= tab->read_record.read_record_func; tab->save_read_record= tab->read_record.read_record_func;
tab->read_record.read_record_func= rr_sequential; tab->read_record.read_record_func= rr_sequential;
tab->read_first_record= read_first_record_seq; tab->read_first_record= read_first_record_seq;
tab->read_record.record= tab->table->record[0];
tab->read_record.thd= join->thd; tab->read_record.thd= join->thd;
tab->read_record.ref_length= tab->table->file->ref_length; tab->read_record.ref_length= tab->table->file->ref_length;
tab->read_record.unlock_row= rr_unlock_row; tab->read_record.unlock_row= rr_unlock_row;
@ -3933,7 +3932,6 @@ int subselect_single_select_engine::exec()
for (JOIN_TAB **ptab= changed_tabs; ptab != last_changed_tab; ptab++) for (JOIN_TAB **ptab= changed_tabs; ptab != last_changed_tab; ptab++)
{ {
JOIN_TAB *tab= *ptab; JOIN_TAB *tab= *ptab;
tab->read_record.record= 0;
tab->read_record.ref_length= 0; tab->read_record.ref_length= 0;
tab->read_first_record= tab->save_read_first_record; tab->read_first_record= tab->save_read_first_record;
tab->read_record.read_record_func= tab->save_read_record; tab->read_record.read_record_func= tab->save_read_record;

View File

@ -44,11 +44,6 @@ public:
first_check= true; first_check= true;
} }
void cleanup()
{
group_fields.empty();
}
/* /*
Check if the current row is in a different group than the previous row Check if the current row is in a different group than the previous row
this function was called for. this function was called for.
@ -86,6 +81,10 @@ public:
} }
return 0; return 0;
} }
~Group_bound_tracker()
{
group_fields.delete_elements();
}
private: private:
List<Cached_item> group_fields; List<Cached_item> group_fields;
@ -213,7 +212,6 @@ public:
{ {
if (peer_tracker) if (peer_tracker)
{ {
peer_tracker->cleanup();
delete peer_tracker; delete peer_tracker;
peer_tracker= NULL; peer_tracker= NULL;
} }
@ -284,7 +282,6 @@ class Item_sum_dense_rank: public Item_sum_int
{ {
if (peer_tracker) if (peer_tracker)
{ {
peer_tracker->cleanup();
delete peer_tracker; delete peer_tracker;
peer_tracker= NULL; peer_tracker= NULL;
} }
@ -548,7 +545,6 @@ class Item_sum_percent_rank: public Item_sum_window_with_row_count
{ {
if (peer_tracker) if (peer_tracker)
{ {
peer_tracker->cleanup();
delete peer_tracker; delete peer_tracker;
peer_tracker= NULL; peer_tracker= NULL;
} }

View File

@ -8322,8 +8322,10 @@ mysqld_get_one_option(int optid, const struct my_option *opt, char *argument)
opt_specialflag|= SPECIAL_NO_HOST_CACHE; opt_specialflag|= SPECIAL_NO_HOST_CACHE;
break; break;
case (int) OPT_SKIP_RESOLVE: case (int) OPT_SKIP_RESOLVE:
opt_skip_name_resolve= 1; if ((opt_skip_name_resolve= (argument != disabled_my_option)))
opt_specialflag|=SPECIAL_NO_RESOLVE; opt_specialflag|= SPECIAL_NO_RESOLVE;
else
opt_specialflag&= ~SPECIAL_NO_RESOLVE;
break; break;
case (int) OPT_WANT_CORE: case (int) OPT_WANT_CORE:
test_flags |= TEST_CORE_ON_SIGNAL; test_flags |= TEST_CORE_ON_SIGNAL;
@ -8382,6 +8384,8 @@ mysqld_get_one_option(int optid, const struct my_option *opt, char *argument)
break; break;
case OPT_PLUGIN_LOAD: case OPT_PLUGIN_LOAD:
free_list(opt_plugin_load_list_ptr); free_list(opt_plugin_load_list_ptr);
if (argument == disabled_my_option)
break; // Resets plugin list
/* fall through */ /* fall through */
case OPT_PLUGIN_LOAD_ADD: case OPT_PLUGIN_LOAD_ADD:
opt_plugin_load_list_ptr->push_back(new i_string(argument)); opt_plugin_load_list_ptr->push_back(new i_string(argument));

View File

@ -15835,12 +15835,10 @@ static void print_key_value(String *out, const KEY_PART_INFO *key_part,
{ {
// Byte 0 of a nullable key is the null-byte. If set, key is NULL. // Byte 0 of a nullable key is the null-byte. If set, key is NULL.
if (field->real_maybe_null() && *key) if (field->real_maybe_null() && *key)
{
out->append(STRING_WITH_LEN("NULL")); out->append(STRING_WITH_LEN("NULL"));
else goto next;
(field->type() == MYSQL_TYPE_GEOMETRY) }
? out->append(STRING_WITH_LEN("unprintable_geometry_value"))
: out->append(STRING_WITH_LEN("unprintable_blob_value"));
goto next;
} }
if (field->real_maybe_null()) if (field->real_maybe_null())
@ -15859,28 +15857,12 @@ static void print_key_value(String *out, const KEY_PART_INFO *key_part,
store_length--; store_length--;
} }
/*
Binary data cannot be converted to UTF8 which is what the
optimizer trace expects. If the column is binary, the hex
representation is printed to the trace instead.
*/
if (field->flags & BINARY_FLAG)
{
out->append("0x");
for (uint i = 0; i < store_length; i++)
{
out->append(_dig_vec_lower[*(key + i) >> 4]);
out->append(_dig_vec_lower[*(key + i) & 0x0F]);
}
goto next;
}
field->set_key_image(key, key_part->length); field->set_key_image(key, key_part->length);
if (field->type() == MYSQL_TYPE_BIT) field->print_key_value(&tmp, key_part->length);
(void)field->val_int_as_str(&tmp, 1); // may change tmp's charset if (field->charset() == &my_charset_bin)
out->append(tmp.ptr(), tmp.length(), tmp.charset());
else else
field->val_str(&tmp); // may change tmp's charset tmp.print(out, system_charset_info);
out->append(tmp.ptr(), tmp.length(), tmp.charset());
next: next:
if (key + store_length < key_end) if (key + store_length < key_end)

View File

@ -77,7 +77,6 @@ bool init_read_record_idx(READ_RECORD *info, THD *thd, TABLE *table,
bzero((char*) info,sizeof(*info)); bzero((char*) info,sizeof(*info));
info->thd= thd; info->thd= thd;
info->table= table; info->table= table;
info->record= table->record[0];
info->print_error= print_error; info->print_error= print_error;
info->unlock_row= rr_unlock_row; info->unlock_row= rr_unlock_row;
@ -210,7 +209,6 @@ bool init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
else else
{ {
empty_record(table); empty_record(table);
info->record= table->record[0];
info->ref_length= (uint)table->file->ref_length; info->ref_length= (uint)table->file->ref_length;
} }
info->select=select; info->select=select;
@ -393,7 +391,7 @@ static int rr_index_first(READ_RECORD *info)
return tmp; return tmp;
} }
tmp= info->table->file->ha_index_first(info->record); tmp= info->table->file->ha_index_first(info->record());
info->read_record_func= rr_index; info->read_record_func= rr_index;
if (tmp) if (tmp)
tmp= rr_handle_error(info, tmp); tmp= rr_handle_error(info, tmp);
@ -416,7 +414,7 @@ static int rr_index_first(READ_RECORD *info)
static int rr_index_last(READ_RECORD *info) static int rr_index_last(READ_RECORD *info)
{ {
int tmp= info->table->file->ha_index_last(info->record); int tmp= info->table->file->ha_index_last(info->record());
info->read_record_func= rr_index_desc; info->read_record_func= rr_index_desc;
if (tmp) if (tmp)
tmp= rr_handle_error(info, tmp); tmp= rr_handle_error(info, tmp);
@ -442,7 +440,7 @@ static int rr_index_last(READ_RECORD *info)
static int rr_index(READ_RECORD *info) static int rr_index(READ_RECORD *info)
{ {
int tmp= info->table->file->ha_index_next(info->record); int tmp= info->table->file->ha_index_next(info->record());
if (tmp) if (tmp)
tmp= rr_handle_error(info, tmp); tmp= rr_handle_error(info, tmp);
return tmp; return tmp;
@ -467,7 +465,7 @@ static int rr_index(READ_RECORD *info)
static int rr_index_desc(READ_RECORD *info) static int rr_index_desc(READ_RECORD *info)
{ {
int tmp= info->table->file->ha_index_prev(info->record); int tmp= info->table->file->ha_index_prev(info->record());
if (tmp) if (tmp)
tmp= rr_handle_error(info, tmp); tmp= rr_handle_error(info, tmp);
return tmp; return tmp;
@ -477,7 +475,7 @@ static int rr_index_desc(READ_RECORD *info)
int rr_sequential(READ_RECORD *info) int rr_sequential(READ_RECORD *info)
{ {
int tmp; int tmp;
while ((tmp= info->table->file->ha_rnd_next(info->record))) while ((tmp= info->table->file->ha_rnd_next(info->record())))
{ {
tmp= rr_handle_error(info, tmp); tmp= rr_handle_error(info, tmp);
break; break;
@ -493,7 +491,7 @@ static int rr_from_tempfile(READ_RECORD *info)
{ {
if (my_b_read(info->io_cache,info->ref_pos,info->ref_length)) if (my_b_read(info->io_cache,info->ref_pos,info->ref_length))
return -1; /* End of file */ return -1; /* End of file */
if (!(tmp= info->table->file->ha_rnd_pos(info->record,info->ref_pos))) if (!(tmp= info->table->file->ha_rnd_pos(info->record(), info->ref_pos)))
break; break;
/* The following is extremely unlikely to happen */ /* The following is extremely unlikely to happen */
if (tmp == HA_ERR_KEY_NOT_FOUND) if (tmp == HA_ERR_KEY_NOT_FOUND)
@ -543,7 +541,7 @@ int rr_from_pointers(READ_RECORD *info)
cache_pos= info->cache_pos; cache_pos= info->cache_pos;
info->cache_pos+= info->ref_length; info->cache_pos+= info->ref_length;
if (!(tmp= info->table->file->ha_rnd_pos(info->record,cache_pos))) if (!(tmp= info->table->file->ha_rnd_pos(info->record(), cache_pos)))
break; break;
/* The following is extremely unlikely to happen */ /* The following is extremely unlikely to happen */
@ -638,7 +636,7 @@ static int rr_from_cache(READ_RECORD *info)
else else
{ {
error=0; error=0;
memcpy(info->record,info->cache_pos, memcpy(info->record(), info->cache_pos,
(size_t) info->table->s->reclength); (size_t) info->table->s->reclength);
} }
info->cache_pos+=info->reclength; info->cache_pos+=info->reclength;

View File

@ -19,9 +19,10 @@
#pragma interface /* gcc class implementation */ #pragma interface /* gcc class implementation */
#endif #endif
#include "table.h"
struct st_join_table; struct st_join_table;
class handler; class handler;
struct TABLE;
class THD; class THD;
class SQL_SELECT; class SQL_SELECT;
class Copy_field; class Copy_field;
@ -58,7 +59,6 @@ struct READ_RECORD
SQL_SELECT *select; SQL_SELECT *select;
uint ref_length, reclength, rec_cache_size, error_offset; uint ref_length, reclength, rec_cache_size, error_offset;
uchar *ref_pos; /* pointer to form->refpos */ uchar *ref_pos; /* pointer to form->refpos */
uchar *record;
uchar *rec_buf; /* to read field values after filesort */ uchar *rec_buf; /* to read field values after filesort */
uchar *cache,*cache_pos,*cache_end,*read_positions; uchar *cache,*cache_pos,*cache_end,*read_positions;
struct st_sort_addon_field *addon_field; /* Pointer to the fields info */ struct st_sort_addon_field *addon_field; /* Pointer to the fields info */
@ -67,6 +67,7 @@ struct READ_RECORD
void (*unpack)(struct st_sort_addon_field *, uchar *, uchar *); void (*unpack)(struct st_sort_addon_field *, uchar *, uchar *);
int read_record() { return read_record_func(this); } int read_record() { return read_record_func(this); }
uchar *record() const { return table->record[0]; }
/* /*
SJ-Materialization runtime may need to read fields from the materialized SJ-Materialization runtime may need to read fields from the materialized

View File

@ -27,8 +27,22 @@
#include <my_bitmap.h> #include <my_bitmap.h>
#include <my_bit.h> #include <my_bit.h>
template <uint width> class Bitmap template <uint width> class Bitmap
{ {
/*
Workaround GCC optimizer bug (generating SSE instuctions on unaligned data)
*/
#if defined (__GNUC__) && defined(__x86_64__) && (__GNUC__ < 6) && !defined(__clang__)
#define NEED_GCC_NO_SSE_WORKAROUND
#endif
#ifdef NEED_GCC_NO_SSE_WORKAROUND
#pragma GCC push_options
#pragma GCC target ("no-sse")
#endif
uint32 buffer[(width + 31) / 32]; uint32 buffer[(width + 31) / 32];
public: public:
Bitmap() Bitmap()
@ -264,8 +278,15 @@ public:
} }
enum { BITMAP_END = width }; enum { BITMAP_END = width };
}; };
#ifdef NEED_GCC_NO_SSE_WORKAROUND
#pragma GCC pop_options
#undef NEED_GCC_NO_SSE_WORKAROUND
#endif
}; };
/* An iterator to quickly walk over bits in ulonglong bitmap. */ /* An iterator to quickly walk over bits in ulonglong bitmap. */
class Table_map_iterator class Table_map_iterator
{ {

View File

@ -941,6 +941,11 @@ void Explain_select::print_explain_json(Explain_query *query,
writer->add_member("outer_ref_condition"); writer->add_member("outer_ref_condition");
write_item(writer, outer_ref_cond); write_item(writer, outer_ref_cond);
} }
if (pseudo_bits_cond)
{
writer->add_member("pseudo_bits_condition");
write_item(writer, pseudo_bits_cond);
}
/* we do not print HAVING which always evaluates to TRUE */ /* we do not print HAVING which always evaluates to TRUE */
if (having || (having_value == Item::COND_FALSE)) if (having || (having_value == Item::COND_FALSE))

View File

@ -236,6 +236,7 @@ public:
/* Expensive constant condition */ /* Expensive constant condition */
Item *exec_const_cond; Item *exec_const_cond;
Item *outer_ref_cond; Item *outer_ref_cond;
Item *pseudo_bits_cond;
/* HAVING condition */ /* HAVING condition */
Item *having; Item *having;

View File

@ -5900,18 +5900,16 @@ add_key_field(JOIN *join,
(*key_fields)->level= and_level; (*key_fields)->level= and_level;
(*key_fields)->optimize= optimize; (*key_fields)->optimize= optimize;
/* /*
If the condition has form "tbl.keypart = othertbl.field" and If the condition we are analyzing is NULL-rejecting and at least
othertbl.field can be NULL, there will be no matches if othertbl.field one side of the equalities is NULLable, mark the KEY_FIELD object as
has NULL value. null-rejecting. This property is used by:
We use null_rejecting in add_not_null_conds() to add - add_not_null_conds() to add "column IS NOT NULL" conditions
'othertbl.field IS NOT NULL' to tab->select_cond. - best_access_path() to produce better estimates for NULL-able unique keys.
*/ */
{ {
Item *real= (*value)->real_item(); if ((cond->functype() == Item_func::EQ_FUNC ||
if (((cond->functype() == Item_func::EQ_FUNC) || cond->functype() == Item_func::MULT_EQUAL_FUNC) &&
(cond->functype() == Item_func::MULT_EQUAL_FUNC)) && ((*value)->maybe_null || field->real_maybe_null()))
(real->type() == Item::FIELD_ITEM) &&
((Item_field*)real)->field->maybe_null())
(*key_fields)->null_rejecting= true; (*key_fields)->null_rejecting= true;
else else
(*key_fields)->null_rejecting= false; (*key_fields)->null_rejecting= false;
@ -7235,6 +7233,7 @@ best_access_path(JOIN *join,
ulong key_flags; ulong key_flags;
uint key_parts; uint key_parts;
key_part_map found_part= 0; key_part_map found_part= 0;
key_part_map notnull_part=0; // key parts which won't have NULL in lookup tuple.
table_map found_ref= 0; table_map found_ref= 0;
uint key= keyuse->key; uint key= keyuse->key;
filter= 0; filter= 0;
@ -7294,6 +7293,9 @@ best_access_path(JOIN *join,
if (!(keyuse->used_tables & ~join->const_table_map)) if (!(keyuse->used_tables & ~join->const_table_map))
const_part|= keyuse->keypart_map; const_part|= keyuse->keypart_map;
if (!keyuse->val->maybe_null || keyuse->null_rejecting)
notnull_part|=keyuse->keypart_map;
double tmp2= prev_record_reads(join->positions, idx, double tmp2= prev_record_reads(join->positions, idx,
(found_ref | keyuse->used_tables)); (found_ref | keyuse->used_tables));
if (tmp2 < best_prev_record_reads) if (tmp2 < best_prev_record_reads)
@ -7347,12 +7349,19 @@ best_access_path(JOIN *join,
loose_scan_opt.check_ref_access_part1(s, key, start_key, found_part); loose_scan_opt.check_ref_access_part1(s, key, start_key, found_part);
/* Check if we found full key */ /* Check if we found full key */
if (found_part == PREV_BITS(uint, key_parts) && const key_part_map all_key_parts= PREV_BITS(uint, key_parts);
!ref_or_null_part) if (found_part == all_key_parts && !ref_or_null_part)
{ /* use eq key */ { /* use eq key */
max_key_part= (uint) ~0; max_key_part= (uint) ~0;
if ((key_flags & (HA_NOSAME | HA_NULL_PART_KEY)) == HA_NOSAME || /*
MY_TEST(key_flags & HA_EXT_NOSAME)) If the index is a unique index (1), and
- all its columns are not null (2), or
- equalities we are using reject NULLs (3)
then the estimate is rows=1.
*/
if ((key_flags & (HA_NOSAME | HA_EXT_NOSAME)) && // (1)
(!(key_flags & HA_NULL_PART_KEY) || // (2)
all_key_parts == notnull_part)) // (3)
{ {
trace_access_idx.add("access_type", "eq_ref") trace_access_idx.add("access_type", "eq_ref")
.add("index", keyinfo->name); .add("index", keyinfo->name);
@ -10565,8 +10574,16 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j,
uint maybe_null= MY_TEST(keyinfo->key_part[i].null_bit); uint maybe_null= MY_TEST(keyinfo->key_part[i].null_bit);
j->ref.items[i]=keyuse->val; // Save for cond removal j->ref.items[i]=keyuse->val; // Save for cond removal
j->ref.cond_guards[i]= keyuse->cond_guard; j->ref.cond_guards[i]= keyuse->cond_guard;
if (keyuse->null_rejecting)
/*
Set ref.null_rejecting to true only if we are going to inject a
"keyuse->val IS NOT NULL" predicate.
*/
Item *real= (keyuse->val)->real_item();
if (keyuse->null_rejecting && (real->type() == Item::FIELD_ITEM) &&
((Item_field*)real)->field->maybe_null())
j->ref.null_rejecting|= (key_part_map)1 << i; j->ref.null_rejecting|= (key_part_map)1 << i;
keyuse_uses_no_tables= keyuse_uses_no_tables && !keyuse->used_tables; keyuse_uses_no_tables= keyuse_uses_no_tables && !keyuse->used_tables;
/* /*
We don't want to compute heavy expressions in EXPLAIN, an example would We don't want to compute heavy expressions in EXPLAIN, an example would
@ -21163,7 +21180,6 @@ join_read_first(JOIN_TAB *tab)
tab->table->status=0; tab->table->status=0;
tab->read_record.read_record_func= join_read_next; tab->read_record.read_record_func= join_read_next;
tab->read_record.table=table; tab->read_record.table=table;
tab->read_record.record=table->record[0];
if (!table->file->inited) if (!table->file->inited)
error= table->file->ha_index_init(tab->index, tab->sorted); error= table->file->ha_index_init(tab->index, tab->sorted);
if (likely(!error)) if (likely(!error))
@ -21183,7 +21199,7 @@ static int
join_read_next(READ_RECORD *info) join_read_next(READ_RECORD *info)
{ {
int error; int error;
if (unlikely((error= info->table->file->ha_index_next(info->record)))) if (unlikely((error= info->table->file->ha_index_next(info->record()))))
return report_error(info->table, error); return report_error(info->table, error);
return 0; return 0;
@ -21203,7 +21219,6 @@ join_read_last(JOIN_TAB *tab)
tab->table->status=0; tab->table->status=0;
tab->read_record.read_record_func= join_read_prev; tab->read_record.read_record_func= join_read_prev;
tab->read_record.table=table; tab->read_record.table=table;
tab->read_record.record=table->record[0];
if (!table->file->inited) if (!table->file->inited)
error= table->file->ha_index_init(tab->index, 1); error= table->file->ha_index_init(tab->index, 1);
if (likely(!error)) if (likely(!error))
@ -21220,7 +21235,7 @@ static int
join_read_prev(READ_RECORD *info) join_read_prev(READ_RECORD *info)
{ {
int error; int error;
if (unlikely((error= info->table->file->ha_index_prev(info->record)))) if (unlikely((error= info->table->file->ha_index_prev(info->record()))))
return report_error(info->table, error); return report_error(info->table, error);
return 0; return 0;
} }
@ -21250,7 +21265,7 @@ static int
join_ft_read_next(READ_RECORD *info) join_ft_read_next(READ_RECORD *info)
{ {
int error; int error;
if (unlikely((error= info->table->file->ha_ft_read(info->table->record[0])))) if (unlikely((error= info->table->file->ha_ft_read(info->record()))))
return report_error(info->table, error); return report_error(info->table, error);
return 0; return 0;
} }
@ -26505,6 +26520,7 @@ int JOIN::save_explain_data_intern(Explain_query *output,
xpl_sel->exec_const_cond= exec_const_cond; xpl_sel->exec_const_cond= exec_const_cond;
xpl_sel->outer_ref_cond= outer_ref_cond; xpl_sel->outer_ref_cond= outer_ref_cond;
xpl_sel->pseudo_bits_cond= pseudo_bits_cond;
if (tmp_having) if (tmp_having)
xpl_sel->having= tmp_having; xpl_sel->having= tmp_having;
else else

View File

@ -5680,7 +5680,9 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
table->field[16]->store_time(&time); table->field[16]->store_time(&time);
table->field[16]->set_notnull(); table->field[16]->set_notnull();
} }
if (file->ha_table_flags() & (HA_HAS_OLD_CHECKSUM | HA_HAS_NEW_CHECKSUM)) if ((file->ha_table_flags() &
(HA_HAS_OLD_CHECKSUM | HA_HAS_NEW_CHECKSUM)) &&
!file->stats.checksum_null)
{ {
table->field[18]->store((longlong) file->stats.checksum, TRUE); table->field[18]->store((longlong) file->stats.checksum, TRUE);
table->field[18]->set_notnull(); table->field[18]->set_notnull();

View File

@ -102,29 +102,6 @@ inline void init_table_list_for_stat_tables(TABLE_LIST *tables, bool for_write)
} }
} }
/**
@details
The function builds a TABLE_LIST containing only one element 'tbl' for
the statistical table called 'stat_tab_name'.
The lock type of the element is set to TL_READ if for_write = FALSE,
otherwise it is set to TL_WRITE.
*/
static inline
void init_table_list_for_single_stat_table(TABLE_LIST *tbl,
const LEX_CSTRING *stat_tab_name,
bool for_write)
{
memset((char *) tbl, 0, sizeof(TABLE_LIST));
tbl->db= MYSQL_SCHEMA_NAME;
tbl->table_name= *stat_tab_name;
tbl->alias= *stat_tab_name;
tbl->lock_type= for_write ? TL_WRITE : TL_READ;
}
static Table_check_intact_log_error stat_table_intact; static Table_check_intact_log_error stat_table_intact;
static const static const
@ -286,16 +263,21 @@ inline int open_stat_tables(THD *thd, TABLE_LIST *tables,
/** /**
@brief @brief
Open a statistical table and lock it Open a statistical table and lock it
@details
This is used by DDLs. When a column or index is dropped or renamed,
stat tables need to be adjusted accordingly.
*/ */
static static inline int open_stat_table_for_ddl(THD *thd, TABLE_LIST *table,
inline int open_single_stat_table(THD *thd, TABLE_LIST *table, const LEX_CSTRING *stat_tab_name,
const LEX_CSTRING *stat_tab_name, Open_tables_backup *backup)
Open_tables_backup *backup,
bool for_write)
{ {
init_table_list_for_single_stat_table(table, stat_tab_name, for_write); table->init_one_table(&MYSQL_SCHEMA_NAME, stat_tab_name, NULL, TL_WRITE);
init_mdl_requests(table); No_such_table_error_handler nst_handler;
return open_system_tables_for_read(thd, table, backup); thd->push_internal_handler(&nst_handler);
int res= open_system_tables_for_read(thd, table, backup);
thd->pop_internal_handler();
return res;
} }
@ -3478,21 +3460,16 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
@brief @brief
Delete statistics on a column of the specified table Delete statistics on a column of the specified table
@param @param thd The thread handle
thd The thread handle @param tab The table the column belongs to
@param @param col The field of the column whose statistics is to be deleted
tab The table the column belongs to
@param
col The field of the column whose statistics is to be deleted
@details @details
The function delete statistics on the column 'col' belonging to the table The function delete statistics on the column 'col' belonging to the table
'tab' from the statistical table column_stats. 'tab' from the statistical table column_stats.
@retval @retval 0 If all deletions are successful or we couldn't open statistics table
0 If all deletions are successful or we couldn't open statistics table @retval 1 Otherwise
@retval
1 Otherwise
@note @note
The function is called when dropping a table column or when changing The function is called when dropping a table column or when changing
@ -3509,8 +3486,8 @@ int delete_statistics_for_column(THD *thd, TABLE *tab, Field *col)
int rc= 0; int rc= 0;
DBUG_ENTER("delete_statistics_for_column"); DBUG_ENTER("delete_statistics_for_column");
if (open_single_stat_table(thd, &tables, &stat_table_name[1], if (open_stat_table_for_ddl(thd, &tables, &stat_table_name[1],
&open_tables_backup, TRUE)) &open_tables_backup))
DBUG_RETURN(0); DBUG_RETURN(0);
save_binlog_format= thd->set_current_stmt_binlog_format_stmt(); save_binlog_format= thd->set_current_stmt_binlog_format_stmt();
@ -3537,24 +3514,18 @@ int delete_statistics_for_column(THD *thd, TABLE *tab, Field *col)
@brief @brief
Delete statistics on an index of the specified table Delete statistics on an index of the specified table
@param @param thd The thread handle
thd The thread handle @param tab The table the index belongs to
@param @param key_info The descriptor of the index whose statistics is to be deleted
tab The table the index belongs to @param ext_prefixes_only Delete statistics only on the index prefixes
@param extended by the components of the primary key
key_info The descriptor of the index whose statistics is to be deleted
@param
ext_prefixes_only Delete statistics only on the index prefixes extended by
the components of the primary key
@details @details
The function delete statistics on the index specified by 'key_info' The function delete statistics on the index specified by 'key_info'
defined on the table 'tab' from the statistical table index_stats. defined on the table 'tab' from the statistical table index_stats.
@retval @retval 0 If all deletions are successful or we couldn't open statistics table
0 If all deletions are successful or we couldn't open statistics table @retval 1 Otherwise
@retval
1 Otherwise
@note @note
The function is called when dropping an index, or dropping/changing the The function is called when dropping an index, or dropping/changing the
@ -3572,8 +3543,8 @@ int delete_statistics_for_index(THD *thd, TABLE *tab, KEY *key_info,
int rc= 0; int rc= 0;
DBUG_ENTER("delete_statistics_for_index"); DBUG_ENTER("delete_statistics_for_index");
if (open_single_stat_table(thd, &tables, &stat_table_name[2], if (open_stat_table_for_ddl(thd, &tables, &stat_table_name[2],
&open_tables_backup, TRUE)) &open_tables_backup))
DBUG_RETURN(0); DBUG_RETURN(0);
save_binlog_format= thd->set_current_stmt_binlog_format_stmt(); save_binlog_format= thd->set_current_stmt_binlog_format_stmt();
@ -3635,7 +3606,7 @@ int delete_statistics_for_index(THD *thd, TABLE *tab, KEY *key_info,
index_stats. index_stats.
@retval @retval
0 If all updates of the table name are successful 0 If all updates of the table name are successful
@retval @retval
1 Otherwise 1 Otherwise
@ -3716,26 +3687,19 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
/** /**
@brief
Rename a column in the statistical table column_stats Rename a column in the statistical table column_stats
@param @param thd The thread handle
thd The thread handle @param tab The table the column belongs to
@param @param col The column to be renamed
tab The table the column belongs to @param new_name The new column name
@param
col The column to be renamed
@param
new_name The new column name
@details @details
The function replaces the name of the column 'col' belonging to the table The function replaces the name of the column 'col' belonging to the table
'tab' for 'new_name' in the statistical table column_stats. 'tab' for 'new_name' in the statistical table column_stats.
@retval @retval 0 If all updates of the table name are successful
0 If all updates of the table name are successful @retval 1 Otherwise
@retval
1 Otherwise
@note @note
The function is called when executing any statement that renames a column, The function is called when executing any statement that renames a column,
@ -3756,8 +3720,8 @@ int rename_column_in_stat_tables(THD *thd, TABLE *tab, Field *col,
if (tab->s->tmp_table != NO_TMP_TABLE) if (tab->s->tmp_table != NO_TMP_TABLE)
DBUG_RETURN(0); DBUG_RETURN(0);
if (open_single_stat_table(thd, &tables, &stat_table_name[1], if (open_stat_table_for_ddl(thd, &tables, &stat_table_name[1],
&open_tables_backup, TRUE)) &open_tables_backup))
DBUG_RETURN(rc); DBUG_RETURN(rc);
save_binlog_format= thd->set_current_stmt_binlog_format_stmt(); save_binlog_format= thd->set_current_stmt_binlog_format_stmt();

View File

@ -1196,3 +1196,15 @@ uint convert_to_printable(char *to, size_t to_len,
*t= '\0'; *t= '\0';
return (uint) (t - to); return (uint) (t - to);
} }
bool String::append_semi_hex(const char *s, uint len, CHARSET_INFO *cs)
{
size_t dst_len= len * 4 + 1; //extra length for the '\0' character
if (reserve(dst_len))
return true;
uint nbytes= convert_to_printable(Ptr + str_length, dst_len, s, len, cs);
DBUG_ASSERT((ulonglong) str_length + nbytes < UINT_MAX32);
str_length+= nbytes;
return false;
}

View File

@ -679,6 +679,7 @@ public:
int reserve(size_t space_needed) int reserve(size_t space_needed)
{ {
DBUG_ASSERT((ulonglong) str_length + space_needed < UINT_MAX32);
return realloc(str_length + space_needed); return realloc(str_length + space_needed);
} }
int reserve(size_t space_needed, size_t grow_by); int reserve(size_t space_needed, size_t grow_by);
@ -964,6 +965,8 @@ public:
{ {
return !sortcmp(this, other, cs); return !sortcmp(this, other, cs);
} }
private:
bool append_semi_hex(const char *s, uint len, CHARSET_INFO *cs);
}; };

View File

@ -11002,7 +11002,7 @@ bool mysql_checksum_table(THD *thd, TABLE_LIST *tables,
(((t->file->ha_table_flags() & HA_HAS_OLD_CHECKSUM) && thd->variables.old_mode) || (((t->file->ha_table_flags() & HA_HAS_OLD_CHECKSUM) && thd->variables.old_mode) ||
((t->file->ha_table_flags() & HA_HAS_NEW_CHECKSUM) && !thd->variables.old_mode))) ((t->file->ha_table_flags() & HA_HAS_NEW_CHECKSUM) && !thd->variables.old_mode)))
{ {
if (t->file->info(HA_STATUS_VARIABLE)) if (t->file->info(HA_STATUS_VARIABLE) || t->file->stats.checksum_null)
protocol->store_null(); protocol->store_null();
else else
protocol->store((longlong)t->file->stats.checksum); protocol->store((longlong)t->file->stats.checksum);
@ -11022,7 +11022,7 @@ bool mysql_checksum_table(THD *thd, TABLE_LIST *tables,
thd->protocol->remove_last_row(); thd->protocol->remove_last_row();
goto err; goto err;
} }
if (error) if (error || t->file->stats.checksum_null)
protocol->store_null(); protocol->store_null();
else else
protocol->store((longlong)t->file->stats.checksum); protocol->store((longlong)t->file->stats.checksum);

View File

@ -898,7 +898,7 @@ public:
{ {
Rowid_seq_cursor::init(info); Rowid_seq_cursor::init(info);
table= info->table; table= info->table;
record= info->record; record= info->record();
} }
virtual int fetch() virtual int fetch()

View File

@ -6113,10 +6113,12 @@ database_corrupted:
if (err == DB_PAGE_CORRUPTED if (err == DB_PAGE_CORRUPTED
|| err == DB_DECRYPTION_FAILED) { || err == DB_DECRYPTION_FAILED) {
const page_id_t corrupt_page_id = bpage->id;
buf_corrupt_page_release(bpage, space); buf_corrupt_page_release(bpage, space);
if (recv_recovery_is_on()) { if (recv_recovery_is_on()) {
recv_recover_corrupt_page(bpage); recv_recover_corrupt_page(corrupt_page_id);
} }
space->release_for_io(); space->release_for_io();

View File

@ -49,8 +49,8 @@ recv_find_max_checkpoint(ulint* max_field)
/** Remove records for a corrupted page. /** Remove records for a corrupted page.
This function should called when srv_force_recovery > 0. This function should called when srv_force_recovery > 0.
@param[in] bpage buffer pool page */ @param[in] page_id page id of the corrupted page */
ATTRIBUTE_COLD void recv_recover_corrupt_page(buf_page_t* bpage); ATTRIBUTE_COLD void recv_recover_corrupt_page(page_id_t page_id);
/** Apply any buffered redo log to a page that was just read from a data file. /** Apply any buffered redo log to a page that was just read from a data file.
@param[in,out] bpage buffer pool page */ @param[in,out] bpage buffer pool page */

View File

@ -777,9 +777,7 @@ os_file_rename
os_aio os_aio
os_file_read os_file_read
os_file_read_no_error_handling os_file_read_no_error_handling
os_file_read_no_error_handling_int_fd
os_file_write os_file_write
os_file_write_int_fd
The wrapper functions have the prefix of "innodb_". */ The wrapper functions have the prefix of "innodb_". */
@ -1155,13 +1153,9 @@ to original un-instrumented file I/O APIs */
# define os_file_read_no_error_handling(type, file, buf, offset, n, o) \ # define os_file_read_no_error_handling(type, file, buf, offset, n, o) \
os_file_read_no_error_handling_func(type, file, buf, offset, n, o) os_file_read_no_error_handling_func(type, file, buf, offset, n, o)
# define os_file_read_no_error_handling_int_fd(type, file, buf, offset, n) \
os_file_read_no_error_handling_func(type, OS_FILE_FROM_FD(file), buf, offset, n, NULL)
# define os_file_write(type, name, file, buf, offset, n) \ # define os_file_write(type, name, file, buf, offset, n) \
os_file_write_func(type, name, file, buf, offset, n) os_file_write_func(type, name, file, buf, offset, n)
# define os_file_write_int_fd(type, name, file, buf, offset, n) \
os_file_write_func(type, name, OS_FILE_FROM_FD(file), buf, offset, n)
# define os_file_flush(file) os_file_flush_func(file) # define os_file_flush(file) os_file_flush_func(file)

View File

@ -1,7 +1,7 @@
/***************************************************************************** /*****************************************************************************
Copyright (c) 2010, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2010, 2017, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2013, 2017, MariaDB Corporation. Copyright (c) 2013, 2019, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software the terms of the GNU General Public License as published by the Free Software

View File

@ -370,7 +370,9 @@ row_merge_buf_sort(
/********************************************************************//** /********************************************************************//**
Write a merge block to the file system. Write a merge block to the file system.
@return whether the request was completed successfully */ @return whether the request was completed successfully
@retval false on error
@retval true on success */
UNIV_INTERN UNIV_INTERN
bool bool
row_merge_write( row_merge_write(

View File

@ -1971,11 +1971,11 @@ static void recv_recover_page(buf_block_t* block, mtr_t& mtr,
/** Remove records for a corrupted page. /** Remove records for a corrupted page.
This function should called when srv_force_recovery > 0. This function should called when srv_force_recovery > 0.
@param[in] bpage buffer pool page */ @param[in] page_id page id of the corrupted page */
void recv_recover_corrupt_page(buf_page_t* bpage) void recv_recover_corrupt_page(page_id_t page_id)
{ {
mutex_enter(&recv_sys.mutex); mutex_enter(&recv_sys.mutex);
recv_sys.pages.erase(bpage->id); recv_sys.pages.erase(page_id);
mutex_exit(&recv_sys.mutex); mutex_exit(&recv_sys.mutex);
} }

View File

@ -4860,7 +4860,8 @@ Requests a synchronous write operation.
@param[out] buf buffer from which to write @param[out] buf buffer from which to write
@param[in] offset file offset from the start where to read @param[in] offset file offset from the start where to read
@param[in] n number of bytes to read, starting from offset @param[in] n number of bytes to read, starting from offset
@return DB_SUCCESS if request was successful, false if fail */ @return error code
@retval DB_SUCCESS if the operation succeeded */
dberr_t dberr_t
os_file_write_func( os_file_write_func(
const IORequest& type, const IORequest& type,
@ -5345,7 +5346,8 @@ Requests a synchronous positioned read operation.
@param[out] buf buffer where to read @param[out] buf buffer where to read
@param[in] offset file offset from the start where to read @param[in] offset file offset from the start where to read
@param[in] n number of bytes to read, starting from offset @param[in] n number of bytes to read, starting from offset
@return DB_SUCCESS or error code */ @return error code
@retval DB_SUCCESS if the operation succeeded */
dberr_t dberr_t
os_file_read_func( os_file_read_func(
const IORequest& type, const IORequest& type,

View File

@ -3424,8 +3424,12 @@ page_corrupted:
if (!encrypted) { if (!encrypted) {
} else if (!key_version) { } else if (!key_version) {
not_encrypted: not_encrypted:
if (!page_compressed if (block->page.id.page_no() == 0
&& !block->page.zip.data) { && block->page.zip.data) {
block->page.zip.data = src;
frame_changed = true;
} else if (!page_compressed
&& !block->page.zip.data) {
block->frame = src; block->frame = src;
frame_changed = true; frame_changed = true;
} else { } else {
@ -3529,7 +3533,11 @@ not_encrypted:
} }
if (frame_changed) { if (frame_changed) {
block->frame = dst; if (block->page.zip.data) {
block->page.zip.data = dst;
} else {
block->frame = dst;
}
} }
src = io_buffer + (i * size); src = io_buffer + (i * size);

View File

@ -1123,7 +1123,9 @@ row_merge_read(
/********************************************************************//** /********************************************************************//**
Write a merge block to the file system. Write a merge block to the file system.
@return whether the request was completed successfully */ @return whether the request was completed successfully
@retval false on error
@retval true on success */
UNIV_INTERN UNIV_INTERN
bool bool
row_merge_write( row_merge_write(

View File

@ -2793,9 +2793,12 @@ int ha_maria::external_lock(THD *thd, int lock_type)
} }
} }
} /* if transactional table */ } /* if transactional table */
DBUG_RETURN(maria_lock_database(file, !table->s->tmp_table ? int result = maria_lock_database(file, !table->s->tmp_table ?
lock_type : ((lock_type == F_UNLCK) ? lock_type : ((lock_type == F_UNLCK) ?
F_UNLCK : F_EXTRA_LCK))); F_UNLCK : F_EXTRA_LCK));
if (!file->s->base.born_transactional)
file->state= &file->s->state.state; // Restore state if clone
DBUG_RETURN(result);
} }
int ha_maria::start_stmt(THD *thd, thr_lock_type lock_type) int ha_maria::start_stmt(THD *thd, thr_lock_type lock_type)

View File

@ -1,5 +1,3 @@
#!/bin/awk
/Query_time:/ { /Query_time:/ {
results["Rows_examined:"] = "uninit"; results["Rows_examined:"] = "uninit";
results["RocksDB_key_skipped:"] = "uninit"; results["RocksDB_key_skipped:"] = "uninit";

View File

@ -1,2 +1,4 @@
#!/bin/bash
src_data_dir="${MYSQLTEST_VARDIR}/mysqld.1/data/" src_data_dir="${MYSQLTEST_VARDIR}/mysqld.1/data/"
python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('${src_data_dir}/slocket')" python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('${src_data_dir}/slocket')"

View File

@ -1,3 +1,5 @@
#!/bin/bash
set -e set -e
COPY_LOG=$1 COPY_LOG=$1

View File

@ -1,3 +1,5 @@
#!/bin/bash
set -e set -e
# Insert 100 batches of 100 records each to a table with following schema: # Insert 100 batches of 100 records each to a table with following schema:

View File

@ -1,3 +1,5 @@
#!/bin/bash
set -e set -e
# Initially loads a chunk of data. # Initially loads a chunk of data.

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