summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2022-04-27 10:43:00 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2022-04-27 10:43:00 +0300
commit133c2129cdbb77d8fd55fb303d6f73e1cd3c025c (patch)
tree3a4fe134a4db2511d6081cdfc6fdff550c25c620
parent6948abb94c6739101320d12ddec1d2daae929cc2 (diff)
parent638afc4acf86b32b74b3b37314f2dbd048062814 (diff)
downloadmariadb-git-133c2129cdbb77d8fd55fb303d6f73e1cd3c025c.tar.gz
Merge 10.7 into 10.8
-rw-r--r--CMakeLists.txt4
-rw-r--r--client/mysqldump.c7
-rw-r--r--extra/mariabackup/backup_copy.cc8
-rw-r--r--extra/mariabackup/xtrabackup.cc4
-rw-r--r--extra/wolfssl/CMakeLists.txt1
-rw-r--r--include/my_compiler.h19
-rw-r--r--include/my_valgrind.h6
-rw-r--r--mysql-test/main/brackets.result26
-rw-r--r--mysql-test/main/cte_cycle.result2
-rw-r--r--mysql-test/main/cte_nonrecursive.result14
-rw-r--r--mysql-test/main/cte_recursive.result8
-rw-r--r--mysql-test/main/ctype_collate.result17
-rw-r--r--mysql-test/main/ctype_collate.test17
-rw-r--r--mysql-test/main/ctype_utf32_innodb.result34
-rw-r--r--mysql-test/main/ctype_utf32_innodb.test35
-rw-r--r--mysql-test/main/derived_cond_pushdown.result6
-rw-r--r--mysql-test/main/explain_json.result2
-rw-r--r--mysql-test/main/get_diagnostics.result35
-rw-r--r--mysql-test/main/get_diagnostics.test24
-rw-r--r--mysql-test/main/intersect.result2
-rw-r--r--mysql-test/main/intersect_all.result2
-rw-r--r--mysql-test/main/lock_view.result2
-rw-r--r--mysql-test/main/mysql_tzinfo_to_sql_symlink.result405
-rw-r--r--mysql-test/main/mysql_tzinfo_to_sql_symlink.test135
-rw-r--r--mysql-test/main/select.result46
-rw-r--r--mysql-test/main/select.test46
-rw-r--r--mysql-test/main/select_jcl6.result46
-rw-r--r--mysql-test/main/select_pkeycache.result46
-rw-r--r--mysql-test/main/set_operation.result4
-rw-r--r--mysql-test/main/show.result12
-rw-r--r--mysql-test/main/show.test11
-rw-r--r--mysql-test/main/show_check.result4
-rw-r--r--mysql-test/main/show_explain.cc0
-rw-r--r--mysql-test/main/sp-cursor.result12
-rw-r--r--mysql-test/main/sp-cursor.test21
-rw-r--r--mysql-test/main/sp-i_s_columns.result34
-rw-r--r--mysql-test/main/sp-i_s_columns.test49
-rw-r--r--mysql-test/main/sp-no-valgrind.test2
-rw-r--r--mysql-test/main/symlink-myisam-11902.test3
-rw-r--r--mysql-test/main/table_value_constr.result24
-rw-r--r--mysql-test/main/view.result4
-rwxr-xr-xmysql-test/mariadb-test-run.pl2
-rw-r--r--mysql-test/std_data/capath/3106f582.079
-rw-r--r--mysql-test/std_data/capath/cacert.pem79
-rw-r--r--mysql-test/std_data/capath/ed1f42db.0166
-rw-r--r--mysql-test/suite/binlog/r/binlog_bug23533.result2
-rw-r--r--mysql-test/suite/compat/oracle/r/anonymous_derived.result2
-rw-r--r--mysql-test/suite/compat/oracle/r/misc.result23
-rw-r--r--mysql-test/suite/compat/oracle/r/table_value_constr.result24
-rw-r--r--mysql-test/suite/compat/oracle/t/misc.test28
-rw-r--r--mysql-test/suite/encryption/r/innodb-redo-nokeys.result22
-rw-r--r--mysql-test/suite/encryption/t/innodb-redo-nokeys.opt1
-rw-r--r--mysql-test/suite/encryption/t/innodb-redo-nokeys.test24
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_is.result4
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_is_embedded.result4
-rw-r--r--mysql-test/suite/galera/disabled.def2
-rw-r--r--mysql-test/suite/galera/galera_2nodes.cnf32
-rw-r--r--mysql-test/suite/galera/galera_2nodes_as_master.cnf40
-rw-r--r--mysql-test/suite/galera/galera_2nodes_as_slave.cnf56
-rw-r--r--mysql-test/suite/galera/galera_3nodes_as_slave.cnf70
-rw-r--r--mysql-test/suite/galera/galera_4nodes.cnf28
-rw-r--r--mysql-test/suite/galera/r/MDEV-26575.result8
-rw-r--r--mysql-test/suite/galera/r/galera_as_slave_autoinc.result10
-rw-r--r--mysql-test/suite/galera/r/galera_binlog_cache_size.result2
-rw-r--r--mysql-test/suite/galera/r/galera_sst_encrypted.result348
-rw-r--r--mysql-test/suite/galera/r/galera_sst_mariabackup_logarchive,debug.rdiff192
-rw-r--r--mysql-test/suite/galera/r/galera_sst_mariabackup_logarchive.result522
-rw-r--r--mysql-test/suite/galera/r/galera_sst_rsync_recv_auto,debug.rdiff188
-rw-r--r--mysql-test/suite/galera/r/galera_sst_rsync_recv_auto.result518
-rw-r--r--mysql-test/suite/galera/r/galera_var_cluster_address.result2
-rw-r--r--mysql-test/suite/galera/r/mariadb_tzinfo_to_sql.result271
-rw-r--r--mysql-test/suite/galera/t/MDEV-26575.test19
-rw-r--r--mysql-test/suite/galera/t/galera_as_slave_autoinc.test2
-rw-r--r--mysql-test/suite/galera/t/galera_bf_abort_ps_bind.test1
-rw-r--r--mysql-test/suite/galera/t/galera_sst_encrypted.cnf17
-rw-r--r--mysql-test/suite/galera/t/galera_sst_encrypted.test16
-rw-r--r--mysql-test/suite/galera/t/galera_sst_mariabackup_logarchive.cnf17
-rw-r--r--mysql-test/suite/galera/t/galera_sst_mariabackup_logarchive.test64
-rw-r--r--mysql-test/suite/galera/t/galera_sst_rsync_recv_auto.cnf18
-rw-r--r--mysql-test/suite/galera/t/galera_sst_rsync_recv_auto.test15
-rw-r--r--mysql-test/suite/galera/t/galera_var_cluster_address.test2
-rw-r--r--mysql-test/suite/galera/t/mariadb_tzinfo_to_sql.opt1
-rw-r--r--mysql-test/suite/galera/t/mariadb_tzinfo_to_sql.test235
-rw-r--r--mysql-test/suite/galera_3nodes/galera_2x3nodes.cnf55
-rw-r--r--mysql-test/suite/galera_3nodes/galera_3nodes.cnf28
-rw-r--r--mysql-test/suite/galera_3nodes/r/galera_garbd_backup.result4
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_garbd_backup.test2
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.cnf8
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup_section.cnf8
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.cnf8
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.cnf8
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync_section.cnf8
-rw-r--r--mysql-test/suite/gcol/r/innodb_virtual_debug.result2
-rw-r--r--mysql-test/suite/gcol/r/innodb_virtual_fk.result2
-rw-r--r--mysql-test/suite/gcol/t/innodb_virtual_debug.test2
-rw-r--r--mysql-test/suite/innodb/include/have_innodb_bzip2.inc4
-rw-r--r--mysql-test/suite/innodb/include/have_innodb_lz4.inc4
-rw-r--r--mysql-test/suite/innodb/include/have_innodb_lzma.inc4
-rw-r--r--mysql-test/suite/innodb/include/have_innodb_lzo.inc4
-rw-r--r--mysql-test/suite/innodb/include/have_innodb_snappy.inc4
-rw-r--r--mysql-test/suite/innodb/include/innodb-page-compression.inc132
-rw-r--r--mysql-test/suite/innodb/r/alter_candidate_key.result2
-rw-r--r--mysql-test/suite/innodb/r/alter_crash.result5
-rw-r--r--mysql-test/suite/innodb/r/alter_crash_rebuild.result4
-rw-r--r--mysql-test/suite/innodb/r/alter_dml_apply.result39
-rw-r--r--mysql-test/suite/innodb/r/alter_mdl_timeout.result2
-rw-r--r--mysql-test/suite/innodb/r/alter_not_null_debug,STRICT.rdiff27
-rw-r--r--mysql-test/suite/innodb/r/foreign_key.result21
-rw-r--r--mysql-test/suite/innodb/r/innodb-alter-debug.result5
-rw-r--r--mysql-test/suite/innodb/r/innodb-index-debug.result8
-rw-r--r--mysql-test/suite/innodb/r/innodb-index-online-fk.result18
-rw-r--r--mysql-test/suite/innodb/r/innodb-index-online.result86
-rw-r--r--mysql-test/suite/innodb/r/innodb-index.result6
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_bzip2.result444
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_lz4.result444
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_lzma.result444
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_lzo.result357
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_snappy.result97
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_tables.result155
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_zip.result356
-rw-r--r--mysql-test/suite/innodb/r/innodb-table-online.result66
-rw-r--r--mysql-test/suite/innodb/r/innodb_page_compressed.result (renamed from mysql-test/suite/innodb/r/innodb-page_compression_default.result)91
-rw-r--r--mysql-test/suite/innodb/r/insert_into_empty_debug.result32
-rw-r--r--mysql-test/suite/innodb/r/instant_alter_debug,dynamic.rdiff6
-rw-r--r--mysql-test/suite/innodb/r/instant_alter_debug,redundant.rdiff2
-rw-r--r--mysql-test/suite/innodb/r/instant_alter_debug.result1
-rw-r--r--mysql-test/suite/innodb/r/online_table_rebuild.result47
-rw-r--r--mysql-test/suite/innodb/r/row_size_error_log_warnings_3.result54
-rw-r--r--mysql-test/suite/innodb/r/stat_tables.result14
-rw-r--r--mysql-test/suite/innodb/r/stored_fk.result6
-rw-r--r--mysql-test/suite/innodb/r/table_definition_cache_debug.result1
-rw-r--r--mysql-test/suite/innodb/t/alter_candidate_key.test2
-rw-r--r--mysql-test/suite/innodb/t/alter_crash.test1
-rw-r--r--mysql-test/suite/innodb/t/alter_crash_rebuild.test4
-rw-r--r--mysql-test/suite/innodb/t/alter_dml_apply.opt2
-rw-r--r--mysql-test/suite/innodb/t/alter_dml_apply.test58
-rw-r--r--mysql-test/suite/innodb/t/alter_mdl_timeout.test2
-rw-r--r--mysql-test/suite/innodb/t/alter_not_null_debug.test2
-rw-r--r--mysql-test/suite/innodb/t/foreign_key.test35
-rw-r--r--mysql-test/suite/innodb/t/innodb-alter-debug.test5
-rw-r--r--mysql-test/suite/innodb/t/innodb-index-debug.test8
-rw-r--r--mysql-test/suite/innodb/t/innodb-index-online.test23
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_bzip2.test251
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_default.test8
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_lz4.test253
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_lzma.test251
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_lzo.test204
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_snappy.test11
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_tables.test116
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_zip.test203
-rw-r--r--mysql-test/suite/innodb/t/innodb-table-online.test27
-rw-r--r--mysql-test/suite/innodb/t/innodb_page_compressed.combinations6
-rw-r--r--mysql-test/suite/innodb/t/innodb_page_compressed.test86
-rw-r--r--mysql-test/suite/innodb/t/insert_into_empty_debug.test36
-rw-r--r--mysql-test/suite/innodb/t/instant_alter_debug.test1
-rw-r--r--mysql-test/suite/innodb/t/online_table_rebuild.opt2
-rw-r--r--mysql-test/suite/innodb/t/online_table_rebuild.test62
-rw-r--r--mysql-test/suite/innodb/t/row_size_error_log_warnings_3.test55
-rw-r--r--mysql-test/suite/innodb/t/stat_tables.test14
-rw-r--r--mysql-test/suite/innodb/t/table_definition_cache_debug.test1
-rw-r--r--mysql-test/suite/innodb_fts/r/misc_debug.result9
-rw-r--r--mysql-test/suite/innodb_fts/t/misc_debug.test12
-rw-r--r--mysql-test/suite/json/r/json_table.result10
-rw-r--r--mysql-test/suite/json/t/json_table.test11
-rw-r--r--mysql-test/suite/maria/maria.result14
-rw-r--r--mysql-test/suite/maria/maria.test13
-rw-r--r--mysql-test/suite/mariabackup/log_copy_interval.result2
-rw-r--r--mysql-test/suite/mariabackup/log_copy_interval.test18
-rw-r--r--mysql-test/suite/parts/inc/part_alter_values.inc37
-rw-r--r--mysql-test/suite/parts/r/partition_alter_innodb.result13
-rw-r--r--mysql-test/suite/parts/r/partition_alter_maria.result20
-rw-r--r--mysql-test/suite/parts/r/partition_alter_myisam.result20
-rw-r--r--mysql-test/suite/rpl/r/rpl_binlog_rollback_cleanup.result2
-rw-r--r--mysql-test/suite/sys_vars/r/tmp_disk_table_size_basic.result12
-rw-r--r--mysql-test/suite/sys_vars/t/tmp_disk_table_size_basic.test16
-rw-r--r--mysql-test/suite/sysschema/r/pr_table_exists.result26
-rw-r--r--mysql-test/suite/sysschema/t/pr_table_exists.test27
-rw-r--r--mysql-test/suite/vcol/r/vcol_syntax.result93
-rw-r--r--mysql-test/suite/vcol/t/vcol_syntax.test83
-rw-r--r--mysql-test/suite/versioning/r/delete_history.result12
-rw-r--r--mysql-test/suite/versioning/t/delete_history.test13
-rw-r--r--mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink.opt1
-rw-r--r--mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink.test41
-rw-r--r--mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink_skip.opt1
-rw-r--r--mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink_skip.test41
-rw-r--r--mysql-test/valgrind.supp166
-rw-r--r--mysys/my_compress.c27
-rw-r--r--scripts/sys_schema/procedures/table_exists.sql73
-rw-r--r--scripts/wsrep_sst_mariabackup.sh31
-rw-r--r--sql/event_db_repository.cc2
-rw-r--r--sql/field.cc5
-rw-r--r--sql/field.h8
-rw-r--r--sql/ha_partition.cc22
-rw-r--r--sql/item.cc13
-rw-r--r--sql/item.h8
-rw-r--r--sql/item_func.cc4
-rw-r--r--sql/item_subselect.cc7
-rw-r--r--sql/item_sum.cc5
-rw-r--r--sql/log.cc7
-rw-r--r--sql/log.h3
-rw-r--r--sql/mysqld.cc21
-rw-r--r--sql/share/errmsg-utf8.txt3652
-rw-r--r--sql/sql_base.cc67
-rw-r--r--sql/sql_cursor.cc16
-rw-r--r--sql/sql_explain.cc38
-rw-r--r--sql/sql_parse.cc2
-rw-r--r--sql/sql_select.cc15
-rw-r--r--sql/sql_show.cc10
-rw-r--r--sql/sql_tvc.cc6
-rw-r--r--sql/sql_yacc.yy13
-rw-r--r--sql/structs.h4
-rw-r--r--sql/table.cc273
-rw-r--r--sql/table.h11
-rw-r--r--sql/tztime.cc135
-rw-r--r--sql/wsrep_sst.cc76
-rw-r--r--sql/wsrep_utils.h1
-rw-r--r--storage/archive/azio.c2
-rw-r--r--storage/innobase/CMakeLists.txt3
-rw-r--r--storage/innobase/btr/btr0btr.cc52
-rw-r--r--storage/innobase/btr/btr0cur.cc41
-rw-r--r--storage/innobase/buf/buf0dump.cc3
-rw-r--r--storage/innobase/dict/dict0dict.cc1
-rw-r--r--storage/innobase/dict/dict0load.cc1
-rw-r--r--storage/innobase/dict/dict0stats.cc4
-rw-r--r--storage/innobase/dict/drop.cc25
-rw-r--r--storage/innobase/fil/fil0fil.cc10
-rw-r--r--storage/innobase/handler/ha_innodb.cc145
-rw-r--r--storage/innobase/handler/handler0alter.cc400
-rw-r--r--storage/innobase/ibuf/ibuf0ibuf.cc43
-rw-r--r--storage/innobase/include/btr0cur.h13
-rw-r--r--storage/innobase/include/buf0buf.h4
-rw-r--r--storage/innobase/include/buf0types.h4
-rw-r--r--storage/innobase/include/data0type.h12
-rw-r--r--storage/innobase/include/data0type.inl34
-rw-r--r--storage/innobase/include/dict0dict.h2
-rw-r--r--storage/innobase/include/dict0mem.h35
-rw-r--r--storage/innobase/include/dict0stats_bg.h3
-rw-r--r--storage/innobase/include/fil0fil.h8
-rw-r--r--storage/innobase/include/ha_prototypes.h9
-rw-r--r--storage/innobase/include/lock0lock.h45
-rw-r--r--storage/innobase/include/log0log.h6
-rw-r--r--storage/innobase/include/os0thread.h42
-rw-r--r--storage/innobase/include/read0types.h31
-rw-r--r--storage/innobase/include/row0log.h81
-rw-r--r--storage/innobase/include/row0log.inl80
-rw-r--r--storage/innobase/include/row0merge.h10
-rw-r--r--storage/innobase/include/srv0srv.h2
-rw-r--r--storage/innobase/include/sux_lock.h45
-rw-r--r--storage/innobase/include/trx0purge.h2
-rw-r--r--storage/innobase/include/trx0rec.h66
-rw-r--r--storage/innobase/include/trx0rseg.h2
-rw-r--r--storage/innobase/include/trx0sys.h48
-rw-r--r--storage/innobase/include/trx0trx.h43
-rw-r--r--storage/innobase/include/trx0undo.h101
-rw-r--r--storage/innobase/include/univ.i3
-rw-r--r--storage/innobase/include/ut0counter.h24
-rw-r--r--storage/innobase/include/ut0pool.h25
-rw-r--r--storage/innobase/lock/lock0lock.cc138
-rw-r--r--storage/innobase/log/log0log.cc4
-rw-r--r--storage/innobase/log/log0recv.cc22
-rw-r--r--storage/innobase/os/os0file.cc1
-rw-r--r--storage/innobase/os/os0thread.cc28
-rw-r--r--storage/innobase/page/page0page.cc6
-rw-r--r--storage/innobase/read/read0read.cc6
-rw-r--r--storage/innobase/rem/rem0cmp.cc6
-rw-r--r--storage/innobase/row/row0ftsort.cc3
-rw-r--r--storage/innobase/row/row0ins.cc181
-rw-r--r--storage/innobase/row/row0log.cc843
-rw-r--r--storage/innobase/row/row0merge.cc19
-rw-r--r--storage/innobase/row/row0mysql.cc4
-rw-r--r--storage/innobase/row/row0purge.cc63
-rw-r--r--storage/innobase/row/row0sel.cc7
-rw-r--r--storage/innobase/row/row0uins.cc171
-rw-r--r--storage/innobase/row/row0umod.cc128
-rw-r--r--storage/innobase/row/row0upd.cc176
-rw-r--r--storage/innobase/row/row0vers.cc4
-rw-r--r--storage/innobase/srv/srv0srv.cc2
-rw-r--r--storage/innobase/srv/srv0start.cc1
-rw-r--r--storage/innobase/trx/trx0purge.cc3
-rw-r--r--storage/innobase/trx/trx0rec.cc105
-rw-r--r--storage/innobase/trx/trx0roll.cc17
-rw-r--r--storage/innobase/trx/trx0trx.cc61
-rw-r--r--storage/innobase/trx/trx0undo.cc101
-rw-r--r--storage/innobase/ut/ut0ut.cc5
-rw-r--r--storage/maria/ma_write.c3
-rw-r--r--storage/maria/maria_def.h3
-rw-r--r--storage/spider/mysql-test/spider/bugfix/disabled.def1
-rw-r--r--storage/spider/mysql-test/spider/bugfix/r/mdev_25116.result33
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/mdev_25116.cnf3
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/mdev_25116.test37
-rw-r--r--storage/spider/mysql-test/spider/r/spider3_fixes.result8
-rw-r--r--storage/spider/mysql-test/spider/r/variable_deprecation.result107
-rw-r--r--storage/spider/mysql-test/spider/t/spider3_fixes.test10
-rw-r--r--storage/spider/mysql-test/spider/t/variable_deprecation.test62
-rw-r--r--storage/spider/spd_db_conn.cc3
-rw-r--r--storage/spider/spd_param.cc20
-rw-r--r--storage/spider/spd_table.cc12
-rw-r--r--tests/mysql_client_test.c2
-rw-r--r--tpool/tpool_generic.cc4
m---------wsrep-lib0
301 files changed, 9758 insertions, 8630 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 091fb329686..f9e2b1befda 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -421,14 +421,12 @@ IF(WITH_UNIT_TESTS)
ENDIF()
ENDIF()
-INCLUDE(cpack_tgz)
-INCLUDE(cpack_rpm)
-INCLUDE(cpack_deb)
UNSET (MYSQLD_STATIC_PLUGIN_LIBS CACHE)
INCLUDE(mariadb_connector_c) # this does ADD_SUBDIRECTORY(libmariadb)
+INCLUDE(cpack_tgz)
INCLUDE(cpack_rpm)
INCLUDE(cpack_deb)
diff --git a/client/mysqldump.c b/client/mysqldump.c
index a73f06d592a..c8c8076b3ac 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -279,7 +279,9 @@ static struct my_option my_long_options[] =
&opt_slave_apply, &opt_slave_apply, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
{"as-of", OPT_ASOF_TIMESTAMP,
- "Dump system versioned table as of specified timestamp.",
+ "Dump system versioned table(s) as of specified timestamp. "
+ "Argument is interpreted according to the --tz-utc setting. "
+ "Table structures are always dumped as of current timestamp.",
&opt_asof_timestamp, &opt_asof_timestamp, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"character-sets-dir", OPT_CHARSETS_DIR,
"Directory for character set files.", (char **)&charsets_dir,
@@ -577,7 +579,8 @@ static struct my_option my_long_options[] =
&opt_dump_triggers, &opt_dump_triggers, 0, GET_BOOL,
NO_ARG, 1, 0, 0, 0, 0, 0},
{"tz-utc", OPT_TZ_UTC,
- "SET TIME_ZONE='+00:00' at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones.",
+ "Set connection time zone to UTC before commencing the dump and add "
+ "SET TIME_ZONE=´+00:00´ to the top of the dump file.",
&opt_tz_utc, &opt_tz_utc, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
#ifndef DONT_ALLOW_USER_CHANGE
{"user", 'u', "User for login if not current user.",
diff --git a/extra/mariabackup/backup_copy.cc b/extra/mariabackup/backup_copy.cc
index 97a4c90286c..49dd716f15f 100644
--- a/extra/mariabackup/backup_copy.cc
+++ b/extra/mariabackup/backup_copy.cc
@@ -55,6 +55,7 @@ Street, Fifth Floor, Boston, MA 02110-1335 USA
#include "xtrabackup.h"
#include "common.h"
#include "backup_copy.h"
+#include "backup_debug.h"
#include "backup_mysql.h"
#include <btr0btr.h>
@@ -1443,6 +1444,13 @@ bool backup_start(CorruptedPages &corrupted_pages)
msg("Waiting for log copy thread to read lsn %llu", (ulonglong)server_lsn_after_lock);
backup_wait_for_lsn(server_lsn_after_lock);
+ DBUG_EXECUTE_FOR_KEY("sleep_after_waiting_for_lsn", {},
+ {
+ ulong milliseconds = strtoul(dbug_val, NULL, 10);
+ msg("sleep_after_waiting_for_lsn");
+ my_sleep(milliseconds*1000UL);
+ });
+
backup_fix_ddl(corrupted_pages);
// There is no need to stop slave thread before coping non-Innodb data when
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc
index 2a79327e2ef..835609795b1 100644
--- a/extra/mariabackup/xtrabackup.cc
+++ b/extra/mariabackup/xtrabackup.cc
@@ -3216,7 +3216,7 @@ static void log_copying_thread()
(!metadata_to_lsn || metadata_to_lsn > recv_sys.lsn))
{
timespec abstime;
- set_timespec_nsec(abstime, 1000ULL * xtrabackup_log_copy_interval);
+ set_timespec_nsec(abstime, 1000000ULL * xtrabackup_log_copy_interval);
mysql_cond_timedwait(&log_copying_stop, &recv_sys.mutex, &abstime);
}
log_copying_running= false;
@@ -6830,7 +6830,7 @@ int main(int argc, char **argv)
key_map_full.set_all();
logger.init_base();
- logger.set_handlers(LOG_FILE, LOG_NONE, LOG_NONE);
+ logger.set_handlers(LOG_NONE, LOG_NONE);
mysql_mutex_init(key_LOCK_error_log, &LOCK_error_log,
MY_MUTEX_INIT_FAST);
diff --git a/extra/wolfssl/CMakeLists.txt b/extra/wolfssl/CMakeLists.txt
index c992c358e38..4648a26c77d 100644
--- a/extra/wolfssl/CMakeLists.txt
+++ b/extra/wolfssl/CMakeLists.txt
@@ -94,7 +94,6 @@ ${WOLFCRYPT_SRCDIR}/md5.c
${WOLFCRYPT_SRCDIR}/memory.c
${WOLFCRYPT_SRCDIR}/pkcs12.c
${WOLFCRYPT_SRCDIR}/pwdbased.c
-${WOLFCRYPT_SRCDIR}/rabbit.c
${WOLFCRYPT_SRCDIR}/random.c
${WOLFCRYPT_SRCDIR}/rsa.c
${WOLFCRYPT_SRCDIR}/sha.c
diff --git a/include/my_compiler.h b/include/my_compiler.h
index d35a9104c50..ff049f3d8a6 100644
--- a/include/my_compiler.h
+++ b/include/my_compiler.h
@@ -2,7 +2,7 @@
#define MY_COMPILER_INCLUDED
/* Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
- Copyright (c) 2017, 2020, MariaDB Corporation.
+ Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -39,15 +39,8 @@
/* GNU C/C++ */
#if defined __GNUC__
-/* Convenience macro to test the minimum required GCC version. */
-# define MY_GNUC_PREREQ(maj, min) \
- ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-/* Any after 2.95... */
# define MY_ALIGN_EXT
-/* Comunicate to the compiler the unreachability of the code. */
-# if MY_GNUC_PREREQ(4,5)
-# define MY_ASSERT_UNREACHABLE() __builtin_unreachable()
-# endif
+# define MY_ASSERT_UNREACHABLE() __builtin_unreachable()
/* Microsoft Visual C++ */
#elif defined _MSC_VER
@@ -84,10 +77,6 @@
Generic (compiler-independent) features.
*/
-#ifndef MY_GNUC_PREREQ
-# define MY_GNUC_PREREQ(maj, min) (0)
-#endif
-
#ifndef MY_ALIGNOF
# ifdef __cplusplus
template<typename type> struct my_alignof_helper { char m1; type m2; };
@@ -158,7 +147,6 @@ struct my_aligned_storage
#ifdef __GNUC__
# define ATTRIBUTE_NORETURN __attribute__((noreturn))
# define ATTRIBUTE_NOINLINE __attribute__((noinline))
-# if MY_GNUC_PREREQ(4,3)
/** Starting with GCC 4.3, the "cold" attribute is used to inform the
compiler that a function is unlikely executed. The function is
optimized for size rather than speed and on many targets it is placed
@@ -167,8 +155,7 @@ appears close together improving code locality of non-cold parts of
program. The paths leading to call of cold functions within code are
marked as unlikely by the branch prediction mechanism. optimize a
rarely invoked function for size instead for speed. */
-# define ATTRIBUTE_COLD __attribute__((cold))
-# endif
+# define ATTRIBUTE_COLD __attribute__((cold))
#elif defined _MSC_VER
# define ATTRIBUTE_NORETURN __declspec(noreturn)
# define ATTRIBUTE_NOINLINE __declspec(noinline)
diff --git a/include/my_valgrind.h b/include/my_valgrind.h
index a24ad597d36..dfe2c3db7b3 100644
--- a/include/my_valgrind.h
+++ b/include/my_valgrind.h
@@ -83,12 +83,6 @@ https://github.com/google/sanitizers/wiki/AddressSanitizerManualPoisoning */
# define MSAN_STAT_WORKAROUND(st) ((void) 0)
#endif /* __has_feature(memory_sanitizer) */
-#ifdef HAVE_valgrind
-#define IF_VALGRIND(A,B) A
-#else
-#define IF_VALGRIND(A,B) B
-#endif
-
#ifdef TRASH_FREED_MEMORY
/*
_TRASH_FILL() has to call MEM_MAKE_ADDRESSABLE() to cancel any effect of
diff --git a/mysql-test/main/brackets.result b/mysql-test/main/brackets.result
index 88707cfb5df..3fd19ef968a 100644
--- a/mysql-test/main/brackets.result
+++ b/mysql-test/main/brackets.result
@@ -4163,7 +4163,7 @@ create view v1 as
(select * from t2 order by a limit 2) order by b desc;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__3`.`a` AS `a`,`__3`.`b` AS `b` from (select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` order by `test`.`t2`.`a` limit 2) `__3` order by `__3`.`b` desc latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__3`.`a` AS `a`,`__3`.`b` AS `b` from (select `t2`.`a` AS `a`,`t2`.`b` AS `b` from `t2` order by `t2`.`a` limit 2) `__3` order by `__3`.`b` desc latin1 latin1_swedish_ci
select * from v1;
a b
2 20
@@ -4262,7 +4262,7 @@ union
select a from t1 where a=7;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__5`.`a` AS `a` from (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` <= 3 except select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` >= 3) `__5` union select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 7 latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__5`.`a` AS `a` from (select `t1`.`a` AS `a` from `t1` where `t1`.`a` <= 3 except select `t1`.`a` AS `a` from `t1` where `t1`.`a` >= 3) `__5` union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 7 latin1 latin1_swedish_ci
select * from v1;
a
1
@@ -4289,7 +4289,7 @@ union
( select a from t1 where a=4 ) ) );
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 1 union select `__7`.`a` AS `a` from (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 3 union select `__6`.`a` AS `a` from (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 2 union (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 4)) `__6`) `__7` latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1 union select `__7`.`a` AS `a` from (select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 3 union select `__6`.`a` AS `a` from (select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 2 union (select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 4)) `__6`) `__7` latin1 latin1_swedish_ci
select * from v1;
a
1
@@ -4307,7 +4307,7 @@ union
select a from t1 where a=1;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__7`.`a` AS `a` from (select `__5`.`a` AS `a` from (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` >= 2 union select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 1 order by `a` desc limit 2) `__5` union select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 3 order by `a` limit 2) `__7` union select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 1 latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__7`.`a` AS `a` from (select `__5`.`a` AS `a` from (select `t1`.`a` AS `a` from `t1` where `t1`.`a` >= 2 union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1 order by `a` desc limit 2) `__5` union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 3 order by `a` limit 2) `__7` union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1 latin1 latin1_swedish_ci
select * from v1;
a
3
@@ -4416,7 +4416,7 @@ union
select a from t1 where a=2 order by a desc limit 3;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__5`.`a` AS `a` from (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 1 union values (3),(4),(2) order by 1 desc) `__5` union select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 2 order by `a` desc limit 3 latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__5`.`a` AS `a` from (select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1 union values (3),(4),(2) order by 1 desc) `__5` union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 2 order by `a` desc limit 3 latin1 latin1_swedish_ci
select * from v1;
a
4
@@ -4429,7 +4429,7 @@ with t as (select * from t1 where a <=3)
select * from t;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` <= 3)select `t`.`a` AS `a` from `t` latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` <= 3)select `t`.`a` AS `a` from `t` latin1 latin1_swedish_ci
select * from v1;
a
3
@@ -4445,7 +4445,7 @@ order by a desc limit 3 )
select a from t1 where a=4 union select a from t where a=7;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` < 3 union select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` > 3 order by `a` desc limit 3)select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3 union select `t1`.`a` AS `a` from `t1` where `t1`.`a` > 3 order by `a` desc limit 3)select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 latin1 latin1_swedish_ci
select * from v1;
a
4
@@ -4461,7 +4461,7 @@ order by a desc limit 3 )
(select a from t1 where a=4 union select a from t where a=7 order by a desc);
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as ((select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` < 3) union (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` > 3) order by `a` desc limit 3)select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as ((select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3) union (select `t1`.`a` AS `a` from `t1` where `t1`.`a` > 3) order by `a` desc limit 3)select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a
7
@@ -4476,7 +4476,7 @@ order by a desc limit 3 )
(select a from t where a=4 union select a from t where a=7 order by a desc);
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as ((select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` < 3) union (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` > 3) order by `a` desc limit 3)select `t`.`a` AS `a` from `t` where `t`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as ((select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3) union (select `t1`.`a` AS `a` from `t1` where `t1`.`a` > 3) order by `a` desc limit 3)select `t`.`a` AS `a` from `t` where `t`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a
7
@@ -4501,7 +4501,7 @@ order by 1 desc limit 3 )
select a from t1 where a=4 union select a from t where a=7 order by a desc;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t(`a`) as (values (2),(1) union (values (4),(7)) order by 1 desc limit 3)select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t(`a`) as (values (2),(1) union (values (4),(7)) order by 1 desc limit 3)select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a
7
@@ -4516,7 +4516,7 @@ order by 1 desc limit 3 )
select a from t1 where a=1 union select a from t where a=7 order by a desc;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t(`a`) as ((values (2),(1)) union (values (4),(7) order by 1 desc) order by 1 desc limit 3)select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 1 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t(`a`) as ((values (2),(1)) union (values (4),(7) order by 1 desc) order by 1 desc limit 3)select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a
7
@@ -4528,7 +4528,7 @@ s as (select * from t1 where a > 3)
select a from t where a=1 union select a from s where a=7 order by a desc;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` < 3), s as (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` > 3)select `t`.`a` AS `a` from `t` where `t`.`a` = 1 union select `s`.`a` AS `a` from `s` where `s`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3), s as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` > 3)select `t`.`a` AS `a` from `t` where `t`.`a` = 1 union select `s`.`a` AS `a` from `s` where `s`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a
7
@@ -4540,7 +4540,7 @@ s as (select * from t where a > 3)
select a from t where a=1 union select a from s where a=7 order by a desc;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` < 3), s as (select `t`.`a` AS `a` from `t` where `t`.`a` > 3)select `t`.`a` AS `a` from `t` where `t`.`a` = 1 union select `s`.`a` AS `a` from `s` where `s`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3), s as (select `t`.`a` AS `a` from `t` where `t`.`a` > 3)select `t`.`a` AS `a` from `t` where `t`.`a` = 1 union select `s`.`a` AS `a` from `s` where `s`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a
1
diff --git a/mysql-test/main/cte_cycle.result b/mysql-test/main/cte_cycle.result
index e7e0cc5f801..e66d090b3c7 100644
--- a/mysql-test/main/cte_cycle.result
+++ b/mysql-test/main/cte_cycle.result
@@ -67,7 +67,7 @@ FROM t1, cte WHERE t1.from_ = cte.to_
select * from cte;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with recursive cte(`depth`,`from_`,`to_`) as (select 0 AS `depth`,1 AS `from_`,1 AS `to_` union select `cte`.`depth` + 1 AS `depth+1`,`test`.`t1`.`from_` AS `from_`,`test`.`t1`.`to_` AS `to_` from (`test`.`t1` join `cte`) where `test`.`t1`.`from_` = `cte`.`to_`) CYCLE `from_`,`to_` RESTRICT select `cte`.`depth` AS `depth`,`cte`.`from_` AS `from_`,`cte`.`to_` AS `to_` from `cte` latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with recursive cte(`depth`,`from_`,`to_`) as (select 0 AS `depth`,1 AS `from_`,1 AS `to_` union select `cte`.`depth` + 1 AS `depth+1`,`t1`.`from_` AS `from_`,`t1`.`to_` AS `to_` from (`t1` join `cte`) where `t1`.`from_` = `cte`.`to_`) CYCLE `from_`,`to_` RESTRICT select `cte`.`depth` AS `depth`,`cte`.`from_` AS `from_`,`cte`.`to_` AS `to_` from `cte` latin1 latin1_swedish_ci
select * from v1;
depth from_ to_
0 1 1
diff --git a/mysql-test/main/cte_nonrecursive.result b/mysql-test/main/cte_nonrecursive.result
index a84a804a20d..f7871d4f929 100644
--- a/mysql-test/main/cte_nonrecursive.result
+++ b/mysql-test/main/cte_nonrecursive.result
@@ -571,7 +571,7 @@ with t as (select a from t1 where b >= 'c')
select * from t2,t where t2.c=t.a;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`b` >= 'c')select `test`.`t2`.`c` AS `c`,`t`.`a` AS `a` from (`test`.`t2` join `t`) where `test`.`t2`.`c` = `t`.`a` latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`b` >= 'c')select `t2`.`c` AS `c`,`t`.`a` AS `a` from (`t2` join `t`) where `t2`.`c` = `t`.`a` latin1 latin1_swedish_ci
select * from v1;
c a
4 4
@@ -588,7 +588,7 @@ with t as (select a, count(*) from t1 where b >= 'c' group by a)
select * from t2,t where t2.c=t.a;
show create view v2;
View Create View character_set_client collation_connection
-v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS with t as (select `test`.`t1`.`a` AS `a`,count(0) AS `count(*)` from `test`.`t1` where `test`.`t1`.`b` >= 'c' group by `test`.`t1`.`a`)select `test`.`t2`.`c` AS `c`,`t`.`a` AS `a`,`t`.`count(*)` AS `count(*)` from (`test`.`t2` join `t`) where `test`.`t2`.`c` = `t`.`a` latin1 latin1_swedish_ci
+v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS with t as (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` where `t1`.`b` >= 'c' group by `t1`.`a`)select `t2`.`c` AS `c`,`t`.`a` AS `a`,`t`.`count(*)` AS `count(*)` from (`t2` join `t`) where `t2`.`c` = `t`.`a` latin1 latin1_swedish_ci
select * from v2;
c a count(*)
4 4 2
@@ -606,7 +606,7 @@ with t(c) as (select a from t1 where b >= 'c')
select * from t r1 where r1.c=4;
show create view v3;
View Create View character_set_client collation_connection
-v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS with t(`c`) as (select `test`.`t1`.`a` AS `c` from `test`.`t1` where `test`.`t1`.`b` >= 'c')select `r1`.`c` AS `c` from `t` `r1` where `r1`.`c` = 4 latin1 latin1_swedish_ci
+v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS with t(`c`) as (select `t1`.`a` AS `c` from `t1` where `t1`.`b` >= 'c')select `r1`.`c` AS `c` from `t` `r1` where `r1`.`c` = 4 latin1 latin1_swedish_ci
select * from v3;
c
4
@@ -618,7 +618,7 @@ with t(c) as (select a from t1 where b >= 'c')
select * from t r1, t r2 where r1.c=r2.c and r2.c=4;
show create view v4;
View Create View character_set_client collation_connection
-v4 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v4` AS with t(`c`) as (select `test`.`t1`.`a` AS `c` from `test`.`t1` where `test`.`t1`.`b` >= 'c')select `r1`.`c` AS `c`,`r2`.`c` AS `d` from (`t` `r1` join `t` `r2`) where `r1`.`c` = `r2`.`c` and `r2`.`c` = 4 latin1 latin1_swedish_ci
+v4 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v4` AS with t(`c`) as (select `t1`.`a` AS `c` from `t1` where `t1`.`b` >= 'c')select `r1`.`c` AS `c`,`r2`.`c` AS `d` from (`t` `r1` join `t` `r2`) where `r1`.`c` = `r2`.`c` and `r2`.`c` = 4 latin1 latin1_swedish_ci
select * from v4;
c d
4 4
@@ -1021,10 +1021,10 @@ select a from t1;
show table status;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `s`.`a` AS `a` from (select `test`.`t1`.`a` AS `a` from `test`.`t1`) `s`), r as (select `t`.`a` AS `a` from (`test`.`t2` join `t`) where `test`.`t2`.`b` = `t`.`a`)select `r`.`a` AS `a` from `r` latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `s`.`a` AS `a` from (select `t1`.`a` AS `a` from `t1`) `s`), r as (select `t`.`a` AS `a` from (`t2` join `t`) where `t2`.`b` = `t`.`a`)select `r`.`a` AS `a` from `r` latin1 latin1_swedish_ci
show create view v2;
View Create View character_set_client collation_connection
-v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS with t as (select `s`.`a` AS `a` from (select `test`.`t1`.`a` AS `a` from `test`.`t1`) `s`), r as (select `t`.`a` AS `a` from (`test`.`t2` join `t`) where `test`.`t2`.`b` = `t`.`a`)select `test`.`t1`.`a` AS `a` from `test`.`t1` latin1 latin1_swedish_ci
+v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS with t as (select `s`.`a` AS `a` from (select `t1`.`a` AS `a` from `t1`) `s`), r as (select `t`.`a` AS `a` from (`t2` join `t`) where `t2`.`b` = `t`.`a`)select `t1`.`a` AS `a` from `t1` latin1 latin1_swedish_ci
select * from v1;
a
2
@@ -1349,7 +1349,7 @@ r.r_regionkey in
select r_regionkey from t where r_name <> "ASIA");
show create view v;
View Create View character_set_client collation_connection
-v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select `n`.`n_nationkey` AS `n_nationkey`,`n`.`n_name` AS `n_name`,`n`.`n_regionkey` AS `n_regionkey`,`r`.`r_regionkey` AS `r_regionkey`,`r`.`r_name` AS `r_name` from (`test`.`nation` `n` join `test`.`region` `r`) where `n`.`n_regionkey` = `r`.`r_regionkey` and `r`.`r_regionkey` in (with t as (select `test`.`region`.`r_regionkey` AS `r_regionkey`,`test`.`region`.`r_name` AS `r_name` from `test`.`region` where `test`.`region`.`r_regionkey` <= 3)select `t`.`r_regionkey` from `t` where `t`.`r_name` <> 'ASIA') latin1 latin1_swedish_ci
+v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select `n`.`n_nationkey` AS `n_nationkey`,`n`.`n_name` AS `n_name`,`n`.`n_regionkey` AS `n_regionkey`,`r`.`r_regionkey` AS `r_regionkey`,`r`.`r_name` AS `r_name` from (`nation` `n` join `region` `r`) where `n`.`n_regionkey` = `r`.`r_regionkey` and `r`.`r_regionkey` in (with t as (select `region`.`r_regionkey` AS `r_regionkey`,`region`.`r_name` AS `r_name` from `region` where `region`.`r_regionkey` <= 3)select `t`.`r_regionkey` from `t` where `t`.`r_name` <> 'ASIA') latin1 latin1_swedish_ci
select * from v;
n_nationkey n_name n_regionkey r_regionkey r_name
0 ALGERIA 0 0 AFRICA
diff --git a/mysql-test/main/cte_recursive.result b/mysql-test/main/cte_recursive.result
index e2ca6d0b118..bb01d0d69a2 100644
--- a/mysql-test/main/cte_recursive.result
+++ b/mysql-test/main/cte_recursive.result
@@ -818,7 +818,7 @@ where p.id = a.father or p.id = a.mother
select * from ancestors;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with recursive ancestors as (select `test`.`folks`.`id` AS `id`,`test`.`folks`.`name` AS `name`,`test`.`folks`.`dob` AS `dob`,`test`.`folks`.`father` AS `father`,`test`.`folks`.`mother` AS `mother` from `test`.`folks` where `test`.`folks`.`name` = 'Me' and `test`.`folks`.`dob` = '2000-01-01' union select `p`.`id` AS `id`,`p`.`name` AS `name`,`p`.`dob` AS `dob`,`p`.`father` AS `father`,`p`.`mother` AS `mother` from (`test`.`folks` `p` join `ancestors` `a`) where `p`.`id` = `a`.`father` or `p`.`id` = `a`.`mother`)select `ancestors`.`id` AS `id`,`ancestors`.`name` AS `name`,`ancestors`.`dob` AS `dob`,`ancestors`.`father` AS `father`,`ancestors`.`mother` AS `mother` from `ancestors` latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with recursive ancestors as (select `folks`.`id` AS `id`,`folks`.`name` AS `name`,`folks`.`dob` AS `dob`,`folks`.`father` AS `father`,`folks`.`mother` AS `mother` from `folks` where `folks`.`name` = 'Me' and `folks`.`dob` = '2000-01-01' union select `p`.`id` AS `id`,`p`.`name` AS `name`,`p`.`dob` AS `dob`,`p`.`father` AS `father`,`p`.`mother` AS `mother` from (`folks` `p` join `ancestors` `a`) where `p`.`id` = `a`.`father` or `p`.`id` = `a`.`mother`)select `ancestors`.`id` AS `id`,`ancestors`.`name` AS `name`,`ancestors`.`dob` AS `dob`,`ancestors`.`father` AS `father`,`ancestors`.`mother` AS `mother` from `ancestors` latin1 latin1_swedish_ci
select * from v1;
id name dob father mother
100 Me 2000-01-01 20 30
@@ -849,7 +849,7 @@ where p.id = ma.mother
select * from ancestors;
show create view v2;
View Create View character_set_client collation_connection
-v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS with recursive ancestors as (select `test`.`folks`.`id` AS `id`,`test`.`folks`.`name` AS `name`,`test`.`folks`.`dob` AS `dob`,`test`.`folks`.`father` AS `father`,`test`.`folks`.`mother` AS `mother` from `test`.`folks` where `test`.`folks`.`name` = 'Me' union select `p`.`id` AS `id`,`p`.`name` AS `name`,`p`.`dob` AS `dob`,`p`.`father` AS `father`,`p`.`mother` AS `mother` from (`test`.`folks` `p` join `ancestors` `fa`) where `p`.`id` = `fa`.`father` union select `p`.`id` AS `id`,`p`.`name` AS `name`,`p`.`dob` AS `dob`,`p`.`father` AS `father`,`p`.`mother` AS `mother` from (`test`.`folks` `p` join `ancestors` `ma`) where `p`.`id` = `ma`.`mother`)select `ancestors`.`id` AS `id`,`ancestors`.`name` AS `name`,`ancestors`.`dob` AS `dob`,`ancestors`.`father` AS `father`,`ancestors`.`mother` AS `mother` from `ancestors` latin1 latin1_swedish_ci
+v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS with recursive ancestors as (select `folks`.`id` AS `id`,`folks`.`name` AS `name`,`folks`.`dob` AS `dob`,`folks`.`father` AS `father`,`folks`.`mother` AS `mother` from `folks` where `folks`.`name` = 'Me' union select `p`.`id` AS `id`,`p`.`name` AS `name`,`p`.`dob` AS `dob`,`p`.`father` AS `father`,`p`.`mother` AS `mother` from (`folks` `p` join `ancestors` `fa`) where `p`.`id` = `fa`.`father` union select `p`.`id` AS `id`,`p`.`name` AS `name`,`p`.`dob` AS `dob`,`p`.`father` AS `father`,`p`.`mother` AS `mother` from (`folks` `p` join `ancestors` `ma`) where `p`.`id` = `ma`.`mother`)select `ancestors`.`id` AS `id`,`ancestors`.`name` AS `name`,`ancestors`.`dob` AS `dob`,`ancestors`.`father` AS `father`,`ancestors`.`mother` AS `mother` from `ancestors` latin1 latin1_swedish_ci
select * from v2;
id name dob father mother
100 Me 2000-01-01 20 30
@@ -4122,10 +4122,6 @@ ANALYZE
{
"query_block": {
"union_result": {
- "table_name": "<union1,4>",
- "access_type": "ALL",
- "r_loops": 0,
- "r_rows": null,
"query_specifications": [
{
"query_block": {
diff --git a/mysql-test/main/ctype_collate.result b/mysql-test/main/ctype_collate.result
index 93bf07908b5..62a92ac9d92 100644
--- a/mysql-test/main/ctype_collate.result
+++ b/mysql-test/main/ctype_collate.result
@@ -756,3 +756,20 @@ hex(b)
61
drop table t1;
+#
+# Start of 10.2 tests
+#
+#
+# MDEV-27690 Crash on `CHARACTER SET csname COLLATE DEFAULT` in column definition
+#
+CREATE TABLE t1 (a CHAR(10) CHARACTER SET latin1 COLLATE DEFAULT);
+DROP TABLE t1;
+SELECT CAST('a' AS CHAR(10) CHARACTER SET latin1 COLLATE DEFAULT);
+CAST('a' AS CHAR(10) CHARACTER SET latin1 COLLATE DEFAULT)
+a
+SELECT COLUMN_GET(COLUMN_CREATE(0, 'string'),0 AS CHAR CHARACTER SET latin1 COLLATE DEFAULT) AS c1;
+c1
+string
+#
+# End of 10.2 tests
+#
diff --git a/mysql-test/main/ctype_collate.test b/mysql-test/main/ctype_collate.test
index 6704395a0a1..ce8559732ee 100644
--- a/mysql-test/main/ctype_collate.test
+++ b/mysql-test/main/ctype_collate.test
@@ -339,3 +339,20 @@ select hex(b) from t1 where b<'zzz' order by b;
drop table t1;
+--echo #
+--echo # Start of 10.2 tests
+--echo #
+
+--echo #
+--echo # MDEV-27690 Crash on `CHARACTER SET csname COLLATE DEFAULT` in column definition
+--echo #
+
+CREATE TABLE t1 (a CHAR(10) CHARACTER SET latin1 COLLATE DEFAULT);
+DROP TABLE t1;
+SELECT CAST('a' AS CHAR(10) CHARACTER SET latin1 COLLATE DEFAULT);
+SELECT COLUMN_GET(COLUMN_CREATE(0, 'string'),0 AS CHAR CHARACTER SET latin1 COLLATE DEFAULT) AS c1;
+
+
+--echo #
+--echo # End of 10.2 tests
+--echo #
diff --git a/mysql-test/main/ctype_utf32_innodb.result b/mysql-test/main/ctype_utf32_innodb.result
new file mode 100644
index 00000000000..82b7348cabb
--- /dev/null
+++ b/mysql-test/main/ctype_utf32_innodb.result
@@ -0,0 +1,34 @@
+#
+# Start of 10.3 tests
+#
+#
+# MDEV-28062 Assertion `(length % 4) == 0' failed in my_lengthsp_utf32 on INSERT..SELECT
+#
+SET sql_mode='';
+CREATE TABLE t1 (
+HOST CHAR DEFAULT '%',
+USER CHAR DEFAULT '%',
+ROLE CHAR DEFAULT '%',
+ENABLED ENUM ('a','a') DEFAULT 'a',
+HISTORY ENUM ('a','a') DEFAULT 'a'
+) COLLATE=utf32_general_ci ENGINE=InnoDB;
+Warnings:
+Note 1291 Column 'ENABLED' has duplicated value 'a' in ENUM
+Note 1291 Column 'HISTORY' has duplicated value 'a' in ENUM
+INSERT INTO t1 SELECT * FROM t1;
+DROP TABLE t1;
+CREATE TABLE t1 (
+HOST CHAR DEFAULT '%',
+USER CHAR DEFAULT '%',
+ROLE CHAR DEFAULT '%',
+ENABLED ENUM ('a','a') DEFAULT 'a',
+HISTORY ENUM ('a','a') DEFAULT 'a'
+) COLLATE=utf32_general_ci ENGINE=MyISAM;
+Warnings:
+Note 1291 Column 'ENABLED' has duplicated value 'a' in ENUM
+Note 1291 Column 'HISTORY' has duplicated value 'a' in ENUM
+INSERT INTO t1 SELECT * FROM t1;
+DROP TABLE t1;
+#
+# End of 10.3 tests
+#
diff --git a/mysql-test/main/ctype_utf32_innodb.test b/mysql-test/main/ctype_utf32_innodb.test
new file mode 100644
index 00000000000..1663b5adafb
--- /dev/null
+++ b/mysql-test/main/ctype_utf32_innodb.test
@@ -0,0 +1,35 @@
+--source include/have_innodb.inc
+
+--echo #
+--echo # Start of 10.3 tests
+--echo #
+
+--echo #
+--echo # MDEV-28062 Assertion `(length % 4) == 0' failed in my_lengthsp_utf32 on INSERT..SELECT
+--echo #
+
+SET sql_mode='';
+
+CREATE TABLE t1 (
+ HOST CHAR DEFAULT '%',
+ USER CHAR DEFAULT '%',
+ ROLE CHAR DEFAULT '%',
+ ENABLED ENUM ('a','a') DEFAULT 'a',
+ HISTORY ENUM ('a','a') DEFAULT 'a'
+) COLLATE=utf32_general_ci ENGINE=InnoDB;
+INSERT INTO t1 SELECT * FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (
+ HOST CHAR DEFAULT '%',
+ USER CHAR DEFAULT '%',
+ ROLE CHAR DEFAULT '%',
+ ENABLED ENUM ('a','a') DEFAULT 'a',
+ HISTORY ENUM ('a','a') DEFAULT 'a'
+) COLLATE=utf32_general_ci ENGINE=MyISAM;
+INSERT INTO t1 SELECT * FROM t1;
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.3 tests
+--echo #
diff --git a/mysql-test/main/derived_cond_pushdown.result b/mysql-test/main/derived_cond_pushdown.result
index b990db091c7..4901c519033 100644
--- a/mysql-test/main/derived_cond_pushdown.result
+++ b/mysql-test/main/derived_cond_pushdown.result
@@ -12266,8 +12266,6 @@ EXPLAIN
"materialized": {
"query_block": {
"union_result": {
- "table_name": "<union2,3>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
@@ -16865,8 +16863,6 @@ EXPLAIN
"materialized": {
"query_block": {
"union_result": {
- "table_name": "<union2,3>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
@@ -17115,8 +17111,6 @@ EXPLAIN
"materialized": {
"query_block": {
"union_result": {
- "table_name": "<union2,3,4>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
diff --git a/mysql-test/main/explain_json.result b/mysql-test/main/explain_json.result
index a107fa3a6ff..cf1aa172146 100644
--- a/mysql-test/main/explain_json.result
+++ b/mysql-test/main/explain_json.result
@@ -303,8 +303,6 @@ EXPLAIN
{
"query_block": {
"union_result": {
- "table_name": "<union1,2>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
diff --git a/mysql-test/main/get_diagnostics.result b/mysql-test/main/get_diagnostics.result
index 2e749fa21d7..9f57ef4cabf 100644
--- a/mysql-test/main/get_diagnostics.result
+++ b/mysql-test/main/get_diagnostics.result
@@ -1811,3 +1811,38 @@ SELECT @n;
@n
4
DROP TABLE t;
+#
+# MDEV-26695: Number of an invalid row is not calculated for table value constructor
+#
+CREATE TABLE t1 (a CHAR(1)) VALUES ('a'),('b'),('foo');
+Warnings:
+Warning 1406 Data too long for column 'a' at row 3
+GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER;
+SELECT @n;
+@n
+3
+CREATE TABLE t2 (a CHAR(1)) VALUES ('a'),('b') UNION VALUES ('foo');
+Warnings:
+Warning 1406 Data too long for column 'a' at row 3
+GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER;
+SELECT @n;
+@n
+3
+DROP TABLE t1, t2;
+# Checking that CREATE ... SELECT works
+CREATE TABLE t1 (val1 CHAR(5));
+INSERT INTO t1 VALUES ('A'),('B'),('C'),('DEF');
+CREATE TABLE t2 (val2 CHAR(1)) SELECT val1 as val2 FROM t1;
+Warnings:
+Warning 1406 Data too long for column 'val2' at row 4
+GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER;
+SELECT @n;
+@n
+4
+SELECT * FROM t2;
+val2
+A
+B
+C
+D
+DROP TABLE t1,t2;
diff --git a/mysql-test/main/get_diagnostics.test b/mysql-test/main/get_diagnostics.test
index e8d81dca1e6..7292443a8b5 100644
--- a/mysql-test/main/get_diagnostics.test
+++ b/mysql-test/main/get_diagnostics.test
@@ -1687,3 +1687,27 @@ GET DIAGNOSTICS CONDITION 3 @n = ROW_NUMBER;
SELECT @n;
DROP TABLE t;
+
+--echo #
+--echo # MDEV-26695: Number of an invalid row is not calculated for table value constructor
+--echo #
+
+CREATE TABLE t1 (a CHAR(1)) VALUES ('a'),('b'),('foo');
+GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER;
+SELECT @n;
+CREATE TABLE t2 (a CHAR(1)) VALUES ('a'),('b') UNION VALUES ('foo');
+GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER;
+SELECT @n;
+
+DROP TABLE t1, t2;
+
+--echo # Checking that CREATE ... SELECT works
+
+CREATE TABLE t1 (val1 CHAR(5));
+INSERT INTO t1 VALUES ('A'),('B'),('C'),('DEF');
+CREATE TABLE t2 (val2 CHAR(1)) SELECT val1 as val2 FROM t1;
+GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER;
+SELECT @n;
+SELECT * FROM t2;
+
+DROP TABLE t1,t2;
diff --git a/mysql-test/main/intersect.result b/mysql-test/main/intersect.result
index aa6d48553f1..c6890e464a8 100644
--- a/mysql-test/main/intersect.result
+++ b/mysql-test/main/intersect.result
@@ -776,7 +776,7 @@ a b
drop procedure p1;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1`) union select `__6`.`c` AS `c`,`__6`.`d` AS `d` from ((select `test`.`t2`.`c` AS `c`,`test`.`t2`.`d` AS `d` from `test`.`t2`) intersect (select `test`.`t3`.`e` AS `e`,`test`.`t3`.`f` AS `f` from `test`.`t3`)) `__6` union (select 4 AS `4`,4 AS `4`) latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1`) union select `__6`.`c` AS `c`,`__6`.`d` AS `d` from ((select `t2`.`c` AS `c`,`t2`.`d` AS `d` from `t2`) intersect (select `t3`.`e` AS `e`,`t3`.`f` AS `f` from `t3`)) `__6` union (select 4 AS `4`,4 AS `4`) latin1 latin1_swedish_ci
drop view v1;
drop tables t1,t2,t3;
#
diff --git a/mysql-test/main/intersect_all.result b/mysql-test/main/intersect_all.result
index 243497ffc4f..4589d226fa3 100644
--- a/mysql-test/main/intersect_all.result
+++ b/mysql-test/main/intersect_all.result
@@ -829,7 +829,7 @@ a b
drop procedure p1;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1`) union all select `__6`.`c` AS `c`,`__6`.`d` AS `d` from ((select `test`.`t2`.`c` AS `c`,`test`.`t2`.`d` AS `d` from `test`.`t2`) intersect all (select `test`.`t3`.`e` AS `e`,`test`.`t3`.`f` AS `f` from `test`.`t3`)) `__6` union all (select 4 AS `4`,4 AS `4`) latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1`) union all select `__6`.`c` AS `c`,`__6`.`d` AS `d` from ((select `t2`.`c` AS `c`,`t2`.`d` AS `d` from `t2`) intersect all (select `t3`.`e` AS `e`,`t3`.`f` AS `f` from `t3`)) `__6` union all (select 4 AS `4`,4 AS `4`) latin1 latin1_swedish_ci
drop view v1;
drop tables t1,t2,t3;
CREATE TABLE t (i INT);
diff --git a/mysql-test/main/lock_view.result b/mysql-test/main/lock_view.result
index 364c2cddf60..48c45dcf23d 100644
--- a/mysql-test/main/lock_view.result
+++ b/mysql-test/main/lock_view.result
@@ -256,7 +256,7 @@ SET character_set_client = @saved_cs_client;
/*!50001 SET collation_connection = latin1_swedish_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`u1`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `v1` AS select `dt`.`id` AS `id` from (select `test`.`t1`.`id` AS `id` from `test`.`t1`) `dt` */;
+/*!50001 VIEW `v1` AS select `dt`.`id` AS `id` from (select `t1`.`id` AS `id` from `t1`) `dt` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
diff --git a/mysql-test/main/mysql_tzinfo_to_sql_symlink.result b/mysql-test/main/mysql_tzinfo_to_sql_symlink.result
index 568a280158a..e9bfef604e8 100644
--- a/mysql-test/main/mysql_tzinfo_to_sql_symlink.result
+++ b/mysql-test/main/mysql_tzinfo_to_sql_symlink.result
@@ -1,37 +1,32 @@
-use mysql;
-RENAME TABLE time_zone TO time_zone_orig,
-time_zone_name TO time_zone_name_orig,
-time_zone_transition TO time_zone_transition_orig,
-time_zone_transition_type TO time_zone_transition_type_orig,
-time_zone_leap_second TO time_zone_leap_second_orig;
-CREATE TABLE time_zone LIKE time_zone_orig;
-CREATE TABLE time_zone_name LIKE time_zone_name_orig;
-CREATE TABLE time_zone_transition LIKE time_zone_transition_orig;
-CREATE TABLE time_zone_transition_type LIKE time_zone_transition_type_orig;
-CREATE TABLE time_zone_leap_second LIKE time_zone_leap_second_orig;
+CREATE TABLE time_zone LIKE mysql.time_zone;
+CREATE TABLE time_zone_name LIKE mysql.time_zone_name;
+CREATE TABLE time_zone_transition LIKE mysql.time_zone_transition;
+CREATE TABLE time_zone_transition_type LIKE mysql.time_zone_transition_type;
+CREATE TABLE time_zone_leap_second LIKE mysql.time_zone_leap_second;
#
# MDEV-5226 mysql_tzinfo_to_sql errors with tzdata 2013f and above
#
# Verbose run
-\d |
-IF (select count(*) from information_schema.global_variables where
-variable_name='wsrep_on' and variable_value='ON') = 1 THEN
-ALTER TABLE time_zone ENGINE=InnoDB;
-ALTER TABLE time_zone_name ENGINE=InnoDB;
-ALTER TABLE time_zone_transition ENGINE=InnoDB;
-ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
+set @wsrep_is_on=(select sum(VARIABLE_NAME='wsrep_on' AND SESSION_VALUE='ON') from information_schema.SYSTEM_VARIABLES);
+SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
+set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select sum(VARIABLE_NAME='wsrep_mode' and GLOBAL_VALUE NOT LIKE @replicate_opt) from information_schema.SYSTEM_VARIABLES);
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_name_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_name'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_name ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_transition_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_transition'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_transition_type_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_transition_type'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition_type ENGINE=InnoDB', 'do 0');
TRUNCATE TABLE time_zone;
TRUNCATE TABLE time_zone_name;
TRUNCATE TABLE time_zone_transition;
TRUNCATE TABLE time_zone_transition_type;
-START TRANSACTION;
-ELSE
-TRUNCATE TABLE time_zone;
-TRUNCATE TABLE time_zone_name;
-TRUNCATE TABLE time_zone_transition;
-TRUNCATE TABLE time_zone_transition_type;
-END IF|
-\d ;
+/*M!100602 execute immediate if(@wsrep_cannot_replicate_tz, 'start transaction', 'LOCK TABLES time_zone WRITE,
+ time_zone_leap_second WRITE,
+ time_zone_name WRITE,
+ time_zone_transition WRITE,
+ time_zone_transition_type WRITE')*/;
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
SET @time_zone_id= LAST_INSERT_ID();
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('GMT', @time_zone_id);
@@ -51,52 +46,36 @@ Warning: Unable to load 'MYSQLTEST_VARDIR/zoneinfo/posix/ignored.tab' as time zo
Warning: Skipping directory 'MYSQLTEST_VARDIR/zoneinfo/posix/posix': to avoid infinite symlink recursion.
UNLOCK TABLES;
COMMIT;
-ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time;
-ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id;
-\d |
-IF (select count(*) from information_schema.global_variables where
-variable_name='wsrep_on' and variable_value='ON') = 1 THEN
-ALTER TABLE time_zone ENGINE=Aria;
-ALTER TABLE time_zone_name ENGINE=Aria;
-ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;
-ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;
-END IF|
-\d ;
-SELECT COUNT(*) FROM time_zone;
-COUNT(*)
-0
-SELECT COUNT(*) FROM time_zone_name;
-COUNT(*)
-0
-SELECT COUNT(*) FROM time_zone_transition;
-COUNT(*)
-0
-SELECT COUNT(*) FROM time_zone_transition_type;
-COUNT(*)
-0
-SELECT COUNT(*) FROM time_zone_leap_second;
-COUNT(*)
-0
+execute immediate if(@wsrep_cannot_replicate_tz, 'do 0','ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time');
+execute immediate if(@wsrep_cannot_replicate_tz, 'do 0','ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone ENGINE=', @time_zone_engine), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_name ENGINE=', @time_zone_name_engine), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition ENGINE=', @time_zone_transition_engine, ', ORDER BY Time_zone_id, Transition_time'), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition_type ENGINE=', @time_zone_transition_type_engine, ', ORDER BY Time_zone_id, Transition_type_id'), 'do 0');
+#
+# MDEV-28263: mariadb-tzinfo-to-sql improve wsrep and binlog cases
+#
# Run on zoneinfo directory
-\d |
-IF (select count(*) from information_schema.global_variables where
-variable_name='wsrep_on' and variable_value='ON') = 1 THEN
-ALTER TABLE time_zone ENGINE=InnoDB;
-ALTER TABLE time_zone_name ENGINE=InnoDB;
-ALTER TABLE time_zone_transition ENGINE=InnoDB;
-ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
-TRUNCATE TABLE time_zone;
-TRUNCATE TABLE time_zone_name;
-TRUNCATE TABLE time_zone_transition;
-TRUNCATE TABLE time_zone_transition_type;
-START TRANSACTION;
-ELSE
+set @wsrep_is_on=(select sum(VARIABLE_NAME='wsrep_on' AND SESSION_VALUE='ON') from information_schema.SYSTEM_VARIABLES);
+SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
+set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select sum(VARIABLE_NAME='wsrep_mode' and GLOBAL_VALUE NOT LIKE @replicate_opt) from information_schema.SYSTEM_VARIABLES);
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_name_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_name'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_name ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_transition_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_transition'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_transition_type_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_transition_type'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition_type ENGINE=InnoDB', 'do 0');
TRUNCATE TABLE time_zone;
TRUNCATE TABLE time_zone_name;
TRUNCATE TABLE time_zone_transition;
TRUNCATE TABLE time_zone_transition_type;
-END IF|
-\d ;
+/*M!100602 execute immediate if(@wsrep_cannot_replicate_tz, 'start transaction', 'LOCK TABLES time_zone WRITE,
+ time_zone_leap_second WRITE,
+ time_zone_name WRITE,
+ time_zone_transition WRITE,
+ time_zone_transition_type WRITE')*/;
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
SET @time_zone_id= LAST_INSERT_ID();
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('GMT', @time_zone_id);
@@ -113,17 +92,12 @@ INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, `Offset
Warning: Unable to load 'MYSQLTEST_VARDIR/zoneinfo/posix/garbage' as time zone. Skipping it.
UNLOCK TABLES;
COMMIT;
-ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time;
-ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id;
-\d |
-IF (select count(*) from information_schema.global_variables where
-variable_name='wsrep_on' and variable_value='ON') = 1 THEN
-ALTER TABLE time_zone ENGINE=Aria;
-ALTER TABLE time_zone_name ENGINE=Aria;
-ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;
-ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;
-END IF|
-\d ;
+execute immediate if(@wsrep_cannot_replicate_tz, 'do 0','ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time');
+execute immediate if(@wsrep_cannot_replicate_tz, 'do 0','ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone ENGINE=', @time_zone_engine), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_name ENGINE=', @time_zone_name_engine), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition ENGINE=', @time_zone_transition_engine, ', ORDER BY Time_zone_id, Transition_time'), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition_type ENGINE=', @time_zone_transition_type_engine, ', ORDER BY Time_zone_id, Transition_type_id'), 'do 0');
SELECT COUNT(*) FROM time_zone;
COUNT(*)
2
@@ -142,9 +116,13 @@ COUNT(*)
#
# Run on zoneinfo directory --skip-write-binlog
#
-set @prep1=if((select count(*) from information_schema.global_variables where variable_name='wsrep_on' and variable_value='ON'), 'SET SESSION SQL_LOG_BIN=?, WSREP_ON=OFF;', 'do ?');
-prepare set_wsrep_write_binlog from @prep1;
-set @toggle=0; execute set_wsrep_write_binlog using @toggle;
+set @wsrep_is_on=(select sum(VARIABLE_NAME='wsrep_on' AND SESSION_VALUE='ON') from information_schema.SYSTEM_VARIABLES);
+SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
+set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select sum(VARIABLE_NAME='wsrep_mode' and GLOBAL_VALUE NOT LIKE @replicate_opt) from information_schema.SYSTEM_VARIABLES);
+execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
+SET @save_sql_log_bin=@@SQL_LOG_BIN;
+SET SESSION SQL_LOG_BIN=0;
+SET @wsrep_cannot_replicate_tz=0;
TRUNCATE TABLE time_zone;
TRUNCATE TABLE time_zone_name;
TRUNCATE TABLE time_zone_transition;
@@ -170,8 +148,10 @@ INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, `Offset
Warning: Unable to load 'MYSQLTEST_VARDIR/zoneinfo/posix/garbage' as time zone. Skipping it.
UNLOCK TABLES;
COMMIT;
-ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time;
-ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id;
+execute immediate if(@wsrep_cannot_replicate_tz, 'do 0','ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time');
+execute immediate if(@wsrep_cannot_replicate_tz, 'do 0','ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id');
+SET SESSION SQL_LOG_BIN=@save_sql_log_bin;
+execute immediate if(@wsrep_is_on, 'SET SESSION WSREP_ON=@save_wsrep_on', 'do 0');
SELECT COUNT(*) FROM time_zone;
COUNT(*)
2
@@ -187,6 +167,19 @@ COUNT(*)
SELECT COUNT(*) FROM time_zone_leap_second;
COUNT(*)
0
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@SQL_LOG_BIN;
+@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@SQL_LOG_BIN
+0 0 NULL 1 1
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+FROM information_schema.global_status g
+JOIN baseline b USING (VARIABLE_NAME)
+ORDER BY g.VARIABLE_NAME;
+VARIABLE_NAME diff
+COM_ALTER_TABLE 2
+COM_BEGIN 0
+COM_INSERT 6
+COM_LOCK_TABLES 1
+COM_TRUNCATE 4
TRUNCATE TABLE time_zone;
TRUNCATE TABLE time_zone_name;
TRUNCATE TABLE time_zone_transition;
@@ -195,19 +188,22 @@ TRUNCATE TABLE time_zone_leap_second;
#
# Testing with explicit timezonefile
#
-\d |
-IF (select count(*) from information_schema.global_variables where
-variable_name='wsrep_on' and variable_value='ON') = 1 THEN
-ALTER TABLE time_zone ENGINE=InnoDB;
-ALTER TABLE time_zone_name ENGINE=InnoDB;
-ALTER TABLE time_zone_transition ENGINE=InnoDB;
-ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
-SELECT 'skip truncate tables';
-START TRANSACTION;
-ELSE
-SELECT 'skip truncate tables';
-END IF|
-\d ;
+set @wsrep_is_on=(select sum(VARIABLE_NAME='wsrep_on' AND SESSION_VALUE='ON') from information_schema.SYSTEM_VARIABLES);
+SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
+set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select sum(VARIABLE_NAME='wsrep_mode' and GLOBAL_VALUE NOT LIKE @replicate_opt) from information_schema.SYSTEM_VARIABLES);
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_name_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_name'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_name ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_transition_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_transition'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_transition_type_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_transition_type'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition_type ENGINE=InnoDB', 'do 0');
+/*M!100602 execute immediate if(@wsrep_cannot_replicate_tz, 'start transaction', 'LOCK TABLES time_zone WRITE,
+ time_zone_leap_second WRITE,
+ time_zone_name WRITE,
+ time_zone_transition WRITE,
+ time_zone_transition_type WRITE')*/;
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
SET @time_zone_id= LAST_INSERT_ID();
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('XXX', @time_zone_id);
@@ -216,17 +212,10 @@ INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, `Offset
;
UNLOCK TABLES;
COMMIT;
-\d |
-IF (select count(*) from information_schema.global_variables where
-variable_name='wsrep_on' and variable_value='ON') = 1 THEN
-ALTER TABLE time_zone ENGINE=Aria;
-ALTER TABLE time_zone_name ENGINE=Aria;
-ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;
-ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;
-END IF|
-\d ;
-skip truncate tables
-skip truncate tables
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone ENGINE=', @time_zone_engine), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_name ENGINE=', @time_zone_name_engine), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition ENGINE=', @time_zone_transition_engine, ', ORDER BY Time_zone_id, Transition_time'), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition_type ENGINE=', @time_zone_transition_type_engine, ', ORDER BY Time_zone_id, Transition_type_id'), 'do 0');
SELECT COUNT(*) FROM time_zone;
COUNT(*)
1
@@ -242,6 +231,19 @@ COUNT(*)
SELECT COUNT(*) FROM time_zone_leap_second;
COUNT(*)
0
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@SQL_LOG_BIN;
+@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@SQL_LOG_BIN
+0 0 NULL 1 1
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+FROM information_schema.global_status g
+JOIN baseline b USING (VARIABLE_NAME)
+ORDER BY g.VARIABLE_NAME;
+VARIABLE_NAME diff
+COM_ALTER_TABLE 0
+COM_BEGIN 0
+COM_INSERT 3
+COM_LOCK_TABLES 1
+COM_TRUNCATE 0
TRUNCATE TABLE time_zone;
TRUNCATE TABLE time_zone_name;
TRUNCATE TABLE time_zone_transition;
@@ -250,10 +252,13 @@ TRUNCATE TABLE time_zone_leap_second;
#
# Testing with explicit timezonefile --skip-write-binlog
#
-set @prep1=if((select count(*) from information_schema.global_variables where variable_name='wsrep_on' and variable_value='ON'), 'SET SESSION SQL_LOG_BIN=?, WSREP_ON=OFF;', 'do ?');
-prepare set_wsrep_write_binlog from @prep1;
-set @toggle=0; execute set_wsrep_write_binlog using @toggle;
-SELECT 'skip truncate tables';
+set @wsrep_is_on=(select sum(VARIABLE_NAME='wsrep_on' AND SESSION_VALUE='ON') from information_schema.SYSTEM_VARIABLES);
+SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
+set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select sum(VARIABLE_NAME='wsrep_mode' and GLOBAL_VALUE NOT LIKE @replicate_opt) from information_schema.SYSTEM_VARIABLES);
+execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
+SET @save_sql_log_bin=@@SQL_LOG_BIN;
+SET SESSION SQL_LOG_BIN=0;
+SET @wsrep_cannot_replicate_tz=0;
LOCK TABLES time_zone WRITE,
time_zone_leap_second WRITE,
time_zone_name WRITE,
@@ -267,21 +272,36 @@ INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, `Offset
;
UNLOCK TABLES;
COMMIT;
+SET SESSION SQL_LOG_BIN=@save_sql_log_bin;
+execute immediate if(@wsrep_is_on, 'SET SESSION WSREP_ON=@save_wsrep_on', 'do 0');
SELECT COUNT(*) FROM time_zone;
COUNT(*)
-0
+1
SELECT COUNT(*) FROM time_zone_name;
COUNT(*)
-0
+1
SELECT COUNT(*) FROM time_zone_transition;
COUNT(*)
0
SELECT COUNT(*) FROM time_zone_transition_type;
COUNT(*)
-0
+1
SELECT COUNT(*) FROM time_zone_leap_second;
COUNT(*)
0
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@SQL_LOG_BIN;
+@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@SQL_LOG_BIN
+0 0 NULL 1 1
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+FROM information_schema.global_status g
+JOIN baseline b USING (VARIABLE_NAME)
+ORDER BY g.VARIABLE_NAME;
+VARIABLE_NAME diff
+COM_ALTER_TABLE 0
+COM_BEGIN 0
+COM_INSERT 3
+COM_LOCK_TABLES 1
+COM_TRUNCATE 0
TRUNCATE TABLE time_zone;
TRUNCATE TABLE time_zone_name;
TRUNCATE TABLE time_zone_transition;
@@ -290,46 +310,33 @@ TRUNCATE TABLE time_zone_leap_second;
#
# Testing --leap
#
-\d |
-IF (select count(*) from information_schema.global_variables where
-variable_name='wsrep_on' and variable_value='ON') = 1 THEN
-ALTER TABLE time_zone ENGINE=InnoDB;
-ALTER TABLE time_zone_name ENGINE=InnoDB;
-ALTER TABLE time_zone_transition ENGINE=InnoDB;
-ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
-SELECT 'skip truncate tables';
-START TRANSACTION;
-ELSE
-SELECT 'skip truncate tables';
-END IF|
-\d ;
-\d |
-IF (select count(*) from information_schema.global_variables where
-variable_name='wsrep_on' and variable_value='ON') = 1 THEN
-ALTER TABLE time_zone_leap_second ENGINE=InnoDB;
-END IF|
-\d ;
+set @wsrep_is_on=(select sum(VARIABLE_NAME='wsrep_on' AND SESSION_VALUE='ON') from information_schema.SYSTEM_VARIABLES);
+SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
+set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select sum(VARIABLE_NAME='wsrep_mode' and GLOBAL_VALUE NOT LIKE @replicate_opt) from information_schema.SYSTEM_VARIABLES);
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_name_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_name'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_name ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_transition_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_transition'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_transition_type_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_transition_type'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition_type ENGINE=InnoDB', 'do 0');
+/*M!100602 execute immediate if(@wsrep_cannot_replicate_tz, 'start transaction', 'LOCK TABLES time_zone WRITE,
+ time_zone_leap_second WRITE,
+ time_zone_name WRITE,
+ time_zone_transition WRITE,
+ time_zone_transition_type WRITE')*/;
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_leap_second_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_leap_second'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_leap_second ENGINE=InnoDB', 'do 0');
TRUNCATE TABLE time_zone_leap_second;
-\d |
-IF (select count(*) from information_schema.global_variables where
-variable_name='wsrep_on' and variable_value='ON') = 1 THEN
-ALTER TABLE time_zone_leap_second ENGINE=Aria;
-END IF|
-\d ;
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_leap_second ENGINE=', @time_zone_leap_second_engine), 'do 0');
ALTER TABLE time_zone_leap_second ORDER BY Transition_time;
UNLOCK TABLES;
COMMIT;
-\d |
-IF (select count(*) from information_schema.global_variables where
-variable_name='wsrep_on' and variable_value='ON') = 1 THEN
-ALTER TABLE time_zone ENGINE=Aria;
-ALTER TABLE time_zone_name ENGINE=Aria;
-ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;
-ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;
-END IF|
-\d ;
-skip truncate tables
-skip truncate tables
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone ENGINE=', @time_zone_engine), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_name ENGINE=', @time_zone_name_engine), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition ENGINE=', @time_zone_transition_engine, ', ORDER BY Time_zone_id, Transition_time'), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition_type ENGINE=', @time_zone_transition_type_engine, ', ORDER BY Time_zone_id, Transition_type_id'), 'do 0');
SELECT COUNT(*) FROM time_zone;
COUNT(*)
0
@@ -345,6 +352,19 @@ COUNT(*)
SELECT COUNT(*) FROM time_zone_leap_second;
COUNT(*)
0
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@SQL_LOG_BIN;
+@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@SQL_LOG_BIN
+0 0 NULL 1 1
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+FROM information_schema.global_status g
+JOIN baseline b USING (VARIABLE_NAME)
+ORDER BY g.VARIABLE_NAME;
+VARIABLE_NAME diff
+COM_ALTER_TABLE 1
+COM_BEGIN 0
+COM_INSERT 0
+COM_LOCK_TABLES 1
+COM_TRUNCATE 1
TRUNCATE TABLE time_zone;
TRUNCATE TABLE time_zone_name;
TRUNCATE TABLE time_zone_transition;
@@ -353,10 +373,13 @@ TRUNCATE TABLE time_zone_leap_second;
#
# Testing --skip-write-binlog --leap
#
-set @prep1=if((select count(*) from information_schema.global_variables where variable_name='wsrep_on' and variable_value='ON'), 'SET SESSION SQL_LOG_BIN=?, WSREP_ON=OFF;', 'do ?');
-prepare set_wsrep_write_binlog from @prep1;
-set @toggle=0; execute set_wsrep_write_binlog using @toggle;
-SELECT 'skip truncate tables';
+set @wsrep_is_on=(select sum(VARIABLE_NAME='wsrep_on' AND SESSION_VALUE='ON') from information_schema.SYSTEM_VARIABLES);
+SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
+set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select sum(VARIABLE_NAME='wsrep_mode' and GLOBAL_VALUE NOT LIKE @replicate_opt) from information_schema.SYSTEM_VARIABLES);
+execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
+SET @save_sql_log_bin=@@SQL_LOG_BIN;
+SET SESSION SQL_LOG_BIN=0;
+SET @wsrep_cannot_replicate_tz=0;
LOCK TABLES time_zone WRITE,
time_zone_leap_second WRITE,
time_zone_name WRITE,
@@ -366,8 +389,8 @@ TRUNCATE TABLE time_zone_leap_second;
ALTER TABLE time_zone_leap_second ORDER BY Transition_time;
UNLOCK TABLES;
COMMIT;
-skip truncate tables
-skip truncate tables
+SET SESSION SQL_LOG_BIN=@save_sql_log_bin;
+execute immediate if(@wsrep_is_on, 'SET SESSION WSREP_ON=@save_wsrep_on', 'do 0');
SELECT COUNT(*) FROM time_zone;
COUNT(*)
0
@@ -383,48 +406,56 @@ COUNT(*)
SELECT COUNT(*) FROM time_zone_leap_second;
COUNT(*)
0
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@SQL_LOG_BIN;
+@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@SQL_LOG_BIN
+0 0 NULL 1 1
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+FROM information_schema.global_status g
+JOIN baseline b USING (VARIABLE_NAME)
+ORDER BY g.VARIABLE_NAME;
+VARIABLE_NAME diff
+COM_ALTER_TABLE 1
+COM_BEGIN 0
+COM_INSERT 0
+COM_LOCK_TABLES 1
+COM_TRUNCATE 1
#
# MDEV-6236 - [PATCH] mysql_tzinfo_to_sql may produce invalid SQL
#
-\d |
-IF (select count(*) from information_schema.global_variables where
-variable_name='wsrep_on' and variable_value='ON') = 1 THEN
-ALTER TABLE time_zone ENGINE=InnoDB;
-ALTER TABLE time_zone_name ENGINE=InnoDB;
-ALTER TABLE time_zone_transition ENGINE=InnoDB;
-ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
+set @wsrep_is_on=(select sum(VARIABLE_NAME='wsrep_on' AND SESSION_VALUE='ON') from information_schema.SYSTEM_VARIABLES);
+SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
+set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select sum(VARIABLE_NAME='wsrep_mode' and GLOBAL_VALUE NOT LIKE @replicate_opt) from information_schema.SYSTEM_VARIABLES);
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_name_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_name'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_name ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_transition_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_transition'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition ENGINE=InnoDB', 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_transition_type_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone_transition_type'", 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition_type ENGINE=InnoDB', 'do 0');
TRUNCATE TABLE time_zone;
TRUNCATE TABLE time_zone_name;
TRUNCATE TABLE time_zone_transition;
TRUNCATE TABLE time_zone_transition_type;
-START TRANSACTION;
-ELSE
-TRUNCATE TABLE time_zone;
-TRUNCATE TABLE time_zone_name;
-TRUNCATE TABLE time_zone_transition;
-TRUNCATE TABLE time_zone_transition_type;
-END IF|
-\d ;
+/*M!100602 execute immediate if(@wsrep_cannot_replicate_tz, 'start transaction', 'LOCK TABLES time_zone WRITE,
+ time_zone_leap_second WRITE,
+ time_zone_name WRITE,
+ time_zone_transition WRITE,
+ time_zone_transition_type WRITE')*/;
UNLOCK TABLES;
COMMIT;
-ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time;
-ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id;
-\d |
-IF (select count(*) from information_schema.global_variables where
-variable_name='wsrep_on' and variable_value='ON') = 1 THEN
-ALTER TABLE time_zone ENGINE=Aria;
-ALTER TABLE time_zone_name ENGINE=Aria;
-ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;
-ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;
-END IF|
-\d ;
+execute immediate if(@wsrep_cannot_replicate_tz, 'do 0','ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time');
+execute immediate if(@wsrep_cannot_replicate_tz, 'do 0','ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone ENGINE=', @time_zone_engine), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_name ENGINE=', @time_zone_name_engine), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition ENGINE=', @time_zone_transition_engine, ', ORDER BY Time_zone_id, Transition_time'), 'do 0');
+execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition_type ENGINE=', @time_zone_transition_type_engine, ', ORDER BY Time_zone_id, Transition_type_id'), 'do 0');
+DROP TABLE baseline;
DROP TABLE time_zone;
DROP TABLE time_zone_name;
DROP TABLE time_zone_transition;
DROP TABLE time_zone_transition_type;
DROP TABLE time_zone_leap_second;
-RENAME TABLE time_zone_orig TO time_zone,
-time_zone_name_orig TO time_zone_name,
-time_zone_transition_orig TO time_zone_transition,
-time_zone_transition_type_orig TO time_zone_transition_type,
-time_zone_leap_second_orig TO time_zone_leap_second;
+#
+# End of 10.6 tests
+#
diff --git a/mysql-test/main/mysql_tzinfo_to_sql_symlink.test b/mysql-test/main/mysql_tzinfo_to_sql_symlink.test
index fe7275294d5..a2ce9e8f9b9 100644
--- a/mysql-test/main/mysql_tzinfo_to_sql_symlink.test
+++ b/mysql-test/main/mysql_tzinfo_to_sql_symlink.test
@@ -1,18 +1,13 @@
+--source include/have_innodb.inc
--source include/have_symlink.inc
--source include/not_windows.inc
---source include/not_embedded.inc
+--source include/no_protocol.inc
-use mysql;
-RENAME TABLE time_zone TO time_zone_orig,
- time_zone_name TO time_zone_name_orig,
- time_zone_transition TO time_zone_transition_orig,
- time_zone_transition_type TO time_zone_transition_type_orig,
- time_zone_leap_second TO time_zone_leap_second_orig;
-CREATE TABLE time_zone LIKE time_zone_orig;
-CREATE TABLE time_zone_name LIKE time_zone_name_orig;
-CREATE TABLE time_zone_transition LIKE time_zone_transition_orig;
-CREATE TABLE time_zone_transition_type LIKE time_zone_transition_type_orig;
-CREATE TABLE time_zone_leap_second LIKE time_zone_leap_second_orig;
+CREATE TABLE time_zone LIKE mysql.time_zone;
+CREATE TABLE time_zone_name LIKE mysql.time_zone_name;
+CREATE TABLE time_zone_transition LIKE mysql.time_zone_transition;
+CREATE TABLE time_zone_transition_type LIKE mysql.time_zone_transition_type;
+CREATE TABLE time_zone_leap_second LIKE mysql.time_zone_leap_second;
--echo #
--echo # MDEV-5226 mysql_tzinfo_to_sql errors with tzdata 2013f and above
@@ -27,16 +22,18 @@ CREATE TABLE time_zone_leap_second LIKE time_zone_leap_second_orig;
--echo # Verbose run
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_TZINFO_TO_SQL --verbose $MYSQLTEST_VARDIR/zoneinfo 2>&1
-SELECT COUNT(*) FROM time_zone;
-SELECT COUNT(*) FROM time_zone_name;
-SELECT COUNT(*) FROM time_zone_transition;
-SELECT COUNT(*) FROM time_zone_transition_type;
-SELECT COUNT(*) FROM time_zone_leap_second;
+
+--echo #
+--echo # MDEV-28263: mariadb-tzinfo-to-sql improve wsrep and binlog cases
+--echo #
--echo # Run on zoneinfo directory
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo 2>&1
---exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo 2>/dev/null | $MYSQL -S $MASTER_MYSOCK -u root mysql
+--exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo > $MYSQL_TMP_DIR/tz.sql
+--disable_query_log
+--source $MYSQL_TMP_DIR/tz.sql
+--enable_query_log
SELECT COUNT(*) FROM time_zone;
SELECT COUNT(*) FROM time_zone_name;
SELECT COUNT(*) FROM time_zone_transition;
@@ -49,13 +46,27 @@ SELECT COUNT(*) FROM time_zone_leap_second;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_TZINFO_TO_SQL --skip-write-binlog $MYSQLTEST_VARDIR/zoneinfo 2>&1
---exec $MYSQL_TZINFO_TO_SQL --skip-write-binlog $MYSQLTEST_VARDIR/zoneinfo 2>/dev/null | $MYSQL -S $MASTER_MYSOCK -u root mysql
+--exec $MYSQL_TZINFO_TO_SQL --skip-write-binlog $MYSQLTEST_VARDIR/zoneinfo 2>/dev/null > $MYSQL_TMP_DIR/tz.sql
+--disable_query_log
+CREATE TEMPORARY TABLE baseline AS
+ SELECT VARIABLE_NAME,VARIABLE_VALUE
+ FROM information_schema.global_status
+ WHERE VARIABLE_NAME IN ('COM_BEGIN', 'COM_INSERT', 'COM_LOCK_TABLES', 'COM_ALTER_TABLE', 'COM_TRUNCATE');
+--source $MYSQL_TMP_DIR/tz.sql
+--enable_query_log
+
SELECT COUNT(*) FROM time_zone;
SELECT COUNT(*) FROM time_zone_name;
SELECT COUNT(*) FROM time_zone_transition;
SELECT COUNT(*) FROM time_zone_transition_type;
SELECT COUNT(*) FROM time_zone_leap_second;
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@SQL_LOG_BIN;
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+ FROM information_schema.global_status g
+ JOIN baseline b USING (VARIABLE_NAME)
+ ORDER BY g.VARIABLE_NAME;
+
# Below tests don't include TRUNCATE TABLE so clear them.
TRUNCATE TABLE time_zone;
TRUNCATE TABLE time_zone_name;
@@ -69,13 +80,27 @@ TRUNCATE TABLE time_zone_leap_second;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo/GMT XXX 2>&1
---exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo/GMT XXX 2>/dev/null | $MYSQL -S $MASTER_MYSOCK -u root mysql
+--exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo/GMT XXX 2>/dev/null > $MYSQL_TMP_DIR/tz.sql
+--disable_query_log
+CREATE OR REPLACE TEMPORARY TABLE baseline AS
+ SELECT VARIABLE_NAME,VARIABLE_VALUE
+ FROM information_schema.global_status
+ WHERE VARIABLE_NAME IN ('COM_BEGIN', 'COM_INSERT', 'COM_LOCK_TABLES', 'COM_ALTER_TABLE', 'COM_TRUNCATE');
+--source $MYSQL_TMP_DIR/tz.sql
+--enable_query_log
+
SELECT COUNT(*) FROM time_zone;
SELECT COUNT(*) FROM time_zone_name;
SELECT COUNT(*) FROM time_zone_transition;
SELECT COUNT(*) FROM time_zone_transition_type;
SELECT COUNT(*) FROM time_zone_leap_second;
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@SQL_LOG_BIN;
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+ FROM information_schema.global_status g
+ JOIN baseline b USING (VARIABLE_NAME)
+ ORDER BY g.VARIABLE_NAME;
+
TRUNCATE TABLE time_zone;
TRUNCATE TABLE time_zone_name;
TRUNCATE TABLE time_zone_transition;
@@ -87,13 +112,27 @@ TRUNCATE TABLE time_zone_leap_second;
--echo #
--exec $MYSQL_TZINFO_TO_SQL --skip-write-binlog $MYSQLTEST_VARDIR/zoneinfo/GMT XXX 2>&1
---exec $MYSQL_TZINFO_TO_SQL --skip-write-binlog $MYSQLTEST_VARDIR/zoneinfo/GMT 2>/dev/null | $MYSQL -S $MASTER_MYSOCK -u root mysql
+--exec $MYSQL_TZINFO_TO_SQL --skip-write-binlog $MYSQLTEST_VARDIR/zoneinfo/GMT XXX 2>/dev/null > $MYSQL_TMP_DIR/tz.sql
+--disable_query_log
+CREATE OR REPLACE TEMPORARY TABLE baseline AS
+ SELECT VARIABLE_NAME,VARIABLE_VALUE
+ FROM information_schema.global_status
+ WHERE VARIABLE_NAME IN ('COM_BEGIN', 'COM_INSERT', 'COM_LOCK_TABLES', 'COM_ALTER_TABLE', 'COM_TRUNCATE');
+--source $MYSQL_TMP_DIR/tz.sql
+--enable_query_log
+
SELECT COUNT(*) FROM time_zone;
SELECT COUNT(*) FROM time_zone_name;
SELECT COUNT(*) FROM time_zone_transition;
SELECT COUNT(*) FROM time_zone_transition_type;
SELECT COUNT(*) FROM time_zone_leap_second;
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@SQL_LOG_BIN;
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+ FROM information_schema.global_status g
+ JOIN baseline b USING (VARIABLE_NAME)
+ ORDER BY g.VARIABLE_NAME;
+
TRUNCATE TABLE time_zone;
TRUNCATE TABLE time_zone_name;
TRUNCATE TABLE time_zone_transition;
@@ -105,13 +144,27 @@ TRUNCATE TABLE time_zone_leap_second;
--echo #
--exec $MYSQL_TZINFO_TO_SQL --leap $MYSQLTEST_VARDIR/zoneinfo/GMT 2>&1
---exec $MYSQL_TZINFO_TO_SQL --leap $MYSQLTEST_VARDIR/zoneinfo/GMT 2>/dev/null | $MYSQL -S $MASTER_MYSOCK -u root mysql
+--exec $MYSQL_TZINFO_TO_SQL --leap $MYSQLTEST_VARDIR/zoneinfo/GMT 2>/dev/null > $MYSQL_TMP_DIR/tz.sql
+--disable_query_log
+CREATE OR REPLACE TEMPORARY TABLE baseline AS
+ SELECT VARIABLE_NAME,VARIABLE_VALUE
+ FROM information_schema.global_status
+ WHERE VARIABLE_NAME IN ('COM_BEGIN', 'COM_INSERT', 'COM_LOCK_TABLES', 'COM_ALTER_TABLE', 'COM_TRUNCATE');
+--source $MYSQL_TMP_DIR/tz.sql
+--enable_query_log
+
SELECT COUNT(*) FROM time_zone;
SELECT COUNT(*) FROM time_zone_name;
SELECT COUNT(*) FROM time_zone_transition;
SELECT COUNT(*) FROM time_zone_transition_type;
SELECT COUNT(*) FROM time_zone_leap_second;
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@SQL_LOG_BIN;
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+ FROM information_schema.global_status g
+ JOIN baseline b USING (VARIABLE_NAME)
+ ORDER BY g.VARIABLE_NAME;
+
TRUNCATE TABLE time_zone;
TRUNCATE TABLE time_zone_name;
TRUNCATE TABLE time_zone_transition;
@@ -123,37 +176,51 @@ TRUNCATE TABLE time_zone_leap_second;
--echo #
--exec $MYSQL_TZINFO_TO_SQL --skip-write-binlog --leap $MYSQLTEST_VARDIR/zoneinfo/GMT 2>&1
---exec $MYSQL_TZINFO_TO_SQL --skip-write-binlog --leap $MYSQLTEST_VARDIR/zoneinfo/GMT 2>/dev/null | $MYSQL -S $MASTER_MYSOCK -u root mysql
+--exec $MYSQL_TZINFO_TO_SQL --skip-write-binlog --leap $MYSQLTEST_VARDIR/zoneinfo/GMT > $MYSQL_TMP_DIR/tz.sql
+--disable_query_log
+CREATE OR REPLACE TEMPORARY TABLE baseline AS
+ SELECT VARIABLE_NAME,VARIABLE_VALUE
+ FROM information_schema.global_status
+ WHERE VARIABLE_NAME IN ('COM_BEGIN', 'COM_INSERT', 'COM_LOCK_TABLES', 'COM_ALTER_TABLE', 'COM_TRUNCATE');
+--source $MYSQL_TMP_DIR/tz.sql
+--enable_query_log
+
SELECT COUNT(*) FROM time_zone;
SELECT COUNT(*) FROM time_zone_name;
SELECT COUNT(*) FROM time_zone_transition;
SELECT COUNT(*) FROM time_zone_transition_type;
SELECT COUNT(*) FROM time_zone_leap_second;
-#
-#
-# Cleanup
-#
-
---exec rm -rf $MYSQLTEST_VARDIR/zoneinfo
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@SQL_LOG_BIN;
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+ FROM information_schema.global_status g
+ JOIN baseline b USING (VARIABLE_NAME)
+ ORDER BY g.VARIABLE_NAME;
--echo #
--echo # MDEV-6236 - [PATCH] mysql_tzinfo_to_sql may produce invalid SQL
--echo #
+--exec rm -rf $MYSQLTEST_VARDIR/zoneinfo
--exec mkdir $MYSQLTEST_VARDIR/zoneinfo
--copy_file std_data/zoneinfo/GMT $MYSQLTEST_VARDIR/zoneinfo/Factory
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo 2>&1
+#
+#
+# Cleanup
+#
+
+--remove_file $MYSQL_TMP_DIR/tz.sql
--exec rm -rf $MYSQLTEST_VARDIR/zoneinfo
+DROP TABLE baseline;
DROP TABLE time_zone;
DROP TABLE time_zone_name;
DROP TABLE time_zone_transition;
DROP TABLE time_zone_transition_type;
DROP TABLE time_zone_leap_second;
-RENAME TABLE time_zone_orig TO time_zone,
- time_zone_name_orig TO time_zone_name,
- time_zone_transition_orig TO time_zone_transition,
- time_zone_transition_type_orig TO time_zone_transition_type,
- time_zone_leap_second_orig TO time_zone_leap_second;
+
+--echo #
+--echo # End of 10.6 tests
+--echo #
diff --git a/mysql-test/main/select.result b/mysql-test/main/select.result
index 2f051ab33bf..da013eb2619 100644
--- a/mysql-test/main/select.result
+++ b/mysql-test/main/select.result
@@ -5593,4 +5593,50 @@ select (SELECT name FROM t1 WHERE name='tom' AND pw=PASSWORD(@undefined));
(SELECT name FROM t1 WHERE name='tom' AND pw=PASSWORD(@undefined))
NULL
drop table t1;
+#
+# Bug MDEV-24262 Server crashes in st_join_table::cleanup upon
+# erroneous GROUP_CONCAT
+#
+CREATE TABLE t1 (a INT, b INT);
+INSERT INTO t1 VALUES (1,10),(2,20);
+SELECT b, GROUP_CONCAT(b ORDER BY 2), MIN(a) AS f FROM t1 GROUP BY b ORDER BY f;
+ERROR 42S22: Unknown column '2' in 'order clause'
+DROP TABLE t1;
+#
+# Bug MDEV-24560 SIGSEGV in st_join_table::cleanup + server and client
+# hang + cross-mysqld-interaction + double free or corruption (!prev)
+#
+CREATE TABLE t1 (c INT);
+SET SESSION sql_buffer_result=1;
+SELECT GROUP_CONCAT(c ORDER BY 2) FROM t1;
+GROUP_CONCAT(c ORDER BY 2)
+NULL
+SELECT GROUP_CONCAT(c ORDER BY 0) FROM t1;
+GROUP_CONCAT(c ORDER BY 0)
+NULL
+DROP TABLE t1;
+CREATE TABLE t1 (grp INT,c CHAR);
+SET sql_buffer_result=1;
+SELECT grp,GROUP_CONCAT(c ORDER BY 2) FROM t1 GROUP BY grp;
+grp GROUP_CONCAT(c ORDER BY 2)
+DROP TABLE t1;
+#
+# Bug MDEV-28077 "Wrong create options" with "big_tables" option enabled
+#
+CREATE TABLE t1(a VARCHAR(16383) CHARACTER SET UTF32, KEY k(a));
+Warnings:
+Note 1071 Specified key was too long; max key length is 1000 bytes
+INSERT INTO t1 VALUES ('abc'), ('def'), ('FFF'), ('abc'), ('FFF');
+SET SESSION big_tables=ON;
+SELECT DISTINCT COUNT(DISTINCT a) FROM t1;
+COUNT(DISTINCT a)
+3
+PREPARE stmt FROM 'SELECT DISTINCT COUNT(DISTINCT a) FROM t1';
+EXECUTE stmt;
+COUNT(DISTINCT a)
+3
+EXECUTE stmt;
+COUNT(DISTINCT a)
+3
+DROP TABLE t1;
End of 10.0 tests
diff --git a/mysql-test/main/select.test b/mysql-test/main/select.test
index b9891280c45..fa1cd2d8f26 100644
--- a/mysql-test/main/select.test
+++ b/mysql-test/main/select.test
@@ -4677,4 +4677,50 @@ select (SELECT name FROM t1 WHERE name='tom' AND pw=PASSWORD(@undefined));
drop table t1;
+--echo #
+--echo # Bug MDEV-24262 Server crashes in st_join_table::cleanup upon
+--echo # erroneous GROUP_CONCAT
+--echo #
+
+CREATE TABLE t1 (a INT, b INT);
+INSERT INTO t1 VALUES (1,10),(2,20);
+--error ER_BAD_FIELD_ERROR
+SELECT b, GROUP_CONCAT(b ORDER BY 2), MIN(a) AS f FROM t1 GROUP BY b ORDER BY f;
+
+DROP TABLE t1;
+
+--echo #
+--echo # Bug MDEV-24560 SIGSEGV in st_join_table::cleanup + server and client
+--echo # hang + cross-mysqld-interaction + double free or corruption (!prev)
+--echo #
+
+CREATE TABLE t1 (c INT);
+SET SESSION sql_buffer_result=1;
+SELECT GROUP_CONCAT(c ORDER BY 2) FROM t1;
+SELECT GROUP_CONCAT(c ORDER BY 0) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (grp INT,c CHAR);
+SET sql_buffer_result=1;
+SELECT grp,GROUP_CONCAT(c ORDER BY 2) FROM t1 GROUP BY grp;
+DROP TABLE t1;
+
+--echo #
+--echo # Bug MDEV-28077 "Wrong create options" with "big_tables" option enabled
+--echo #
+CREATE TABLE t1(a VARCHAR(16383) CHARACTER SET UTF32, KEY k(a));
+INSERT INTO t1 VALUES ('abc'), ('def'), ('FFF'), ('abc'), ('FFF');
+
+# big_tables are deprecated after some version
+--disable_warnings
+SET SESSION big_tables=ON;
+SELECT DISTINCT COUNT(DISTINCT a) FROM t1;
+
+PREPARE stmt FROM 'SELECT DISTINCT COUNT(DISTINCT a) FROM t1';
+EXECUTE stmt;
+EXECUTE stmt;
+
+--enable_warnings
+DROP TABLE t1;
+
--echo End of 10.0 tests
diff --git a/mysql-test/main/select_jcl6.result b/mysql-test/main/select_jcl6.result
index 6a309d8aa69..0d09df225c9 100644
--- a/mysql-test/main/select_jcl6.result
+++ b/mysql-test/main/select_jcl6.result
@@ -5604,6 +5604,52 @@ select (SELECT name FROM t1 WHERE name='tom' AND pw=PASSWORD(@undefined));
(SELECT name FROM t1 WHERE name='tom' AND pw=PASSWORD(@undefined))
NULL
drop table t1;
+#
+# Bug MDEV-24262 Server crashes in st_join_table::cleanup upon
+# erroneous GROUP_CONCAT
+#
+CREATE TABLE t1 (a INT, b INT);
+INSERT INTO t1 VALUES (1,10),(2,20);
+SELECT b, GROUP_CONCAT(b ORDER BY 2), MIN(a) AS f FROM t1 GROUP BY b ORDER BY f;
+ERROR 42S22: Unknown column '2' in 'order clause'
+DROP TABLE t1;
+#
+# Bug MDEV-24560 SIGSEGV in st_join_table::cleanup + server and client
+# hang + cross-mysqld-interaction + double free or corruption (!prev)
+#
+CREATE TABLE t1 (c INT);
+SET SESSION sql_buffer_result=1;
+SELECT GROUP_CONCAT(c ORDER BY 2) FROM t1;
+GROUP_CONCAT(c ORDER BY 2)
+NULL
+SELECT GROUP_CONCAT(c ORDER BY 0) FROM t1;
+GROUP_CONCAT(c ORDER BY 0)
+NULL
+DROP TABLE t1;
+CREATE TABLE t1 (grp INT,c CHAR);
+SET sql_buffer_result=1;
+SELECT grp,GROUP_CONCAT(c ORDER BY 2) FROM t1 GROUP BY grp;
+grp GROUP_CONCAT(c ORDER BY 2)
+DROP TABLE t1;
+#
+# Bug MDEV-28077 "Wrong create options" with "big_tables" option enabled
+#
+CREATE TABLE t1(a VARCHAR(16383) CHARACTER SET UTF32, KEY k(a));
+Warnings:
+Note 1071 Specified key was too long; max key length is 1000 bytes
+INSERT INTO t1 VALUES ('abc'), ('def'), ('FFF'), ('abc'), ('FFF');
+SET SESSION big_tables=ON;
+SELECT DISTINCT COUNT(DISTINCT a) FROM t1;
+COUNT(DISTINCT a)
+3
+PREPARE stmt FROM 'SELECT DISTINCT COUNT(DISTINCT a) FROM t1';
+EXECUTE stmt;
+COUNT(DISTINCT a)
+3
+EXECUTE stmt;
+COUNT(DISTINCT a)
+3
+DROP TABLE t1;
End of 10.0 tests
set join_cache_level=default;
set @@optimizer_switch=@save_optimizer_switch_jcl6;
diff --git a/mysql-test/main/select_pkeycache.result b/mysql-test/main/select_pkeycache.result
index 2f051ab33bf..da013eb2619 100644
--- a/mysql-test/main/select_pkeycache.result
+++ b/mysql-test/main/select_pkeycache.result
@@ -5593,4 +5593,50 @@ select (SELECT name FROM t1 WHERE name='tom' AND pw=PASSWORD(@undefined));
(SELECT name FROM t1 WHERE name='tom' AND pw=PASSWORD(@undefined))
NULL
drop table t1;
+#
+# Bug MDEV-24262 Server crashes in st_join_table::cleanup upon
+# erroneous GROUP_CONCAT
+#
+CREATE TABLE t1 (a INT, b INT);
+INSERT INTO t1 VALUES (1,10),(2,20);
+SELECT b, GROUP_CONCAT(b ORDER BY 2), MIN(a) AS f FROM t1 GROUP BY b ORDER BY f;
+ERROR 42S22: Unknown column '2' in 'order clause'
+DROP TABLE t1;
+#
+# Bug MDEV-24560 SIGSEGV in st_join_table::cleanup + server and client
+# hang + cross-mysqld-interaction + double free or corruption (!prev)
+#
+CREATE TABLE t1 (c INT);
+SET SESSION sql_buffer_result=1;
+SELECT GROUP_CONCAT(c ORDER BY 2) FROM t1;
+GROUP_CONCAT(c ORDER BY 2)
+NULL
+SELECT GROUP_CONCAT(c ORDER BY 0) FROM t1;
+GROUP_CONCAT(c ORDER BY 0)
+NULL
+DROP TABLE t1;
+CREATE TABLE t1 (grp INT,c CHAR);
+SET sql_buffer_result=1;
+SELECT grp,GROUP_CONCAT(c ORDER BY 2) FROM t1 GROUP BY grp;
+grp GROUP_CONCAT(c ORDER BY 2)
+DROP TABLE t1;
+#
+# Bug MDEV-28077 "Wrong create options" with "big_tables" option enabled
+#
+CREATE TABLE t1(a VARCHAR(16383) CHARACTER SET UTF32, KEY k(a));
+Warnings:
+Note 1071 Specified key was too long; max key length is 1000 bytes
+INSERT INTO t1 VALUES ('abc'), ('def'), ('FFF'), ('abc'), ('FFF');
+SET SESSION big_tables=ON;
+SELECT DISTINCT COUNT(DISTINCT a) FROM t1;
+COUNT(DISTINCT a)
+3
+PREPARE stmt FROM 'SELECT DISTINCT COUNT(DISTINCT a) FROM t1';
+EXECUTE stmt;
+COUNT(DISTINCT a)
+3
+EXECUTE stmt;
+COUNT(DISTINCT a)
+3
+DROP TABLE t1;
End of 10.0 tests
diff --git a/mysql-test/main/set_operation.result b/mysql-test/main/set_operation.result
index c74179afe41..fa0fe21d156 100644
--- a/mysql-test/main/set_operation.result
+++ b/mysql-test/main/set_operation.result
@@ -638,8 +638,6 @@ EXPLAIN
"materialized": {
"query_block": {
"union_result": {
- "table_name": "<union5,6>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
@@ -961,7 +959,7 @@ UNION ALL
select * from t3;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `test`.`t1`.`a` AS `i1`,`test`.`t1`.`b` AS `i2` from `test`.`t1` union all select `__9`.`c` AS `c`,`__9`.`d` AS `d` from (select `test`.`t2`.`c` AS `c`,`test`.`t2`.`d` AS `d` from `test`.`t2` intersect all (values (1,1),(2,2),(2,2),(5,5),(2,2)) intersect all select `sq`.`a` AS `a`,`sq`.`b` AS `b` from (select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` union all select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1`) `sq`) `__9` except all select `test`.`t3`.`e` AS `e`,`test`.`t3`.`f` AS `f` from `test`.`t3` union all select `test`.`t2`.`c` AS `c`,`test`.`t2`.`d` AS `d` from `test`.`t2` union select `test`.`t3`.`e` AS `e`,`test`.`t3`.`f` AS `f` from `test`.`t3` except select `test`.`t1`.`a` AS `a`,`test`.`t2`.`c` AS `c` from (`test`.`t1` join `test`.`t2`) union all select `v0`.`g` AS `g`,`v0`.`h` AS `h` from `test`.`v0` where `v0`.`g` < 4 union all select `test`.`t3`.`e` AS `e`,`test`.`t3`.`f` AS `f` from `test`.`t3` latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `i1`,`t1`.`b` AS `i2` from `t1` union all select `__9`.`c` AS `c`,`__9`.`d` AS `d` from (select `t2`.`c` AS `c`,`t2`.`d` AS `d` from `t2` intersect all (values (1,1),(2,2),(2,2),(5,5),(2,2)) intersect all select `sq`.`a` AS `a`,`sq`.`b` AS `b` from (select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` union all select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1`) `sq`) `__9` except all select `t3`.`e` AS `e`,`t3`.`f` AS `f` from `t3` union all select `t2`.`c` AS `c`,`t2`.`d` AS `d` from `t2` union select `t3`.`e` AS `e`,`t3`.`f` AS `f` from `t3` except select `t1`.`a` AS `a`,`t2`.`c` AS `c` from (`t1` join `t2`) union all select `v0`.`g` AS `g`,`v0`.`h` AS `h` from `v0` where `v0`.`g` < 4 union all select `t3`.`e` AS `e`,`t3`.`f` AS `f` from `t3` latin1 latin1_swedish_ci
select * from v1 limit 14;
i1 i2
1 1
diff --git a/mysql-test/main/show.result b/mysql-test/main/show.result
index 4a9e2738346..e453ee90c7e 100644
--- a/mysql-test/main/show.result
+++ b/mysql-test/main/show.result
@@ -53,3 +53,15 @@ drop table t1;
#
# End of 10.2 tests
#
+#
+# MDEV-28253 Mysqldump - INVISIBLE column error
+#
+create table t1 (a int, b datetime invisible on update now() without system versioning) with system versioning;
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+b datetime YES NULL on update current_timestamp(), INVISIBLE, WITHOUT SYSTEM VERSIONING
+drop table t1;
+#
+# End of 10.3 tests
+#
diff --git a/mysql-test/main/show.test b/mysql-test/main/show.test
index 9b0b58349d5..37c30000e59 100644
--- a/mysql-test/main/show.test
+++ b/mysql-test/main/show.test
@@ -45,3 +45,14 @@ drop table t1;
--echo #
--echo # End of 10.2 tests
--echo #
+
+--echo #
+--echo # MDEV-28253 Mysqldump - INVISIBLE column error
+--echo #
+create table t1 (a int, b datetime invisible on update now() without system versioning) with system versioning;
+desc t1;
+drop table t1;
+
+--echo #
+--echo # End of 10.3 tests
+--echo #
diff --git a/mysql-test/main/show_check.result b/mysql-test/main/show_check.result
index cc50587cbc1..9c7d45ba3a4 100644
--- a/mysql-test/main/show_check.result
+++ b/mysql-test/main/show_check.result
@@ -991,7 +991,7 @@ def information_schema COLUMNS COLUMNS CHARACTER_SET_NAME CHARACTER_SET_NAME 253
def information_schema COLUMNS COLUMNS COLLATION_NAME COLLATION_NAME 253 96 0 Y 4096 0 33
def information_schema COLUMNS COLUMNS COLUMN_TYPE COLUMN_TYPE 252 589815 7 N 4113 0 33
def information_schema COLUMNS COLUMNS COLUMN_KEY COLUMN_KEY 253 9 3 N 4097 0 33
-def information_schema COLUMNS COLUMNS EXTRA EXTRA 253 90 0 N 4097 0 33
+def information_schema COLUMNS COLUMNS EXTRA EXTRA 253 240 0 N 4097 0 33
def information_schema COLUMNS COLUMNS PRIVILEGES PRIVILEGES 253 240 31 N 4097 0 33
def information_schema COLUMNS COLUMNS COLUMN_COMMENT COLUMN_COMMENT 253 3072 0 N 4097 0 33
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
@@ -1010,7 +1010,7 @@ def information_schema COLUMNS COLUMNS COLUMN_TYPE Type 252 589815 7 N 4113 0 33
def information_schema COLUMNS COLUMNS IS_NULLABLE Null 253 9 2 N 4097 0 33
def information_schema COLUMNS COLUMNS COLUMN_KEY Key 253 9 3 N 4097 0 33
def information_schema COLUMNS COLUMNS COLUMN_DEFAULT Default 252 589788 0 Y 4112 0 33
-def information_schema COLUMNS COLUMNS EXTRA Extra 253 90 0 N 4097 0 33
+def information_schema COLUMNS COLUMNS EXTRA Extra 253 240 0 N 4097 0 33
Field Type Null Key Default Extra
c int(11) NO PRI NULL
----------------------------------------------------------------
diff --git a/mysql-test/main/show_explain.cc b/mysql-test/main/show_explain.cc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/mysql-test/main/show_explain.cc
+++ /dev/null
diff --git a/mysql-test/main/sp-cursor.result b/mysql-test/main/sp-cursor.result
index 2218f8c36fe..83b05264339 100644
--- a/mysql-test/main/sp-cursor.result
+++ b/mysql-test/main/sp-cursor.result
@@ -801,6 +801,18 @@ drop view v1;
drop function get_name;
drop table t1;
#
+# MDEV-28266: Crash in Field_string::type_handler when calling procedures
+#
+CREATE TABLE t (f INT);
+CREATE TRIGGER tr AFTER INSERT ON t FOR EACH ROW
+FOR x IN (SELECT * FROM json_table(NULL, '$' COLUMNS(a CHAR(1) path '$.*')) tmp)
+DO set @a=1; END FOR $
+INSERT INTO t () values ();
+DROP TABLE t;
+#
+# End of 10.6 tests
+#
+#
# Start of 10.8 tests
#
#
diff --git a/mysql-test/main/sp-cursor.test b/mysql-test/main/sp-cursor.test
index 44fe6ba51e8..feb681201a2 100644
--- a/mysql-test/main/sp-cursor.test
+++ b/mysql-test/main/sp-cursor.test
@@ -801,6 +801,27 @@ drop view v1;
drop function get_name;
drop table t1;
+--echo #
+--echo # MDEV-28266: Crash in Field_string::type_handler when calling procedures
+--echo #
+
+CREATE TABLE t (f INT);
+
+--delimiter $
+CREATE TRIGGER tr AFTER INSERT ON t FOR EACH ROW
+ FOR x IN (SELECT * FROM json_table(NULL, '$' COLUMNS(a CHAR(1) path '$.*')) tmp)
+ DO set @a=1; END FOR $
+--delimiter ;
+
+INSERT INTO t () values ();
+
+# Cleanup
+DROP TABLE t;
+
+--echo #
+--echo # End of 10.6 tests
+--echo #
+
--echo #
--echo # Start of 10.8 tests
diff --git a/mysql-test/main/sp-i_s_columns.result b/mysql-test/main/sp-i_s_columns.result
new file mode 100644
index 00000000000..707fd76fd77
--- /dev/null
+++ b/mysql-test/main/sp-i_s_columns.result
@@ -0,0 +1,34 @@
+#
+# MDEV-28267 ASAN heap-use-after-free in Item_sp::func_name_cstring
+#
+CREATE TABLE t1 (a INT);
+CREATE FUNCTION test.f1(a INT) RETURNS TEXT RETURN '';
+CREATE FUNCTION test.f2(a INT) RETURNS TEXT RETURN '';
+CREATE VIEW v1 AS SELECT f1(a) AS v1 FROM t1;
+CREATE VIEW v2 AS SELECT f1(a) AS v2 FROM t1;
+CREATE VIEW v3 AS SELECT f1(a) AS v3 FROM t1;
+CREATE VIEW v4 AS SELECT f1(a) AS v4 FROM t1;
+BEGIN NOT ATOMIC
+FOR i IN 1..10
+DO
+ANALYZE FORMAT=JSON SELECT *
+FROM INFORMATION_SCHEMA.COLUMNS
+WHERE
+TABLE_SCHEMA='test'
+ AND
+TABLE_NAME LIKE 'v%'
+ AND
+(SLEEP(0.01)=0 OR f1(ordinal_position) >'')
+ORDER BY TABLE_NAME;
+END FOR;
+END;
+$$
+connect con1,localhost,root,,test;
+CREATE OR REPLACE FUNCTION f2(a INT) RETURNS TEXT RETURN '';
+connection default;
+disconnect con1;
+connection default;
+DROP FUNCTION f1;
+DROP FUNCTION f2;
+DROP TABLE t1;
+DROP VIEW v1, v2, v3, v4;
diff --git a/mysql-test/main/sp-i_s_columns.test b/mysql-test/main/sp-i_s_columns.test
new file mode 100644
index 00000000000..0782d06d1cc
--- /dev/null
+++ b/mysql-test/main/sp-i_s_columns.test
@@ -0,0 +1,49 @@
+--echo #
+--echo # MDEV-28267 ASAN heap-use-after-free in Item_sp::func_name_cstring
+--echo #
+
+CREATE TABLE t1 (a INT);
+CREATE FUNCTION test.f1(a INT) RETURNS TEXT RETURN '';
+CREATE FUNCTION test.f2(a INT) RETURNS TEXT RETURN '';
+CREATE VIEW v1 AS SELECT f1(a) AS v1 FROM t1;
+CREATE VIEW v2 AS SELECT f1(a) AS v2 FROM t1;
+CREATE VIEW v3 AS SELECT f1(a) AS v3 FROM t1;
+CREATE VIEW v4 AS SELECT f1(a) AS v4 FROM t1;
+
+--disable_result_log
+
+DELIMITER $$;
+--send
+BEGIN NOT ATOMIC
+ FOR i IN 1..10
+ DO
+ ANALYZE FORMAT=JSON SELECT *
+ FROM INFORMATION_SCHEMA.COLUMNS
+ WHERE
+ TABLE_SCHEMA='test'
+ AND
+ TABLE_NAME LIKE 'v%'
+ AND
+ (SLEEP(0.01)=0 OR f1(ordinal_position) >'')
+ ORDER BY TABLE_NAME;
+ END FOR;
+END;
+$$
+DELIMITER ;$$
+
+--connect (con1,localhost,root,,test)
+CREATE OR REPLACE FUNCTION f2(a INT) RETURNS TEXT RETURN '';
+--connection default
+--reap
+
+--enable_result_log
+
+
+# Cleanup
+--disconnect con1
+--connection default
+
+DROP FUNCTION f1;
+DROP FUNCTION f2;
+DROP TABLE t1;
+DROP VIEW v1, v2, v3, v4;
diff --git a/mysql-test/main/sp-no-valgrind.test b/mysql-test/main/sp-no-valgrind.test
index 21e52f2d3d5..6bacc7b150c 100644
--- a/mysql-test/main/sp-no-valgrind.test
+++ b/mysql-test/main/sp-no-valgrind.test
@@ -1,4 +1,4 @@
-
+--source include/not_msan.inc
--source include/not_valgrind_build.inc
--echo # MDEV-20699 do not cache SP in SHOW CREATE
diff --git a/mysql-test/main/symlink-myisam-11902.test b/mysql-test/main/symlink-myisam-11902.test
index 8fae41222cf..c782ef44ec5 100644
--- a/mysql-test/main/symlink-myisam-11902.test
+++ b/mysql-test/main/symlink-myisam-11902.test
@@ -56,5 +56,8 @@ flush tables;
drop table if exists t1;
exec rm -r $MYSQLTEST_VARDIR/tmp/foo;
+# Under Valgrind, this could display a warning ER_FILE_NOT_FOUND
+--disable_warnings
drop table mysql.t1;
+--enable_warnings
set debug_sync='RESET';
diff --git a/mysql-test/main/table_value_constr.result b/mysql-test/main/table_value_constr.result
index 0522e6ae6cc..b90b5c86c15 100644
--- a/mysql-test/main/table_value_constr.result
+++ b/mysql-test/main/table_value_constr.result
@@ -1304,8 +1304,6 @@ EXPLAIN
{
"query_block": {
"union_result": {
- "table_name": "<unit1>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
@@ -1525,8 +1523,6 @@ EXPLAIN
{
"query_block": {
"union_result": {
- "table_name": "<union1,2>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
@@ -1589,8 +1585,6 @@ EXPLAIN
{
"query_block": {
"union_result": {
- "table_name": "<union1,2>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
@@ -1633,8 +1627,6 @@ EXPLAIN
{
"query_block": {
"union_result": {
- "table_name": "<union1,2,3>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
@@ -1677,10 +1669,6 @@ ANALYZE
{
"query_block": {
"union_result": {
- "table_name": "<unit1>",
- "access_type": "ALL",
- "r_loops": 0,
- "r_rows": null,
"query_specifications": [
{
"query_block": {
@@ -1908,10 +1896,6 @@ ANALYZE
{
"query_block": {
"union_result": {
- "table_name": "<union1,2>",
- "access_type": "ALL",
- "r_loops": 0,
- "r_rows": null,
"query_specifications": [
{
"query_block": {
@@ -1976,10 +1960,6 @@ ANALYZE
{
"query_block": {
"union_result": {
- "table_name": "<union1,2>",
- "access_type": "ALL",
- "r_loops": 0,
- "r_rows": null,
"query_specifications": [
{
"query_block": {
@@ -2022,10 +2002,6 @@ ANALYZE
{
"query_block": {
"union_result": {
- "table_name": "<union1,2,3>",
- "access_type": "ALL",
- "r_loops": 0,
- "r_rows": null,
"query_specifications": [
{
"query_block": {
diff --git a/mysql-test/main/view.result b/mysql-test/main/view.result
index 35471454cb4..712b8629c09 100644
--- a/mysql-test/main/view.result
+++ b/mysql-test/main/view.result
@@ -6550,7 +6550,7 @@ INSERT INTO t3 VALUES (1),(8);
CREATE VIEW v1 AS SELECT * FROM t1 LEFT JOIN ( SELECT t2.* FROM t2 INNER JOIN t3 ON ( k = j ) ) AS alias1 ON ( i = j );
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `test`.`t1`.`i` AS `i`,`alias1`.`j` AS `j` from (`test`.`t1` left join (select `test`.`t2`.`j` AS `j` from (`test`.`t2` join `test`.`t3` on(`test`.`t3`.`k` = `test`.`t2`.`j`))) `alias1` on(`test`.`t1`.`i` = `alias1`.`j`)) latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`i` AS `i`,`alias1`.`j` AS `j` from (`t1` left join (select `t2`.`j` AS `j` from (`t2` join `t3` on(`t3`.`k` = `t2`.`j`))) `alias1` on(`t1`.`i` = `alias1`.`j`)) latin1 latin1_swedish_ci
SELECT * FROM t1 LEFT JOIN ( SELECT t2.* FROM t2 INNER JOIN t3 ON ( k = j ) ) AS alias1 ON ( i = j );
i j
3 NULL
@@ -6697,7 +6697,7 @@ EXECUTE stmt;
DEALLOCATE PREPARE stmt;
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `testalias`.`testcase` AS `testcase` from (select case when 1 in (select `test`.`t1`.`a` from `test`.`t1` where `test`.`t1`.`a` < 2) then 1 end AS `testcase`) `testalias` latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `testalias`.`testcase` AS `testcase` from (select case when 1 in (select `t1`.`a` from `t1` where `t1`.`a` < 2) then 1 end AS `testcase`) `testalias` latin1 latin1_swedish_ci
SELECT * FROM v1;
testcase
1
diff --git a/mysql-test/mariadb-test-run.pl b/mysql-test/mariadb-test-run.pl
index 148fd0fdee4..1449d3ecb9a 100755
--- a/mysql-test/mariadb-test-run.pl
+++ b/mysql-test/mariadb-test-run.pl
@@ -5695,7 +5695,7 @@ sub usage ($) {
{
print STDERR "$message\n";
print STDERR "For full list of options, use $0 --help\n";
- exit;
+ exit(1);
}
local $"= ','; # for @DEFAULT_SUITES below
diff --git a/mysql-test/std_data/capath/3106f582.0 b/mysql-test/std_data/capath/3106f582.0
deleted file mode 100644
index 23dda2318e1..00000000000
--- a/mysql-test/std_data/capath/3106f582.0
+++ /dev/null
@@ -1,79 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- d0:4d:23:85:ee:59:b3:fa
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=cacert, C=FI, ST=Helsinki, L=Helsinki, O=MariaDB
- Validity
- Not Before: Jan 27 10:11:10 2019 GMT
- Not After : Jan 22 10:11:10 2039 GMT
- Subject: CN=cacert, C=FI, ST=Helsinki, L=Helsinki, O=MariaDB
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:e8:0e:a7:84:d3:75:30:06:30:b2:10:b9:d1:88:
- 36:2b:5e:f8:c8:44:57:cb:67:72:ab:96:95:33:d5:
- 88:d1:8f:23:50:98:ba:6d:20:00:80:bd:35:d5:c1:
- bf:98:49:c4:0a:15:4a:34:a6:21:9b:2e:8c:15:09:
- f0:63:81:02:c2:7c:e2:53:e0:f7:a1:1a:40:5e:8f:
- 41:4a:4c:56:d4:20:f1:d5:a7:c1:53:2e:ff:7e:37:
- 17:cc:7e:74:bd:e2:22:33:ce:8c:77:62:a4:c5:3f:
- 44:35:7b:7e:b9:f5:7d:8c:7a:27:58:fd:2c:42:86:
- 2e:e7:6b:01:99:7b:fe:7d:a7:a1:4f:3e:39:39:54:
- 1f:61:de:74:66:d1:77:4f:43:1b:66:70:29:85:de:
- fc:8f:8e:1b:7b:a2:66:48:26:7f:9b:a6:fd:4a:e4:
- dc:eb:ed:bd:f8:e3:f1:57:98:13:6f:f1:a3:2a:e3:
- 73:bd:8d:7c:6f:4b:59:35:bc:b5:42:3e:99:a7:13:
- 8d:be:2e:5c:9a:c6:5b:ab:ae:bf:00:e9:c8:ee:05:
- 22:8e:d5:67:1a:47:9a:6d:9c:f9:42:3e:15:34:f8:
- 31:ec:b4:7e:d3:92:95:b0:b8:f9:66:f3:bd:1d:31:
- 2c:b1:90:62:a1:f8:4e:a6:5d:26:22:f0:e1:fe:16:
- 2b:69
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- CA:71:99:89:F0:72:AB:75:66:BB:65:6A:03:04:72:A5:7B:95:A6:93
- X509v3 Authority Key Identifier:
- keyid:CA:71:99:89:F0:72:AB:75:66:BB:65:6A:03:04:72:A5:7B:95:A6:93
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: sha256WithRSAEncryption
- df:fd:74:29:5b:5e:9a:8b:09:02:40:59:73:cb:71:47:3f:97:
- 3d:a9:fd:c4:8c:01:29:c9:86:b8:71:55:ff:72:0e:50:dc:c8:
- b5:e6:91:41:52:47:21:30:cc:4d:e7:3b:4b:db:55:ea:7d:46:
- eb:53:e0:b7:1b:80:7c:b1:0c:d3:d1:bc:a0:73:ae:96:1f:fd:
- 05:52:7e:54:d5:03:52:69:7b:34:5f:27:d7:98:da:98:76:73:
- e6:bb:50:59:2a:94:90:67:03:1c:a4:76:2f:ee:ef:59:60:09:
- 48:33:03:2b:52:ed:83:42:f8:71:19:7f:d8:be:40:ed:20:01:
- 90:3c:7e:1c:8b:d2:9f:f3:2f:09:1f:50:c8:10:e1:8a:d9:a5:
- 49:9c:0b:74:17:b9:2b:68:f6:1e:73:c2:73:10:38:b3:35:e2:
- 87:91:1b:a1:d1:9b:81:9d:1b:32:cc:03:6e:4c:82:95:81:11:
- 42:56:e2:16:2b:22:65:db:40:2c:ca:dc:03:f4:d5:07:cf:f5:
- 13:b2:cf:51:5b:24:cd:c7:d1:9b:42:8e:f9:df:5d:1e:5a:09:
- a3:4f:a9:0b:f4:21:c5:bb:ff:02:93:67:e8:2d:ee:ab:d9:59:
- 76:03:2c:a1:bd:fb:dc:af:b6:82:94:71:85:53:a8:18:0d:3a:
- 9e:42:eb:59
------BEGIN CERTIFICATE-----
-MIIDfzCCAmegAwIBAgIJANBNI4XuWbP6MA0GCSqGSIb3DQEBCwUAMFYxDzANBgNV
-BAMMBmNhY2VydDELMAkGA1UEBhMCRkkxETAPBgNVBAgMCEhlbHNpbmtpMREwDwYD
-VQQHDAhIZWxzaW5raTEQMA4GA1UECgwHTWFyaWFEQjAeFw0xOTAxMjcxMDExMTBa
-Fw0zOTAxMjIxMDExMTBaMFYxDzANBgNVBAMMBmNhY2VydDELMAkGA1UEBhMCRkkx
-ETAPBgNVBAgMCEhlbHNpbmtpMREwDwYDVQQHDAhIZWxzaW5raTEQMA4GA1UECgwH
-TWFyaWFEQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOgOp4TTdTAG
-MLIQudGINite+MhEV8tncquWlTPViNGPI1CYum0gAIC9NdXBv5hJxAoVSjSmIZsu
-jBUJ8GOBAsJ84lPg96EaQF6PQUpMVtQg8dWnwVMu/343F8x+dL3iIjPOjHdipMU/
-RDV7frn1fYx6J1j9LEKGLudrAZl7/n2noU8+OTlUH2HedGbRd09DG2ZwKYXe/I+O
-G3uiZkgmf5um/Urk3Ovtvfjj8VeYE2/xoyrjc72NfG9LWTW8tUI+macTjb4uXJrG
-W6uuvwDpyO4FIo7VZxpHmm2c+UI+FTT4Mey0ftOSlbC4+WbzvR0xLLGQYqH4TqZd
-JiLw4f4WK2kCAwEAAaNQME4wHQYDVR0OBBYEFMpxmYnwcqt1ZrtlagMEcqV7laaT
-MB8GA1UdIwQYMBaAFMpxmYnwcqt1ZrtlagMEcqV7laaTMAwGA1UdEwQFMAMBAf8w
-DQYJKoZIhvcNAQELBQADggEBAN/9dClbXpqLCQJAWXPLcUc/lz2p/cSMASnJhrhx
-Vf9yDlDcyLXmkUFSRyEwzE3nO0vbVep9RutT4LcbgHyxDNPRvKBzrpYf/QVSflTV
-A1JpezRfJ9eY2ph2c+a7UFkqlJBnAxykdi/u71lgCUgzAytS7YNC+HEZf9i+QO0g
-AZA8fhyL0p/zLwkfUMgQ4YrZpUmcC3QXuSto9h5zwnMQOLM14oeRG6HRm4GdGzLM
-A25MgpWBEUJW4hYrImXbQCzK3AP01QfP9ROyz1FbJM3H0ZtCjvnfXR5aCaNPqQv0
-IcW7/wKTZ+gt7qvZWXYDLKG9+9yvtoKUcYVTqBgNOp5C61k=
------END CERTIFICATE-----
diff --git a/mysql-test/std_data/capath/cacert.pem b/mysql-test/std_data/capath/cacert.pem
deleted file mode 100644
index 23dda2318e1..00000000000
--- a/mysql-test/std_data/capath/cacert.pem
+++ /dev/null
@@ -1,79 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- d0:4d:23:85:ee:59:b3:fa
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=cacert, C=FI, ST=Helsinki, L=Helsinki, O=MariaDB
- Validity
- Not Before: Jan 27 10:11:10 2019 GMT
- Not After : Jan 22 10:11:10 2039 GMT
- Subject: CN=cacert, C=FI, ST=Helsinki, L=Helsinki, O=MariaDB
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:e8:0e:a7:84:d3:75:30:06:30:b2:10:b9:d1:88:
- 36:2b:5e:f8:c8:44:57:cb:67:72:ab:96:95:33:d5:
- 88:d1:8f:23:50:98:ba:6d:20:00:80:bd:35:d5:c1:
- bf:98:49:c4:0a:15:4a:34:a6:21:9b:2e:8c:15:09:
- f0:63:81:02:c2:7c:e2:53:e0:f7:a1:1a:40:5e:8f:
- 41:4a:4c:56:d4:20:f1:d5:a7:c1:53:2e:ff:7e:37:
- 17:cc:7e:74:bd:e2:22:33:ce:8c:77:62:a4:c5:3f:
- 44:35:7b:7e:b9:f5:7d:8c:7a:27:58:fd:2c:42:86:
- 2e:e7:6b:01:99:7b:fe:7d:a7:a1:4f:3e:39:39:54:
- 1f:61:de:74:66:d1:77:4f:43:1b:66:70:29:85:de:
- fc:8f:8e:1b:7b:a2:66:48:26:7f:9b:a6:fd:4a:e4:
- dc:eb:ed:bd:f8:e3:f1:57:98:13:6f:f1:a3:2a:e3:
- 73:bd:8d:7c:6f:4b:59:35:bc:b5:42:3e:99:a7:13:
- 8d:be:2e:5c:9a:c6:5b:ab:ae:bf:00:e9:c8:ee:05:
- 22:8e:d5:67:1a:47:9a:6d:9c:f9:42:3e:15:34:f8:
- 31:ec:b4:7e:d3:92:95:b0:b8:f9:66:f3:bd:1d:31:
- 2c:b1:90:62:a1:f8:4e:a6:5d:26:22:f0:e1:fe:16:
- 2b:69
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- CA:71:99:89:F0:72:AB:75:66:BB:65:6A:03:04:72:A5:7B:95:A6:93
- X509v3 Authority Key Identifier:
- keyid:CA:71:99:89:F0:72:AB:75:66:BB:65:6A:03:04:72:A5:7B:95:A6:93
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: sha256WithRSAEncryption
- df:fd:74:29:5b:5e:9a:8b:09:02:40:59:73:cb:71:47:3f:97:
- 3d:a9:fd:c4:8c:01:29:c9:86:b8:71:55:ff:72:0e:50:dc:c8:
- b5:e6:91:41:52:47:21:30:cc:4d:e7:3b:4b:db:55:ea:7d:46:
- eb:53:e0:b7:1b:80:7c:b1:0c:d3:d1:bc:a0:73:ae:96:1f:fd:
- 05:52:7e:54:d5:03:52:69:7b:34:5f:27:d7:98:da:98:76:73:
- e6:bb:50:59:2a:94:90:67:03:1c:a4:76:2f:ee:ef:59:60:09:
- 48:33:03:2b:52:ed:83:42:f8:71:19:7f:d8:be:40:ed:20:01:
- 90:3c:7e:1c:8b:d2:9f:f3:2f:09:1f:50:c8:10:e1:8a:d9:a5:
- 49:9c:0b:74:17:b9:2b:68:f6:1e:73:c2:73:10:38:b3:35:e2:
- 87:91:1b:a1:d1:9b:81:9d:1b:32:cc:03:6e:4c:82:95:81:11:
- 42:56:e2:16:2b:22:65:db:40:2c:ca:dc:03:f4:d5:07:cf:f5:
- 13:b2:cf:51:5b:24:cd:c7:d1:9b:42:8e:f9:df:5d:1e:5a:09:
- a3:4f:a9:0b:f4:21:c5:bb:ff:02:93:67:e8:2d:ee:ab:d9:59:
- 76:03:2c:a1:bd:fb:dc:af:b6:82:94:71:85:53:a8:18:0d:3a:
- 9e:42:eb:59
------BEGIN CERTIFICATE-----
-MIIDfzCCAmegAwIBAgIJANBNI4XuWbP6MA0GCSqGSIb3DQEBCwUAMFYxDzANBgNV
-BAMMBmNhY2VydDELMAkGA1UEBhMCRkkxETAPBgNVBAgMCEhlbHNpbmtpMREwDwYD
-VQQHDAhIZWxzaW5raTEQMA4GA1UECgwHTWFyaWFEQjAeFw0xOTAxMjcxMDExMTBa
-Fw0zOTAxMjIxMDExMTBaMFYxDzANBgNVBAMMBmNhY2VydDELMAkGA1UEBhMCRkkx
-ETAPBgNVBAgMCEhlbHNpbmtpMREwDwYDVQQHDAhIZWxzaW5raTEQMA4GA1UECgwH
-TWFyaWFEQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOgOp4TTdTAG
-MLIQudGINite+MhEV8tncquWlTPViNGPI1CYum0gAIC9NdXBv5hJxAoVSjSmIZsu
-jBUJ8GOBAsJ84lPg96EaQF6PQUpMVtQg8dWnwVMu/343F8x+dL3iIjPOjHdipMU/
-RDV7frn1fYx6J1j9LEKGLudrAZl7/n2noU8+OTlUH2HedGbRd09DG2ZwKYXe/I+O
-G3uiZkgmf5um/Urk3Ovtvfjj8VeYE2/xoyrjc72NfG9LWTW8tUI+macTjb4uXJrG
-W6uuvwDpyO4FIo7VZxpHmm2c+UI+FTT4Mey0ftOSlbC4+WbzvR0xLLGQYqH4TqZd
-JiLw4f4WK2kCAwEAAaNQME4wHQYDVR0OBBYEFMpxmYnwcqt1ZrtlagMEcqV7laaT
-MB8GA1UdIwQYMBaAFMpxmYnwcqt1ZrtlagMEcqV7laaTMAwGA1UdEwQFMAMBAf8w
-DQYJKoZIhvcNAQELBQADggEBAN/9dClbXpqLCQJAWXPLcUc/lz2p/cSMASnJhrhx
-Vf9yDlDcyLXmkUFSRyEwzE3nO0vbVep9RutT4LcbgHyxDNPRvKBzrpYf/QVSflTV
-A1JpezRfJ9eY2ph2c+a7UFkqlJBnAxykdi/u71lgCUgzAytS7YNC+HEZf9i+QO0g
-AZA8fhyL0p/zLwkfUMgQ4YrZpUmcC3QXuSto9h5zwnMQOLM14oeRG6HRm4GdGzLM
-A25MgpWBEUJW4hYrImXbQCzK3AP01QfP9ROyz1FbJM3H0ZtCjvnfXR5aCaNPqQv0
-IcW7/wKTZ+gt7qvZWXYDLKG9+9yvtoKUcYVTqBgNOp5C61k=
------END CERTIFICATE-----
diff --git a/mysql-test/std_data/capath/ed1f42db.0 b/mysql-test/std_data/capath/ed1f42db.0
index 23dda2318e1..16d2d68ca6b 100644
--- a/mysql-test/std_data/capath/ed1f42db.0
+++ b/mysql-test/std_data/capath/ed1f42db.0
@@ -2,78 +2,120 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number:
- d0:4d:23:85:ee:59:b3:fa
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=cacert, C=FI, ST=Helsinki, L=Helsinki, O=MariaDB
+ 5c:81:fd:b9:82:69:e0:46:8d:99:ed:d0:95:4b:d3:d6:62:8a:69:97
+ Signature Algorithm: sha256WithRSAEncryption
+ Issuer: CN = cacert, C = FI, ST = Helsinki, L = Helsinki, O = MariaDB
Validity
- Not Before: Jan 27 10:11:10 2019 GMT
- Not After : Jan 22 10:11:10 2039 GMT
- Subject: CN=cacert, C=FI, ST=Helsinki, L=Helsinki, O=MariaDB
+ Not Before: Mar 3 03:03:03 2020 GMT
+ Not After : Feb 27 03:03:03 2040 GMT
+ Subject: CN = cacert, C = FI, ST = Helsinki, L = Helsinki, O = MariaDB
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
+ RSA Public-Key: (4096 bit)
Modulus:
- 00:e8:0e:a7:84:d3:75:30:06:30:b2:10:b9:d1:88:
- 36:2b:5e:f8:c8:44:57:cb:67:72:ab:96:95:33:d5:
- 88:d1:8f:23:50:98:ba:6d:20:00:80:bd:35:d5:c1:
- bf:98:49:c4:0a:15:4a:34:a6:21:9b:2e:8c:15:09:
- f0:63:81:02:c2:7c:e2:53:e0:f7:a1:1a:40:5e:8f:
- 41:4a:4c:56:d4:20:f1:d5:a7:c1:53:2e:ff:7e:37:
- 17:cc:7e:74:bd:e2:22:33:ce:8c:77:62:a4:c5:3f:
- 44:35:7b:7e:b9:f5:7d:8c:7a:27:58:fd:2c:42:86:
- 2e:e7:6b:01:99:7b:fe:7d:a7:a1:4f:3e:39:39:54:
- 1f:61:de:74:66:d1:77:4f:43:1b:66:70:29:85:de:
- fc:8f:8e:1b:7b:a2:66:48:26:7f:9b:a6:fd:4a:e4:
- dc:eb:ed:bd:f8:e3:f1:57:98:13:6f:f1:a3:2a:e3:
- 73:bd:8d:7c:6f:4b:59:35:bc:b5:42:3e:99:a7:13:
- 8d:be:2e:5c:9a:c6:5b:ab:ae:bf:00:e9:c8:ee:05:
- 22:8e:d5:67:1a:47:9a:6d:9c:f9:42:3e:15:34:f8:
- 31:ec:b4:7e:d3:92:95:b0:b8:f9:66:f3:bd:1d:31:
- 2c:b1:90:62:a1:f8:4e:a6:5d:26:22:f0:e1:fe:16:
- 2b:69
+ 00:bc:72:01:10:68:c1:df:fa:d1:77:55:7c:09:13:
+ 19:51:41:cd:ed:4f:51:43:22:e7:97:0e:94:fc:0d:
+ 1d:a9:c6:f3:17:79:31:6f:12:7a:9b:7f:87:e2:55:
+ 16:d5:a4:dd:6a:d3:5e:4f:e2:e0:bc:c4:9f:c5:95:
+ 1a:47:13:a5:cd:6d:f3:76:e2:9a:12:31:76:e4:f1:
+ 01:94:37:45:10:32:18:9e:cc:d8:7f:04:ca:18:97:
+ bf:22:2e:51:ba:73:6f:46:50:36:fe:df:82:4c:8a:
+ 9e:34:be:44:f4:12:61:72:18:b3:81:b5:d9:b2:69:
+ 8f:7d:f4:8b:41:62:34:59:71:f7:e4:26:a6:cf:55:
+ 4d:d4:52:a3:37:24:bd:82:21:9f:d1:db:cd:e9:12:
+ a9:cf:60:48:3d:da:ea:a0:a7:d0:57:16:68:49:e5:
+ b4:e8:dc:d0:b0:12:b3:c7:1c:f1:b3:b1:eb:12:8b:
+ c7:3e:3c:02:fe:f6:4c:a8:35:d8:cf:74:64:63:89:
+ 84:3e:75:88:a0:0b:80:5c:ea:68:b2:9c:bb:e3:ae:
+ 4f:cd:24:b9:97:89:95:4e:3f:78:48:ba:ad:97:4c:
+ bf:f8:8b:14:80:f4:78:03:11:4b:a7:e3:99:1c:82:
+ 59:bf:b6:f3:3e:3e:db:db:38:73:91:8d:f0:6f:e5:
+ 5d:02:e7:c0:a5:8b:ad:69:f1:17:29:2c:16:41:ad:
+ ac:0f:64:c8:f7:62:58:da:73:66:f7:91:2c:89:f7:
+ 80:6b:d7:91:f1:c8:4a:5a:c4:2d:3d:0b:18:83:f1:
+ e9:74:2d:83:bb:09:46:bd:f0:40:ad:0b:dd:0c:45:
+ 64:8d:9e:cf:a7:a0:6c:d2:cc:f1:f9:05:15:7a:e3:
+ 02:15:b0:e6:99:cd:81:5b:dd:52:9b:c0:35:25:fa:
+ 4c:88:47:1d:16:19:9f:9d:f0:54:01:6e:20:6a:10:
+ ab:4f:d2:a2:a7:31:db:6d:76:26:0d:35:9d:ac:1f:
+ 4e:4d:37:87:2c:78:26:d4:1f:f0:87:fc:f4:e2:2a:
+ af:9a:a4:d6:69:93:16:4f:ed:fb:e0:78:99:36:49:
+ d2:2e:7d:44:15:94:58:bd:ba:bc:d3:b9:75:5c:58:
+ 13:69:18:8e:5d:0e:c9:0c:dd:06:c4:7b:fc:34:3e:
+ df:51:46:8d:5e:33:40:ba:39:75:9a:29:a5:f0:be:
+ d3:a1:2c:72:88:85:4a:a0:2e:d9:71:15:30:49:57:
+ f4:1b:73:e4:b3:b1:9e:3e:e6:0b:30:0a:eb:e9:cc:
+ ec:98:4c:36:ea:58:8a:aa:b1:4b:b9:e1:5e:4a:d0:
+ 81:65:f0:ba:2c:b0:a6:8e:02:f1:c6:e0:78:b9:49:
+ eb:8e:79
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
- CA:71:99:89:F0:72:AB:75:66:BB:65:6A:03:04:72:A5:7B:95:A6:93
+ 4D:FC:7A:19:F3:2B:0C:7D:F6:C0:7C:4D:F8:72:34:4C:8C:35:52:74
X509v3 Authority Key Identifier:
- keyid:CA:71:99:89:F0:72:AB:75:66:BB:65:6A:03:04:72:A5:7B:95:A6:93
+ keyid:4D:FC:7A:19:F3:2B:0C:7D:F6:C0:7C:4D:F8:72:34:4C:8C:35:52:74
- X509v3 Basic Constraints:
+ X509v3 Basic Constraints: critical
CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
- df:fd:74:29:5b:5e:9a:8b:09:02:40:59:73:cb:71:47:3f:97:
- 3d:a9:fd:c4:8c:01:29:c9:86:b8:71:55:ff:72:0e:50:dc:c8:
- b5:e6:91:41:52:47:21:30:cc:4d:e7:3b:4b:db:55:ea:7d:46:
- eb:53:e0:b7:1b:80:7c:b1:0c:d3:d1:bc:a0:73:ae:96:1f:fd:
- 05:52:7e:54:d5:03:52:69:7b:34:5f:27:d7:98:da:98:76:73:
- e6:bb:50:59:2a:94:90:67:03:1c:a4:76:2f:ee:ef:59:60:09:
- 48:33:03:2b:52:ed:83:42:f8:71:19:7f:d8:be:40:ed:20:01:
- 90:3c:7e:1c:8b:d2:9f:f3:2f:09:1f:50:c8:10:e1:8a:d9:a5:
- 49:9c:0b:74:17:b9:2b:68:f6:1e:73:c2:73:10:38:b3:35:e2:
- 87:91:1b:a1:d1:9b:81:9d:1b:32:cc:03:6e:4c:82:95:81:11:
- 42:56:e2:16:2b:22:65:db:40:2c:ca:dc:03:f4:d5:07:cf:f5:
- 13:b2:cf:51:5b:24:cd:c7:d1:9b:42:8e:f9:df:5d:1e:5a:09:
- a3:4f:a9:0b:f4:21:c5:bb:ff:02:93:67:e8:2d:ee:ab:d9:59:
- 76:03:2c:a1:bd:fb:dc:af:b6:82:94:71:85:53:a8:18:0d:3a:
- 9e:42:eb:59
+ 3c:e7:3a:e8:b6:d1:be:ca:27:ad:02:00:08:b7:1f:2d:e9:cd:
+ 81:9f:98:f0:f0:a4:c5:dd:dc:94:a1:a6:bd:31:56:54:05:6a:
+ da:b1:1b:42:35:ef:f8:75:1c:0d:0f:00:77:24:a7:ef:5f:f1:
+ ce:38:3a:05:a7:22:a6:40:b6:6c:57:46:31:e8:ba:2f:b5:9e:
+ fb:7c:07:93:5c:cb:82:59:1a:2f:13:5b:6d:55:8d:d9:dd:ec:
+ 44:b2:7f:89:26:37:da:fc:e8:aa:af:87:8b:5e:c3:3e:21:c2:
+ a0:ca:2a:49:78:fa:9d:10:5c:e8:2c:24:ac:e8:f3:61:25:cb:
+ 86:6c:8f:1d:4c:2f:83:bd:d4:72:dc:54:1b:fa:3d:1a:d4:54:
+ a9:ac:87:70:ff:cf:53:26:1f:e7:11:bc:b3:89:d0:71:25:09:
+ d9:80:09:42:b1:5a:8d:01:a9:89:1e:2c:cc:89:e7:f8:c2:43:
+ 4b:20:cd:ce:9c:2f:67:99:35:4f:e2:ec:00:07:3d:69:6e:9e:
+ 48:93:d4:56:b1:0b:52:00:d9:86:05:1e:ea:64:68:a1:87:04:
+ 0f:17:45:82:8e:f5:13:7a:90:79:c8:fd:42:e8:80:df:3b:46:
+ bc:39:c9:76:14:90:8e:cd:80:98:84:56:43:88:33:1e:ac:4a:
+ cb:48:8d:ff:35:d4:68:0e:ef:bf:1a:b5:34:17:7a:c8:c2:e8:
+ f0:18:f6:58:07:9b:09:9f:b5:e2:29:e2:5e:cb:b9:71:ce:13:
+ 90:6d:b7:4e:23:31:bc:ab:17:b4:3d:96:17:4b:f8:01:49:b9:
+ 0a:0c:73:1d:54:de:51:79:3a:fb:f0:b5:10:8d:38:ad:87:36:
+ 0f:36:48:11:f7:1b:d6:2f:ed:a7:1d:73:74:45:19:69:1d:9f:
+ 86:ec:a3:2b:8e:fd:5a:33:08:4d:17:41:df:57:8a:1e:99:c1:
+ bc:aa:15:a1:af:2c:23:67:4e:31:45:91:fb:8f:af:1e:19:a6:
+ 0f:bb:d9:3a:55:cc:b0:a2:41:a5:99:20:cc:64:91:f7:8e:6b:
+ c4:ad:5a:c8:ca:3d:74:36:91:97:34:f1:f8:c5:22:87:6b:e3:
+ cf:9c:0a:75:5a:09:30:88:9d:07:99:2d:ef:87:75:45:ed:0f:
+ 75:8a:88:6c:b0:7e:dc:c3:d4:50:c4:25:0c:de:f7:53:f6:12:
+ bd:5a:8b:81:3a:30:83:b7:66:5e:7e:8f:d8:65:ab:2a:fa:85:
+ d4:4b:61:fb:27:98:79:cb:d6:06:07:23:7f:d9:1d:79:3e:71:
+ a7:0c:c8:e8:0e:e0:40:66:4d:8d:0e:9c:41:c0:d2:2c:91:95:
+ 63:d5:c4:12:cd:9b:bc:f4
-----BEGIN CERTIFICATE-----
-MIIDfzCCAmegAwIBAgIJANBNI4XuWbP6MA0GCSqGSIb3DQEBCwUAMFYxDzANBgNV
-BAMMBmNhY2VydDELMAkGA1UEBhMCRkkxETAPBgNVBAgMCEhlbHNpbmtpMREwDwYD
-VQQHDAhIZWxzaW5raTEQMA4GA1UECgwHTWFyaWFEQjAeFw0xOTAxMjcxMDExMTBa
-Fw0zOTAxMjIxMDExMTBaMFYxDzANBgNVBAMMBmNhY2VydDELMAkGA1UEBhMCRkkx
-ETAPBgNVBAgMCEhlbHNpbmtpMREwDwYDVQQHDAhIZWxzaW5raTEQMA4GA1UECgwH
-TWFyaWFEQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOgOp4TTdTAG
-MLIQudGINite+MhEV8tncquWlTPViNGPI1CYum0gAIC9NdXBv5hJxAoVSjSmIZsu
-jBUJ8GOBAsJ84lPg96EaQF6PQUpMVtQg8dWnwVMu/343F8x+dL3iIjPOjHdipMU/
-RDV7frn1fYx6J1j9LEKGLudrAZl7/n2noU8+OTlUH2HedGbRd09DG2ZwKYXe/I+O
-G3uiZkgmf5um/Urk3Ovtvfjj8VeYE2/xoyrjc72NfG9LWTW8tUI+macTjb4uXJrG
-W6uuvwDpyO4FIo7VZxpHmm2c+UI+FTT4Mey0ftOSlbC4+WbzvR0xLLGQYqH4TqZd
-JiLw4f4WK2kCAwEAAaNQME4wHQYDVR0OBBYEFMpxmYnwcqt1ZrtlagMEcqV7laaT
-MB8GA1UdIwQYMBaAFMpxmYnwcqt1ZrtlagMEcqV7laaTMAwGA1UdEwQFMAMBAf8w
-DQYJKoZIhvcNAQELBQADggEBAN/9dClbXpqLCQJAWXPLcUc/lz2p/cSMASnJhrhx
-Vf9yDlDcyLXmkUFSRyEwzE3nO0vbVep9RutT4LcbgHyxDNPRvKBzrpYf/QVSflTV
-A1JpezRfJ9eY2ph2c+a7UFkqlJBnAxykdi/u71lgCUgzAytS7YNC+HEZf9i+QO0g
-AZA8fhyL0p/zLwkfUMgQ4YrZpUmcC3QXuSto9h5zwnMQOLM14oeRG6HRm4GdGzLM
-A25MgpWBEUJW4hYrImXbQCzK3AP01QfP9ROyz1FbJM3H0ZtCjvnfXR5aCaNPqQv0
-IcW7/wKTZ+gt7qvZWXYDLKG9+9yvtoKUcYVTqBgNOp5C61k=
+MIIFjTCCA3WgAwIBAgIUXIH9uYJp4EaNme3QlUvT1mKKaZcwDQYJKoZIhvcNAQEL
+BQAwVjEPMA0GA1UEAwwGY2FjZXJ0MQswCQYDVQQGEwJGSTERMA8GA1UECAwISGVs
+c2lua2kxETAPBgNVBAcMCEhlbHNpbmtpMRAwDgYDVQQKDAdNYXJpYURCMB4XDTIw
+MDMwMzAzMDMwM1oXDTQwMDIyNzAzMDMwM1owVjEPMA0GA1UEAwwGY2FjZXJ0MQsw
+CQYDVQQGEwJGSTERMA8GA1UECAwISGVsc2lua2kxETAPBgNVBAcMCEhlbHNpbmtp
+MRAwDgYDVQQKDAdNYXJpYURCMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC
+AgEAvHIBEGjB3/rRd1V8CRMZUUHN7U9RQyLnlw6U/A0dqcbzF3kxbxJ6m3+H4lUW
+1aTdatNeT+LgvMSfxZUaRxOlzW3zduKaEjF25PEBlDdFEDIYnszYfwTKGJe/Ii5R
+unNvRlA2/t+CTIqeNL5E9BJhchizgbXZsmmPffSLQWI0WXH35Camz1VN1FKjNyS9
+giGf0dvN6RKpz2BIPdrqoKfQVxZoSeW06NzQsBKzxxzxs7HrEovHPjwC/vZMqDXY
+z3RkY4mEPnWIoAuAXOpospy7465PzSS5l4mVTj94SLqtl0y/+IsUgPR4AxFLp+OZ
+HIJZv7bzPj7b2zhzkY3wb+VdAufApYutafEXKSwWQa2sD2TI92JY2nNm95EsifeA
+a9eR8chKWsQtPQsYg/HpdC2DuwlGvfBArQvdDEVkjZ7Pp6Bs0szx+QUVeuMCFbDm
+mc2BW91Sm8A1JfpMiEcdFhmfnfBUAW4gahCrT9KipzHbbXYmDTWdrB9OTTeHLHgm
+1B/wh/z04iqvmqTWaZMWT+374HiZNknSLn1EFZRYvbq807l1XFgTaRiOXQ7JDN0G
+xHv8ND7fUUaNXjNAujl1miml8L7ToSxyiIVKoC7ZcRUwSVf0G3Pks7GePuYLMArr
+6czsmEw26liKqrFLueFeStCBZfC6LLCmjgLxxuB4uUnrjnkCAwEAAaNTMFEwHQYD
+VR0OBBYEFE38ehnzKwx99sB8TfhyNEyMNVJ0MB8GA1UdIwQYMBaAFE38ehnzKwx9
+9sB8TfhyNEyMNVJ0MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIB
+ADznOui20b7KJ60CAAi3Hy3pzYGfmPDwpMXd3JShpr0xVlQFatqxG0I17/h1HA0P
+AHckp+9f8c44OgWnIqZAtmxXRjHoui+1nvt8B5Ncy4JZGi8TW21Vjdnd7ESyf4km
+N9r86Kqvh4tewz4hwqDKKkl4+p0QXOgsJKzo82Ely4Zsjx1ML4O91HLcVBv6PRrU
+VKmsh3D/z1MmH+cRvLOJ0HElCdmACUKxWo0BqYkeLMyJ5/jCQ0sgzc6cL2eZNU/i
+7AAHPWlunkiT1FaxC1IA2YYFHupkaKGHBA8XRYKO9RN6kHnI/ULogN87Rrw5yXYU
+kI7NgJiEVkOIMx6sSstIjf811GgO778atTQXesjC6PAY9lgHmwmfteIp4l7LuXHO
+E5Btt04jMbyrF7Q9lhdL+AFJuQoMcx1U3lF5OvvwtRCNOK2HNg82SBH3G9Yv7acd
+c3RFGWkdn4bsoyuO/VozCE0XQd9Xih6ZwbyqFaGvLCNnTjFFkfuPrx4Zpg+72TpV
+zLCiQaWZIMxkkfeOa8StWsjKPXQ2kZc08fjFIodr48+cCnVaCTCInQeZLe+HdUXt
+D3WKiGywftzD1FDEJQze91P2Er1ai4E6MIO3Zl5+j9hlqyr6hdRLYfsnmHnL1gYH
+I3/ZHXk+cacMyOgO4EBmTY0OnEHA0iyRlWPVxBLNm7z0
-----END CERTIFICATE-----
diff --git a/mysql-test/suite/binlog/r/binlog_bug23533.result b/mysql-test/suite/binlog/r/binlog_bug23533.result
index aa37427929b..733117b1905 100644
--- a/mysql-test/suite/binlog/r/binlog_bug23533.result
+++ b/mysql-test/suite/binlog/r/binlog_bug23533.result
@@ -9,7 +9,7 @@ disconnect default;
connect default,localhost,root,,test;
START TRANSACTION;
CREATE TABLE t2 SELECT * FROM t1;
-ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage
+ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mariadbd variable and try again
COMMIT;
SHOW TABLES LIKE 't%';
Tables_in_test (t%)
diff --git a/mysql-test/suite/compat/oracle/r/anonymous_derived.result b/mysql-test/suite/compat/oracle/r/anonymous_derived.result
index 85868794130..6b482d7bdcc 100644
--- a/mysql-test/suite/compat/oracle/r/anonymous_derived.result
+++ b/mysql-test/suite/compat/oracle/r/anonymous_derived.result
@@ -68,7 +68,7 @@ a b
3 3
show create view v1;
View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `test`.`t1`.`a` AS `a`,`__3`.`b` AS `b` from (`test`.`t1` join (select max(`test`.`t2`.`a`) AS `b` from `test`.`t2`) `__3`) latin1 latin1_swedish_ci
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`__3`.`b` AS `b` from (`t1` join (select max(`t2`.`a`) AS `b` from `t2`) `__3`) latin1 latin1_swedish_ci
call p1;
a b
2 3
diff --git a/mysql-test/suite/compat/oracle/r/misc.result b/mysql-test/suite/compat/oracle/r/misc.result
index 38f38bd07e6..fed7e26c31b 100644
--- a/mysql-test/suite/compat/oracle/r/misc.result
+++ b/mysql-test/suite/compat/oracle/r/misc.result
@@ -1,5 +1,25 @@
SET sql_mode=ORACLE;
#
+# Start of 10.2 tests
+#
+#
+# MDEV-27690 Crash on `CHARACTER SET csname COLLATE DEFAULT` in column definition
+#
+CREATE TABLE t1 (a CHAR(10) CHARACTER SET latin1 COLLATE DEFAULT);
+DROP TABLE t1;
+SELECT CAST('a' AS CHAR(10) CHARACTER SET latin1 COLLATE DEFAULT);
+CAST('a' AS CHAR(10) CHARACTER SET latin1 COLLATE DEFAULT)
+a
+SELECT COLUMN_GET(COLUMN_CREATE(0, 'string'),0 AS CHAR CHARACTER SET latin1 COLLATE DEFAULT) AS c1;
+c1
+string
+#
+# End of 10.2 tests
+#
+#
+# Start of 10.3 tests
+#
+#
# MDEV-12086 sql_mode=ORACLE: allow SELECT UNIQUE as a synonym for SELECT DISTINCT
#
CREATE TABLE t1 (a INT);
@@ -10,3 +30,6 @@ a
20
30
DROP TABLE t1;
+#
+# End of 10.3 tests
+#
diff --git a/mysql-test/suite/compat/oracle/r/table_value_constr.result b/mysql-test/suite/compat/oracle/r/table_value_constr.result
index 108163ed782..365edaa7757 100644
--- a/mysql-test/suite/compat/oracle/r/table_value_constr.result
+++ b/mysql-test/suite/compat/oracle/r/table_value_constr.result
@@ -1302,8 +1302,6 @@ EXPLAIN
{
"query_block": {
"union_result": {
- "table_name": "<unit1>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
@@ -1523,8 +1521,6 @@ EXPLAIN
{
"query_block": {
"union_result": {
- "table_name": "<union1,2>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
@@ -1587,8 +1583,6 @@ EXPLAIN
{
"query_block": {
"union_result": {
- "table_name": "<union1,2>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
@@ -1631,8 +1625,6 @@ EXPLAIN
{
"query_block": {
"union_result": {
- "table_name": "<union1,2,3>",
- "access_type": "ALL",
"query_specifications": [
{
"query_block": {
@@ -1675,10 +1667,6 @@ ANALYZE
{
"query_block": {
"union_result": {
- "table_name": "<unit1>",
- "access_type": "ALL",
- "r_loops": 0,
- "r_rows": null,
"query_specifications": [
{
"query_block": {
@@ -1906,10 +1894,6 @@ ANALYZE
{
"query_block": {
"union_result": {
- "table_name": "<union1,2>",
- "access_type": "ALL",
- "r_loops": 0,
- "r_rows": null,
"query_specifications": [
{
"query_block": {
@@ -1974,10 +1958,6 @@ ANALYZE
{
"query_block": {
"union_result": {
- "table_name": "<union1,2>",
- "access_type": "ALL",
- "r_loops": 0,
- "r_rows": null,
"query_specifications": [
{
"query_block": {
@@ -2020,10 +2000,6 @@ ANALYZE
{
"query_block": {
"union_result": {
- "table_name": "<union1,2,3>",
- "access_type": "ALL",
- "r_loops": 0,
- "r_rows": null,
"query_specifications": [
{
"query_block": {
diff --git a/mysql-test/suite/compat/oracle/t/misc.test b/mysql-test/suite/compat/oracle/t/misc.test
index d939b20f8a0..b3fdfdf3851 100644
--- a/mysql-test/suite/compat/oracle/t/misc.test
+++ b/mysql-test/suite/compat/oracle/t/misc.test
@@ -1,6 +1,29 @@
SET sql_mode=ORACLE;
--echo #
+--echo # Start of 10.2 tests
+--echo #
+
+--echo #
+--echo # MDEV-27690 Crash on `CHARACTER SET csname COLLATE DEFAULT` in column definition
+--echo #
+
+CREATE TABLE t1 (a CHAR(10) CHARACTER SET latin1 COLLATE DEFAULT);
+DROP TABLE t1;
+SELECT CAST('a' AS CHAR(10) CHARACTER SET latin1 COLLATE DEFAULT);
+SELECT COLUMN_GET(COLUMN_CREATE(0, 'string'),0 AS CHAR CHARACTER SET latin1 COLLATE DEFAULT) AS c1;
+
+--echo #
+--echo # End of 10.2 tests
+--echo #
+
+
+
+--echo #
+--echo # Start of 10.3 tests
+--echo #
+
+--echo #
--echo # MDEV-12086 sql_mode=ORACLE: allow SELECT UNIQUE as a synonym for SELECT DISTINCT
--echo #
@@ -8,3 +31,8 @@ CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (10),(20),(20),(30),(30),(30);
SELECT UNIQUE a FROM t1;
DROP TABLE t1;
+
+
+--echo #
+--echo # End of 10.3 tests
+--echo #
diff --git a/mysql-test/suite/encryption/r/innodb-redo-nokeys.result b/mysql-test/suite/encryption/r/innodb-redo-nokeys.result
index fe5324d7012..007fe21ed69 100644
--- a/mysql-test/suite/encryption/r/innodb-redo-nokeys.result
+++ b/mysql-test/suite/encryption/r/innodb-redo-nokeys.result
@@ -1,21 +1,22 @@
-call mtr.add_suppression("(mysqld|mariadbd).*: File .*");
+call mtr.add_suppression("mariadbd.*: File .*");
call mtr.add_suppression("Plugin 'file_key_management' .*");
-call mtr.add_suppression("InnoDB: cannot enable encryption, encryption plugin is not available");
+call mtr.add_suppression("InnoDB: We do not continue the crash recovery");
+call mtr.add_suppression("InnoDB: Plugin initialization aborted");
call mtr.add_suppression("Plugin 'InnoDB' init function returned error\\.");
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed.");
-call mtr.add_suppression("InnoDB: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file '.*test.t[1-4]\\.ibd' cannot be decrypted\\.");
-call mtr.add_suppression("failed to read or decrypt \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\]");
+call mtr.add_suppression("InnoDB: Cannot apply log to \\[page id: space=[1-9][0-9]*, page number=0\\] of corrupted file '.*test.t[1-5]\\.ibd'");
# restart: --file-key-management-filename=MYSQL_TEST_DIR/std_data/keys2.txt
SET GLOBAL innodb_file_per_table = ON;
create table t1(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes encryption_key_id=20;
-create table t2(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed;
+create table t2(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes;
create table t3(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb encrypted=yes encryption_key_id=20;
-create table t4(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb;
+create table t4(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb encrypted=yes;
begin;
insert into t2 select * from t1;
insert into t3 select * from t1;
insert into t4 select * from t1;
commit;
+CREATE TABLE t5 (a VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES;
SET GLOBAL innodb_flush_log_at_trx_commit=1;
begin;
update t1 set c = repeat('secret3', 20);
@@ -26,8 +27,13 @@ insert into t1 (c,b) values (repeat('secret5',20), repeat('secret6',6000));
insert into t2 (c,b) values (repeat('secret7',20), repeat('secret8',6000));
insert into t3 (c,b) values (repeat('secret9',20), repeat('secre10',6000));
insert into t4 (c,b) values (repeat('secre11',20), repeat('secre12',6000));
+INSERT INTO t5 VALUES ('foo'),('bar');
COMMIT;
# Kill the server
+# restart: --file-key-management-filename=MYSQL_TEST_DIR/std_data/keys-not-found.txt
+SELECT * FROM INFORMATION_SCHEMA.ENGINES
+WHERE engine = 'innodb'
+AND support IN ('YES', 'DEFAULT', 'ENABLED');
+ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
# restart: --file-key-management-filename=MYSQL_TEST_DIR/std_data/keys2.txt
-# restart: --file-key-management-filename=MYSQL_TEST_DIR/std_data/keys2.txt
-drop table t1, t2,t3,t4;
+drop table t1,t2,t3,t4,t5;
diff --git a/mysql-test/suite/encryption/t/innodb-redo-nokeys.opt b/mysql-test/suite/encryption/t/innodb-redo-nokeys.opt
index 21afc19fc5d..6190ad24ed3 100644
--- a/mysql-test/suite/encryption/t/innodb-redo-nokeys.opt
+++ b/mysql-test/suite/encryption/t/innodb-redo-nokeys.opt
@@ -1,3 +1,2 @@
--innodb-change-buffering=none
---innodb-encrypt-tables=on
--innodb-default-encryption-key-id=20
diff --git a/mysql-test/suite/encryption/t/innodb-redo-nokeys.test b/mysql-test/suite/encryption/t/innodb-redo-nokeys.test
index 3cd331a1019..9deae2f7acb 100644
--- a/mysql-test/suite/encryption/t/innodb-redo-nokeys.test
+++ b/mysql-test/suite/encryption/t/innodb-redo-nokeys.test
@@ -3,13 +3,13 @@
# embedded does not support restart
-- source include/not_embedded.inc
-call mtr.add_suppression("(mysqld|mariadbd).*: File .*");
+call mtr.add_suppression("mariadbd.*: File .*");
call mtr.add_suppression("Plugin 'file_key_management' .*");
-call mtr.add_suppression("InnoDB: cannot enable encryption, encryption plugin is not available");
+call mtr.add_suppression("InnoDB: We do not continue the crash recovery");
+call mtr.add_suppression("InnoDB: Plugin initialization aborted");
call mtr.add_suppression("Plugin 'InnoDB' init function returned error\\.");
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed.");
-call mtr.add_suppression("InnoDB: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file '.*test.t[1-4]\\.ibd' cannot be decrypted\\.");
-call mtr.add_suppression("failed to read or decrypt \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\]");
+call mtr.add_suppression("InnoDB: Cannot apply log to \\[page id: space=[1-9][0-9]*, page number=0\\] of corrupted file '.*test.t[1-5]\\.ibd'");
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
-- source include/restart_mysqld.inc
@@ -17,9 +17,9 @@ call mtr.add_suppression("failed to read or decrypt \\[page id: space=[1-9][0-9]
SET GLOBAL innodb_file_per_table = ON;
create table t1(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes encryption_key_id=20;
-create table t2(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed;
+create table t2(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes;
create table t3(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb encrypted=yes encryption_key_id=20;
-create table t4(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb;
+create table t4(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb encrypted=yes;
begin;
--disable_query_log
@@ -45,6 +45,7 @@ commit;
# happens, InnoDB refuses to start as used
# encryption key is not found.
#
+CREATE TABLE t5 (a VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES;
SET GLOBAL innodb_flush_log_at_trx_commit=1;
begin;
update t1 set c = repeat('secret3', 20);
@@ -55,12 +56,19 @@ insert into t1 (c,b) values (repeat('secret5',20), repeat('secret6',6000));
insert into t2 (c,b) values (repeat('secret7',20), repeat('secret8',6000));
insert into t3 (c,b) values (repeat('secret9',20), repeat('secre10',6000));
insert into t4 (c,b) values (repeat('secre11',20), repeat('secre12',6000));
+INSERT INTO t5 VALUES ('foo'),('bar');
COMMIT;
-let $cleanup= drop table t1,t2,t3,t4;
+
+let $cleanup= drop table t1,t2,t3,t4,t5;
--let CLEANUP_IF_CHECKPOINT= $cleanup;
--source ../../suite/innodb/include/no_checkpoint_end.inc
+-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys-not-found.txt
-- source include/start_mysqld.inc
+SELECT * FROM INFORMATION_SCHEMA.ENGINES
+WHERE engine = 'innodb'
+AND support IN ('YES', 'DEFAULT', 'ENABLED');
+
#
# In above server does start but InnoDB refuses to start
# thus we need to restart server with correct key file
@@ -68,4 +76,4 @@ let $cleanup= drop table t1,t2,t3,t4;
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
-- source include/restart_mysqld.inc
-drop table t1, t2,t3,t4;
+drop table t1,t2,t3,t4,t5;
diff --git a/mysql-test/suite/funcs_1/r/is_columns.result b/mysql-test/suite/funcs_1/r/is_columns.result
index bff145b7469..d352c80017f 100644
--- a/mysql-test/suite/funcs_1/r/is_columns.result
+++ b/mysql-test/suite/funcs_1/r/is_columns.result
@@ -45,7 +45,7 @@ CHARACTER_SET_NAME varchar(32) YES NULL
COLLATION_NAME varchar(32) YES NULL
COLUMN_TYPE longtext NO NULL
COLUMN_KEY varchar(3) NO NULL
-EXTRA varchar(30) NO NULL
+EXTRA varchar(80) NO NULL
PRIVILEGES varchar(80) NO NULL
COLUMN_COMMENT varchar(1024) NO NULL
IS_GENERATED varchar(6) NO NULL
@@ -70,7 +70,7 @@ COLUMNS CREATE TEMPORARY TABLE `COLUMNS` (
`COLLATION_NAME` varchar(32),
`COLUMN_TYPE` longtext NOT NULL,
`COLUMN_KEY` varchar(3) NOT NULL,
- `EXTRA` varchar(30) NOT NULL,
+ `EXTRA` varchar(80) NOT NULL,
`PRIVILEGES` varchar(80) NOT NULL,
`COLUMN_COMMENT` varchar(1024) NOT NULL,
`IS_GENERATED` varchar(6) NOT NULL,
@@ -95,7 +95,7 @@ CHARACTER_SET_NAME varchar(32) YES NULL
COLLATION_NAME varchar(32) YES NULL
COLUMN_TYPE longtext NO NULL
COLUMN_KEY varchar(3) NO NULL
-EXTRA varchar(30) NO NULL
+EXTRA varchar(80) NO NULL
PRIVILEGES varchar(80) NO NULL
COLUMN_COMMENT varchar(1024) NO NULL
IS_GENERATED varchar(6) NO NULL
diff --git a/mysql-test/suite/funcs_1/r/is_columns_is.result b/mysql-test/suite/funcs_1/r/is_columns_is.result
index a72fed20bc9..3664f6861af 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_is.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_is.result
@@ -74,7 +74,7 @@ def information_schema COLUMNS COLUMN_NAME 4 NULL NO varchar 64 192 NULL NULL NU
def information_schema COLUMNS COLUMN_TYPE 16 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL
def information_schema COLUMNS DATA_TYPE 8 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema COLUMNS DATETIME_PRECISION 13 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL
-def information_schema COLUMNS EXTRA 18 NULL NO varchar 30 90 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(30) select NEVER NULL
+def information_schema COLUMNS EXTRA 18 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) select NEVER NULL
def information_schema COLUMNS GENERATION_EXPRESSION 22 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL
def information_schema COLUMNS IS_GENERATED 21 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) select NEVER NULL
def information_schema COLUMNS IS_NULLABLE 7 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL
@@ -628,7 +628,7 @@ NULL information_schema COLUMNS DATETIME_PRECISION bigint NULL NULL NULL NULL bi
3.0000 information_schema COLUMNS COLLATION_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
1.0000 information_schema COLUMNS COLUMN_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext
3.0000 information_schema COLUMNS COLUMN_KEY varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
-3.0000 information_schema COLUMNS EXTRA varchar 30 90 utf8mb3 utf8mb3_general_ci varchar(30)
+3.0000 information_schema COLUMNS EXTRA varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80)
3.0000 information_schema COLUMNS PRIVILEGES varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80)
3.0000 information_schema COLUMNS COLUMN_COMMENT varchar 1024 3072 utf8mb3 utf8mb3_general_ci varchar(1024)
3.0000 information_schema COLUMNS IS_GENERATED varchar 6 18 utf8mb3 utf8mb3_general_ci varchar(6)
diff --git a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
index e3b2a7d58ed..622f839901f 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
@@ -74,7 +74,7 @@ def information_schema COLUMNS COLUMN_NAME 4 NULL NO varchar 64 192 NULL NULL NU
def information_schema COLUMNS COLUMN_TYPE 16 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL
def information_schema COLUMNS DATA_TYPE 8 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema COLUMNS DATETIME_PRECISION 13 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL
-def information_schema COLUMNS EXTRA 18 NULL NO varchar 30 90 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(30) NEVER NULL
+def information_schema COLUMNS EXTRA 18 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) NEVER NULL
def information_schema COLUMNS GENERATION_EXPRESSION 22 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL
def information_schema COLUMNS IS_GENERATED 21 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) NEVER NULL
def information_schema COLUMNS IS_NULLABLE 7 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL
@@ -628,7 +628,7 @@ NULL information_schema COLUMNS DATETIME_PRECISION bigint NULL NULL NULL NULL bi
3.0000 information_schema COLUMNS COLLATION_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
1.0000 information_schema COLUMNS COLUMN_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext
3.0000 information_schema COLUMNS COLUMN_KEY varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
-3.0000 information_schema COLUMNS EXTRA varchar 30 90 utf8mb3 utf8mb3_general_ci varchar(30)
+3.0000 information_schema COLUMNS EXTRA varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80)
3.0000 information_schema COLUMNS PRIVILEGES varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80)
3.0000 information_schema COLUMNS COLUMN_COMMENT varchar 1024 3072 utf8mb3 utf8mb3_general_ci varchar(1024)
3.0000 information_schema COLUMNS IS_GENERATED varchar 6 18 utf8mb3 utf8mb3_general_ci varchar(6)
diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def
index f6cb6732f69..db78d9a77c2 100644
--- a/mysql-test/suite/galera/disabled.def
+++ b/mysql-test/suite/galera/disabled.def
@@ -15,7 +15,7 @@ GCF-939 : MDEV-21520 galera.GCF-939
MW-328A : MDEV-22666 galera.MW-328A MTR failed: "Semaphore wait has lasted > 600 seconds" and do not release port 16002
MW-328B : MDEV-22666 galera.MW-328A MTR failed: "Semaphore wait has lasted > 600 seconds" and do not release port 16002
MW-329 : MDEV-19962 Galera test failure on MW-329
-galera_applier_ftwrl_table_alter : MDEV-26502 : galera.galera_applier_ftwrl_table_alter MTR failed : Result content mismatch
+galera_as_slave_ctas : MDEV-28378 timeout
galera_as_slave_replication_bundle : MDEV-15785 OPTION_GTID_BEGIN is set in Gtid_log_event::do_apply_event()
galera_bf_abort_group_commit : MDEV-18282 Galera test failure on galera.galera_bf_abort_group_commit
galera_bf_kill_debug : MDEV-24485 wsrep::client_state::do_acquire_ownership(): Assertion `state_ == s_idle || mode_ != m_local' failed
diff --git a/mysql-test/suite/galera/galera_2nodes.cnf b/mysql-test/suite/galera/galera_2nodes.cnf
index 64c92883b3a..3532c1f2134 100644
--- a/mysql-test/suite/galera/galera_2nodes.cnf
+++ b/mysql-test/suite/galera/galera_2nodes.cnf
@@ -7,47 +7,31 @@ binlog-format=row
innodb-autoinc-lock-mode=2
default-storage-engine=innodb
wsrep-provider=@ENV.WSREP_PROVIDER
-wsrep_node_address=127.0.0.1
# enforce read-committed characteristics across the cluster
+# wsrep-causal-reads=ON
wsrep-sync-wait=15
[mysqld.1]
-loose-innodb
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
-wsrep-cluster-address=gcomm://
+wsrep_cluster_address=gcomm://
wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.1.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port'
-# enforce read-committed characteristics across the cluster
-wsrep_causal_reads=ON
-wsrep_sync_wait = 15
-
[mysqld.2]
-loose-innodb
-# debug=d:t:i:o,/tmp/mysqld.2.trace
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
-wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S'
-
-# enforce read-committed characteristics across the cluster
-wsrep_causal_reads=ON
-wsrep_sync_wait = 15
-
-wsrep_node_address=127.0.0.1
-wsrep_sst_receive_address=127.0.0.2:@mysqld.2.#sst_port
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.2.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port
-wsrep_sst_receive_address='127.0.0.2:@mysqld.2.#sst_port'
-
-# enforce read-committed characteristics across the cluster
-wsrep_causal_reads=ON
-wsrep_sync_wait = 15
+wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port'
[ENV]
NODE_MYPORT_1= @mysqld.1.port
diff --git a/mysql-test/suite/galera/galera_2nodes_as_master.cnf b/mysql-test/suite/galera/galera_2nodes_as_master.cnf
index 4d89b02387b..ba53d6062c1 100644
--- a/mysql-test/suite/galera/galera_2nodes_as_master.cnf
+++ b/mysql-test/suite/galera/galera_2nodes_as_master.cnf
@@ -7,50 +7,44 @@
!include include/default_mysqld.cnf
[mysqld]
+loose-innodb
log-bin=mysqld-bin
+log-slave-updates
binlog-format=row
innodb-autoinc-lock-mode=2
default-storage-engine=innodb
+# enforce read-committed characteristics across the cluster
+# wsrep-causal-reads=ON
+wsrep-sync-wait=15
[mysqld.1]
+wsrep-on=1
+server-id=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-
-server-id=1
-log_slave_updates
-
-wsrep-on=1
-wsrep-provider=@ENV.WSREP_PROVIDER
-wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=10M'
+wsrep_provider=@ENV.WSREP_PROVIDER
wsrep_cluster_address=gcomm://
-wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port'
-wsrep_node_address=127.0.0.1
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.1.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port
-# enforce read-committed characteristics across the cluster
-wsrep-causal-reads=ON
-wsrep-sync-wait=15
+wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port'
[mysqld.2]
+wsrep-on=1
+server-id=2
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-
-server-id=2
-log_slave_updates
-
-wsrep-on=1
wsrep_provider=@ENV.WSREP_PROVIDER
-wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=10M'
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
-wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port'
-wsrep_node_address=127.0.0.1
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.2.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port
-# enforce read-committed characteristics across the cluster
-wsrep-causal-reads=ON
-wsrep-sync-wait=15
+wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port'
[mysqld.3]
+wsrep-on=OFF
server-id=3
[ENV]
diff --git a/mysql-test/suite/galera/galera_2nodes_as_slave.cnf b/mysql-test/suite/galera/galera_2nodes_as_slave.cnf
index f22703a59f0..f25c7cc6d48 100644
--- a/mysql-test/suite/galera/galera_2nodes_as_slave.cnf
+++ b/mysql-test/suite/galera/galera_2nodes_as_slave.cnf
@@ -6,61 +6,45 @@
!include include/default_mysqld.cnf
[mysqld]
+loose-innodb
+log-bin=mysqld-bin
+log-slave-updates
binlog-format=row
+innodb-autoinc-lock-mode=2
+default-storage-engine=innodb
+# enforce read-committed characteristics across the cluster
+# wsrep-causal-reads=ON
+wsrep-sync-wait=15
[mysqld.1]
+wsrep-on=1
+server-id=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
-
-log-bin=master-bin
-log-bin-index=master-bin
-log-slave-updates
-
-innodb-autoinc-lock-mode=2
-default-storage-engine=innodb
-wsrep-provider=@ENV.WSREP_PROVIDER
-wsrep_node_address=127.0.0.1
-wsrep-cluster-address=gcomm://
-wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=10M'
+wsrep_provider=@ENV.WSREP_PROVIDER
+wsrep_cluster_address=gcomm://
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.1.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port'
-# enforce read-committed characteristics across the cluster
-wsrep-causal-reads=ON
-wsrep-sync-wait=15
-server-id=1
-
[mysqld.2]
+wsrep-on=1
+server-id=2
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
-
-log-bin=master-bin
-log-bin-index=master-bin
-log-slave-updates
-
-innodb-autoinc-lock-mode=2
-default-storage-engine=innodb
-wsrep-provider=@ENV.WSREP_PROVIDER
-wsrep_node_address=127.0.0.1
+wsrep_provider=@ENV.WSREP_PROVIDER
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
-wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=10M'
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.2.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port'
-# enforce read-committed characteristics across the cluster
-wsrep-causal-reads=ON
-wsrep-sync-wait=15
-server-id=2
-
[mysqld.3]
-log-bin=master-bin
-log-bin-index=master-bin
-server-id=3
wsrep-on=OFF
+server-id=3
[ENV]
NODE_MYPORT_1= @mysqld.1.port
diff --git a/mysql-test/suite/galera/galera_3nodes_as_slave.cnf b/mysql-test/suite/galera/galera_3nodes_as_slave.cnf
index 68558b697e8..0ecf877b5a3 100644
--- a/mysql-test/suite/galera/galera_3nodes_as_slave.cnf
+++ b/mysql-test/suite/galera/galera_3nodes_as_slave.cnf
@@ -6,79 +6,57 @@
!include include/default_mysqld.cnf
[mysqld]
-log-bin
+loose-innodb
+log-bin=mysqld-bin
+log-slave-updates
binlog-format=row
+innodb-autoinc-lock-mode=2
+default-storage-engine=innodb
+# enforce read-committed characteristics across the cluster
+# wsrep-causal-reads=ON
+wsrep-sync-wait=15
[mysqld.1]
+wsrep-on=1
+server-id=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
-
-log-slave-updates
-wsrep-on=1
-
-innodb-autoinc-lock-mode=2
-default-storage-engine=innodb
-wsrep-provider=@ENV.WSREP_PROVIDER
-wsrep_node_address=127.0.0.1
-wsrep-cluster-address=gcomm://
-wsrep_provider_options='base_port=@mysqld.1.#galera_port;evs.install_timeout = PT15S;evs.max_install_timeouts=1;gcache.size=10M'
+wsrep_provider=@ENV.WSREP_PROVIDER
+wsrep_cluster_address=gcomm://
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.1.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port'
-# enforce read-committed characteristics across the cluster
-wsrep-causal-reads=ON
-wsrep-sync-wait=15
-server-id=1
-
[mysqld.2]
+wsrep-on=1
+server-id=2
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
-
-log-slave-updates
-wsrep-on=1
-
-innodb-autoinc-lock-mode=2
-default-storage-engine=innodb
-wsrep-provider=@ENV.WSREP_PROVIDER
-wsrep_node_address=127.0.0.1
+wsrep_provider=@ENV.WSREP_PROVIDER
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
-wsrep_provider_options='base_port=@mysqld.2.#galera_port;evs.install_timeout=PT15S;evs.max_install_timeouts=1;gcache.size=10M'
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.2.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port'
-# enforce read-committed characteristics across the cluster
-wsrep-causal-reads=ON
-wsrep-sync-wait=15
-server-id=2
-
[mysqld.3]
+wsrep-on=1
+server-id=3
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
-
-log-slave-updates
-wsrep-on=1
-
-innodb-autoinc-lock-mode=2
-default-storage-engine=innodb
wsrep-provider=@ENV.WSREP_PROVIDER
-wsrep_node_address=127.0.0.1
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
-wsrep_provider_options='base_port=@mysqld.3.#galera_port;evs.install_timeout=PT15S;evs.max_install_timeouts=1;gcache.size=10M'
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.3.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.3.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.3.#sst_port'
-# enforce read-committed characteristics across the cluster
-wsrep-causal-reads=ON
-wsrep-sync-wait=15
-server-id=3
-
[mysqld.4]
+wsrep-on=OFF
server-id=4
[ENV]
diff --git a/mysql-test/suite/galera/galera_4nodes.cnf b/mysql-test/suite/galera/galera_4nodes.cnf
index 65620313b23..66238a8e4c2 100644
--- a/mysql-test/suite/galera/galera_4nodes.cnf
+++ b/mysql-test/suite/galera/galera_4nodes.cnf
@@ -2,54 +2,56 @@
!include include/default_mysqld.cnf
[mysqld]
+loose-innodb
binlog-format=row
innodb-autoinc-lock-mode=2
default-storage-engine=innodb
wsrep-provider=@ENV.WSREP_PROVIDER
-wsrep_node_address=127.0.0.1
# enforce read-committed characteristics across the cluster
-wsrep-causal-reads=ON
+# wsrep-causal-reads=ON
wsrep-sync-wait=15
[mysqld.1]
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
-wsrep-cluster-address=gcomm://
-wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=10M'
+wsrep_cluster_address=gcomm://
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.1.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port'
[mysqld.2]
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
-wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=10M'
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.2.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port'
-
[mysqld.3]
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
-wsrep_provider_options='base_port=@mysqld.3.#galera_port;gcache.size=10M'
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.3.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.3.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.3.#sst_port'
-
[mysqld.4]
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
-wsrep_provider_options='base_port=@mysqld.4.#galera_port;gcache.size=10M'
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.4.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.4.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.4.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.4.#sst_port'
diff --git a/mysql-test/suite/galera/r/MDEV-26575.result b/mysql-test/suite/galera/r/MDEV-26575.result
new file mode 100644
index 00000000000..b8d5d431aaa
--- /dev/null
+++ b/mysql-test/suite/galera/r/MDEV-26575.result
@@ -0,0 +1,8 @@
+connection node_2;
+connection node_1;
+connection node_1;
+connection node_2;
+connection node_2;
+SET SESSION wsrep_on = OFF;
+XA START 'xatest';
+ERROR 42000: This version of MariaDB doesn't yet support 'XA transactions with Galera replication'
diff --git a/mysql-test/suite/galera/r/galera_as_slave_autoinc.result b/mysql-test/suite/galera/r/galera_as_slave_autoinc.result
index 6ac51f44950..ffaa62c0003 100644
--- a/mysql-test/suite/galera/r/galera_as_slave_autoinc.result
+++ b/mysql-test/suite/galera/r/galera_as_slave_autoinc.result
@@ -11,10 +11,14 @@ c char(32) DEFAULT 'dummy_text',
PRIMARY KEY (i)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
insert into t1(i) values(null);
+Warnings:
+Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave
select * from t1;
i c
1 dummy_text
insert into t1(i) values(null), (null), (null);
+Warnings:
+Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave
select * from t1;
i c
1 dummy_text
@@ -23,8 +27,12 @@ i c
4 dummy_text
SET SESSION auto_increment_increment=7;
insert into t1(i) values(null), (null), (null);
+Warnings:
+Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave
SET SESSION auto_increment_offset=5;
insert into t1(i) values(null), (null), (null);
+Warnings:
+Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave
select * from t1;
i c
1 dummy_text
@@ -81,8 +89,10 @@ binlog_format ROW
show variables like 'auto_increment_increment';
Variable_name Value
auto_increment_increment 2
+CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format");
connection node_3;
DROP TABLE t1;
+CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format");
connection node_2;
STOP SLAVE;
RESET SLAVE ALL;
diff --git a/mysql-test/suite/galera/r/galera_binlog_cache_size.result b/mysql-test/suite/galera/r/galera_binlog_cache_size.result
index eafb68710ee..a92e548ab7f 100644
--- a/mysql-test/suite/galera/r/galera_binlog_cache_size.result
+++ b/mysql-test/suite/galera/r/galera_binlog_cache_size.result
@@ -10,6 +10,6 @@ SET AUTOCOMMIT=ON;
START TRANSACTION;
INSERT INTO t1 SELECT REPEAT('a', 767) FROM ten;
INSERT INTO t1 SELECT REPEAT('a', 767) FROM ten;
-ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage
+ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mariadbd variable and try again
DROP TABLE t1;
DROP TABLE ten;
diff --git a/mysql-test/suite/galera/r/galera_sst_encrypted.result b/mysql-test/suite/galera/r/galera_sst_encrypted.result
new file mode 100644
index 00000000000..52ca6e06bae
--- /dev/null
+++ b/mysql-test/suite/galera/r/galera_sst_encrypted.result
@@ -0,0 +1,348 @@
+connection node_2;
+connection node_1;
+connection node_1;
+connection node_2;
+Performing State Transfer on a server that has been shut down cleanly and restarted
+connection node_1;
+CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (1,'node1_committed_before');
+INSERT INTO t1 VALUES (2,'node1_committed_before');
+INSERT INTO t1 VALUES (3,'node1_committed_before');
+INSERT INTO t1 VALUES (4,'node1_committed_before');
+INSERT INTO t1 VALUES (5,'node1_committed_before');
+COMMIT;
+connection node_2;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (6,'node2_committed_before');
+INSERT INTO t1 VALUES (7,'node2_committed_before');
+INSERT INTO t1 VALUES (8,'node2_committed_before');
+INSERT INTO t1 VALUES (9,'node2_committed_before');
+INSERT INTO t1 VALUES (10,'node2_committed_before');
+COMMIT;
+Shutting down server ...
+connection node_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (11,'node1_committed_during');
+INSERT INTO t1 VALUES (12,'node1_committed_during');
+INSERT INTO t1 VALUES (13,'node1_committed_during');
+INSERT INTO t1 VALUES (14,'node1_committed_during');
+INSERT INTO t1 VALUES (15,'node1_committed_during');
+COMMIT;
+START TRANSACTION;
+INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+connect node_1a_galera_st_shutdown_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+connection node_2;
+Starting server ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (26,'node2_committed_after');
+INSERT INTO t1 VALUES (27,'node2_committed_after');
+INSERT INTO t1 VALUES (28,'node2_committed_after');
+INSERT INTO t1 VALUES (29,'node2_committed_after');
+INSERT INTO t1 VALUES (30,'node2_committed_after');
+COMMIT;
+connection node_1;
+INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+COMMIT;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (36,'node1_committed_after');
+INSERT INTO t1 VALUES (37,'node1_committed_after');
+INSERT INTO t1 VALUES (38,'node1_committed_after');
+INSERT INTO t1 VALUES (39,'node1_committed_after');
+INSERT INTO t1 VALUES (40,'node1_committed_after');
+COMMIT;
+connection node_1a_galera_st_shutdown_slave;
+INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
+ROLLBACK;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_15 FROM t1;
+EXPECT_15
+35
+SELECT * from t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+COMMIT;
+connection node_1;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_15 FROM t1;
+EXPECT_15
+35
+SELECT * from t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+DROP TABLE t1;
+COMMIT;
+Performing State Transfer on a server that starts from a clean var directory
+This is accomplished by shutting down node #2 and removing its var directory before restarting it
+connection node_1;
+CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (1,'node1_committed_before');
+INSERT INTO t1 VALUES (2,'node1_committed_before');
+INSERT INTO t1 VALUES (3,'node1_committed_before');
+INSERT INTO t1 VALUES (4,'node1_committed_before');
+INSERT INTO t1 VALUES (5,'node1_committed_before');
+COMMIT;
+connection node_2;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (6,'node2_committed_before');
+INSERT INTO t1 VALUES (7,'node2_committed_before');
+INSERT INTO t1 VALUES (8,'node2_committed_before');
+INSERT INTO t1 VALUES (9,'node2_committed_before');
+INSERT INTO t1 VALUES (10,'node2_committed_before');
+COMMIT;
+Shutting down server ...
+connection node_1;
+Cleaning var directory ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (11,'node1_committed_during');
+INSERT INTO t1 VALUES (12,'node1_committed_during');
+INSERT INTO t1 VALUES (13,'node1_committed_during');
+INSERT INTO t1 VALUES (14,'node1_committed_during');
+INSERT INTO t1 VALUES (15,'node1_committed_during');
+COMMIT;
+START TRANSACTION;
+INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+connect node_1a_galera_st_clean_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+connection node_2;
+Starting server ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (26,'node2_committed_after');
+INSERT INTO t1 VALUES (27,'node2_committed_after');
+INSERT INTO t1 VALUES (28,'node2_committed_after');
+INSERT INTO t1 VALUES (29,'node2_committed_after');
+INSERT INTO t1 VALUES (30,'node2_committed_after');
+COMMIT;
+connection node_1;
+INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+COMMIT;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (36,'node1_committed_after');
+INSERT INTO t1 VALUES (37,'node1_committed_after');
+INSERT INTO t1 VALUES (38,'node1_committed_after');
+INSERT INTO t1 VALUES (39,'node1_committed_after');
+INSERT INTO t1 VALUES (40,'node1_committed_after');
+COMMIT;
+connection node_1a_galera_st_clean_slave;
+INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
+ROLLBACK;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
+EXPECT_35
+35
+SELECT * from t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+COMMIT;
+connection node_1;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
+EXPECT_35
+35
+SELECT * from t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+DROP TABLE t1;
+COMMIT;
+disconnect node_2;
+disconnect node_1;
diff --git a/mysql-test/suite/galera/r/galera_sst_mariabackup_logarchive,debug.rdiff b/mysql-test/suite/galera/r/galera_sst_mariabackup_logarchive,debug.rdiff
new file mode 100644
index 00000000000..a9c796da607
--- /dev/null
+++ b/mysql-test/suite/galera/r/galera_sst_mariabackup_logarchive,debug.rdiff
@@ -0,0 +1,192 @@
+--- r/galera_sst_mariabackup_logarchive.result
++++ r/galera_sst_mariabackup_logarchive.reject
+@@ -516,5 +516,189 @@
+ 1
+ DROP TABLE t1;
+ COMMIT;
++Performing State Transfer on a server that has been killed and restarted
++while a DDL was in progress on it
++connection node_1;
++CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
++SET AUTOCOMMIT=OFF;
++START TRANSACTION;
++INSERT INTO t1 VALUES (1,'node1_committed_before');
++INSERT INTO t1 VALUES (2,'node1_committed_before');
++INSERT INTO t1 VALUES (3,'node1_committed_before');
++INSERT INTO t1 VALUES (4,'node1_committed_before');
++INSERT INTO t1 VALUES (5,'node1_committed_before');
++connection node_2;
++START TRANSACTION;
++INSERT INTO t1 VALUES (6,'node2_committed_before');
++INSERT INTO t1 VALUES (7,'node2_committed_before');
++INSERT INTO t1 VALUES (8,'node2_committed_before');
++INSERT INTO t1 VALUES (9,'node2_committed_before');
++INSERT INTO t1 VALUES (10,'node2_committed_before');
++COMMIT;
++SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
++connection node_1;
++ALTER TABLE t1 ADD COLUMN f2 INTEGER;
++connection node_2;
++SET wsrep_sync_wait = 0;
++Killing server ...
++connection node_1;
++SET AUTOCOMMIT=OFF;
++START TRANSACTION;
++INSERT INTO t1 (id,f1) VALUES (11,'node1_committed_during');
++INSERT INTO t1 (id,f1) VALUES (12,'node1_committed_during');
++INSERT INTO t1 (id,f1) VALUES (13,'node1_committed_during');
++INSERT INTO t1 (id,f1) VALUES (14,'node1_committed_during');
++INSERT INTO t1 (id,f1) VALUES (15,'node1_committed_during');
++COMMIT;
++START TRANSACTION;
++INSERT INTO t1 (id,f1) VALUES (16,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (17,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (18,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (19,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (20,'node1_to_be_committed_after');
++connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1;
++SET AUTOCOMMIT=OFF;
++START TRANSACTION;
++INSERT INTO t1 (id,f1) VALUES (21,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (22,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (23,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (24,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (25,'node1_to_be_rollbacked_after');
++connection node_2;
++Performing --wsrep-recover ...
++connection node_2;
++Starting server ...
++Using --wsrep-start-position when starting mysqld ...
++SET AUTOCOMMIT=OFF;
++START TRANSACTION;
++INSERT INTO t1 (id,f1) VALUES (26,'node2_committed_after');
++INSERT INTO t1 (id,f1) VALUES (27,'node2_committed_after');
++INSERT INTO t1 (id,f1) VALUES (28,'node2_committed_after');
++INSERT INTO t1 (id,f1) VALUES (29,'node2_committed_after');
++INSERT INTO t1 (id,f1) VALUES (30,'node2_committed_after');
++COMMIT;
++connection node_1;
++INSERT INTO t1 (id,f1) VALUES (31,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (32,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (33,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (34,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (35,'node1_to_be_committed_after');
++COMMIT;
++SET AUTOCOMMIT=OFF;
++START TRANSACTION;
++INSERT INTO t1 (id,f1) VALUES (36,'node1_committed_after');
++INSERT INTO t1 (id,f1) VALUES (37,'node1_committed_after');
++INSERT INTO t1 (id,f1) VALUES (38,'node1_committed_after');
++INSERT INTO t1 (id,f1) VALUES (39,'node1_committed_after');
++INSERT INTO t1 (id,f1) VALUES (40,'node1_committed_after');
++COMMIT;
++connection node_1a_galera_st_kill_slave_ddl;
++INSERT INTO t1 (id,f1) VALUES (41,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (42,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (43,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (44,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (45,'node1_to_be_rollbacked_after');
++ROLLBACK;
++SET AUTOCOMMIT=ON;
++SET SESSION wsrep_sync_wait=15;
++SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
++EXPECT_3
++3
++SELECT COUNT(*) AS EXPECT_35 FROM t1;
++EXPECT_35
++35
++SELECT * FROM t1;
++id f1 f2
++1 node1_committed_before NULL
++2 node1_committed_before NULL
++3 node1_committed_before NULL
++4 node1_committed_before NULL
++5 node1_committed_before NULL
++6 node2_committed_before NULL
++7 node2_committed_before NULL
++8 node2_committed_before NULL
++9 node2_committed_before NULL
++10 node2_committed_before NULL
++11 node1_committed_during NULL
++12 node1_committed_during NULL
++13 node1_committed_during NULL
++14 node1_committed_during NULL
++15 node1_committed_during NULL
++16 node1_to_be_committed_after NULL
++17 node1_to_be_committed_after NULL
++18 node1_to_be_committed_after NULL
++19 node1_to_be_committed_after NULL
++20 node1_to_be_committed_after NULL
++26 node2_committed_after NULL
++27 node2_committed_after NULL
++28 node2_committed_after NULL
++29 node2_committed_after NULL
++30 node2_committed_after NULL
++31 node1_to_be_committed_after NULL
++32 node1_to_be_committed_after NULL
++33 node1_to_be_committed_after NULL
++34 node1_to_be_committed_after NULL
++35 node1_to_be_committed_after NULL
++36 node1_committed_after NULL
++37 node1_committed_after NULL
++38 node1_committed_after NULL
++39 node1_committed_after NULL
++40 node1_committed_after NULL
++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
++COUNT(*) = 0
++1
++COMMIT;
++connection node_1;
++SET AUTOCOMMIT=ON;
++SET SESSION wsrep_sync_wait=15;
++SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
++EXPECT_3
++3
++SELECT COUNT(*) AS EXPECT_35 FROM t1;
++EXPECT_35
++35
++SELECT * FROM t1;
++id f1 f2
++1 node1_committed_before NULL
++2 node1_committed_before NULL
++3 node1_committed_before NULL
++4 node1_committed_before NULL
++5 node1_committed_before NULL
++6 node2_committed_before NULL
++7 node2_committed_before NULL
++8 node2_committed_before NULL
++9 node2_committed_before NULL
++10 node2_committed_before NULL
++11 node1_committed_during NULL
++12 node1_committed_during NULL
++13 node1_committed_during NULL
++14 node1_committed_during NULL
++15 node1_committed_during NULL
++16 node1_to_be_committed_after NULL
++17 node1_to_be_committed_after NULL
++18 node1_to_be_committed_after NULL
++19 node1_to_be_committed_after NULL
++20 node1_to_be_committed_after NULL
++26 node2_committed_after NULL
++27 node2_committed_after NULL
++28 node2_committed_after NULL
++29 node2_committed_after NULL
++30 node2_committed_after NULL
++31 node1_to_be_committed_after NULL
++32 node1_to_be_committed_after NULL
++33 node1_to_be_committed_after NULL
++34 node1_to_be_committed_after NULL
++35 node1_to_be_committed_after NULL
++36 node1_committed_after NULL
++37 node1_committed_after NULL
++38 node1_committed_after NULL
++39 node1_committed_after NULL
++40 node1_committed_after NULL
++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
++COUNT(*) = 0
++1
++DROP TABLE t1;
++COMMIT;
++SET GLOBAL debug_dbug = $debug_orig;
+ disconnect node_2;
+ disconnect node_1;
diff --git a/mysql-test/suite/galera/r/galera_sst_mariabackup_logarchive.result b/mysql-test/suite/galera/r/galera_sst_mariabackup_logarchive.result
new file mode 100644
index 00000000000..c2bbb94653a
--- /dev/null
+++ b/mysql-test/suite/galera/r/galera_sst_mariabackup_logarchive.result
@@ -0,0 +1,522 @@
+connection node_2;
+connection node_1;
+connection node_1;
+connection node_2;
+connection node_2;
+connection node_1;
+Performing State Transfer on a server that has been shut down cleanly and restarted
+connection node_1;
+CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (1,'node1_committed_before');
+INSERT INTO t1 VALUES (2,'node1_committed_before');
+INSERT INTO t1 VALUES (3,'node1_committed_before');
+INSERT INTO t1 VALUES (4,'node1_committed_before');
+INSERT INTO t1 VALUES (5,'node1_committed_before');
+COMMIT;
+connection node_2;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (6,'node2_committed_before');
+INSERT INTO t1 VALUES (7,'node2_committed_before');
+INSERT INTO t1 VALUES (8,'node2_committed_before');
+INSERT INTO t1 VALUES (9,'node2_committed_before');
+INSERT INTO t1 VALUES (10,'node2_committed_before');
+COMMIT;
+Shutting down server ...
+connection node_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (11,'node1_committed_during');
+INSERT INTO t1 VALUES (12,'node1_committed_during');
+INSERT INTO t1 VALUES (13,'node1_committed_during');
+INSERT INTO t1 VALUES (14,'node1_committed_during');
+INSERT INTO t1 VALUES (15,'node1_committed_during');
+COMMIT;
+START TRANSACTION;
+INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+connect node_1a_galera_st_shutdown_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+connection node_2;
+Starting server ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (26,'node2_committed_after');
+INSERT INTO t1 VALUES (27,'node2_committed_after');
+INSERT INTO t1 VALUES (28,'node2_committed_after');
+INSERT INTO t1 VALUES (29,'node2_committed_after');
+INSERT INTO t1 VALUES (30,'node2_committed_after');
+COMMIT;
+connection node_1;
+INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+COMMIT;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (36,'node1_committed_after');
+INSERT INTO t1 VALUES (37,'node1_committed_after');
+INSERT INTO t1 VALUES (38,'node1_committed_after');
+INSERT INTO t1 VALUES (39,'node1_committed_after');
+INSERT INTO t1 VALUES (40,'node1_committed_after');
+COMMIT;
+connection node_1a_galera_st_shutdown_slave;
+INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
+ROLLBACK;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_15 FROM t1;
+EXPECT_15
+35
+SELECT * from t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+COMMIT;
+connection node_1;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_15 FROM t1;
+EXPECT_15
+35
+SELECT * from t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+DROP TABLE t1;
+COMMIT;
+Performing State Transfer on a server that starts from a clean var directory
+This is accomplished by shutting down node #2 and removing its var directory before restarting it
+connection node_1;
+CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (1,'node1_committed_before');
+INSERT INTO t1 VALUES (2,'node1_committed_before');
+INSERT INTO t1 VALUES (3,'node1_committed_before');
+INSERT INTO t1 VALUES (4,'node1_committed_before');
+INSERT INTO t1 VALUES (5,'node1_committed_before');
+COMMIT;
+connection node_2;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (6,'node2_committed_before');
+INSERT INTO t1 VALUES (7,'node2_committed_before');
+INSERT INTO t1 VALUES (8,'node2_committed_before');
+INSERT INTO t1 VALUES (9,'node2_committed_before');
+INSERT INTO t1 VALUES (10,'node2_committed_before');
+COMMIT;
+Shutting down server ...
+connection node_1;
+Cleaning var directory ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (11,'node1_committed_during');
+INSERT INTO t1 VALUES (12,'node1_committed_during');
+INSERT INTO t1 VALUES (13,'node1_committed_during');
+INSERT INTO t1 VALUES (14,'node1_committed_during');
+INSERT INTO t1 VALUES (15,'node1_committed_during');
+COMMIT;
+START TRANSACTION;
+INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+connect node_1a_galera_st_clean_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+connection node_2;
+Starting server ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (26,'node2_committed_after');
+INSERT INTO t1 VALUES (27,'node2_committed_after');
+INSERT INTO t1 VALUES (28,'node2_committed_after');
+INSERT INTO t1 VALUES (29,'node2_committed_after');
+INSERT INTO t1 VALUES (30,'node2_committed_after');
+COMMIT;
+connection node_1;
+INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+COMMIT;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (36,'node1_committed_after');
+INSERT INTO t1 VALUES (37,'node1_committed_after');
+INSERT INTO t1 VALUES (38,'node1_committed_after');
+INSERT INTO t1 VALUES (39,'node1_committed_after');
+INSERT INTO t1 VALUES (40,'node1_committed_after');
+COMMIT;
+connection node_1a_galera_st_clean_slave;
+INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
+ROLLBACK;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
+EXPECT_35
+35
+SELECT * from t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+COMMIT;
+connection node_1;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
+EXPECT_35
+35
+SELECT * from t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+DROP TABLE t1;
+COMMIT;
+Performing State Transfer on a server that has been killed and restarted
+connection node_1;
+CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (1,'node1_committed_before');
+INSERT INTO t1 VALUES (2,'node1_committed_before');
+INSERT INTO t1 VALUES (3,'node1_committed_before');
+INSERT INTO t1 VALUES (4,'node1_committed_before');
+INSERT INTO t1 VALUES (5,'node1_committed_before');
+COMMIT;
+connection node_2;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (6,'node2_committed_before');
+INSERT INTO t1 VALUES (7,'node2_committed_before');
+INSERT INTO t1 VALUES (8,'node2_committed_before');
+INSERT INTO t1 VALUES (9,'node2_committed_before');
+INSERT INTO t1 VALUES (10,'node2_committed_before');
+COMMIT;
+Killing server ...
+connection node_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (11,'node1_committed_during');
+INSERT INTO t1 VALUES (12,'node1_committed_during');
+INSERT INTO t1 VALUES (13,'node1_committed_during');
+INSERT INTO t1 VALUES (14,'node1_committed_during');
+INSERT INTO t1 VALUES (15,'node1_committed_during');
+COMMIT;
+START TRANSACTION;
+INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+connect node_1a_galera_st_kill_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+connection node_2;
+Performing --wsrep-recover ...
+Starting server ...
+Using --wsrep-start-position when starting mysqld ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (26,'node2_committed_after');
+INSERT INTO t1 VALUES (27,'node2_committed_after');
+INSERT INTO t1 VALUES (28,'node2_committed_after');
+INSERT INTO t1 VALUES (29,'node2_committed_after');
+INSERT INTO t1 VALUES (30,'node2_committed_after');
+COMMIT;
+connection node_1;
+INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+COMMIT;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (36,'node1_committed_after');
+INSERT INTO t1 VALUES (37,'node1_committed_after');
+INSERT INTO t1 VALUES (38,'node1_committed_after');
+INSERT INTO t1 VALUES (39,'node1_committed_after');
+INSERT INTO t1 VALUES (40,'node1_committed_after');
+COMMIT;
+connection node_1a_galera_st_kill_slave;
+INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (46,'node1_to_be_rollbacked_after');
+ROLLBACK;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
+EXPECT_35
+35
+SELECT * FROM t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+COMMIT;
+connection node_1;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
+EXPECT_35
+35
+SELECT * FROM t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+DROP TABLE t1;
+COMMIT;
+disconnect node_2;
+disconnect node_1;
diff --git a/mysql-test/suite/galera/r/galera_sst_rsync_recv_auto,debug.rdiff b/mysql-test/suite/galera/r/galera_sst_rsync_recv_auto,debug.rdiff
new file mode 100644
index 00000000000..5bc47c58303
--- /dev/null
+++ b/mysql-test/suite/galera/r/galera_sst_rsync_recv_auto,debug.rdiff
@@ -0,0 +1,188 @@
+@@ -516,3 +516,187 @@
+ 1
+ DROP TABLE t1;
+ COMMIT;
++Performing State Transfer on a server that has been killed and restarted
++while a DDL was in progress on it
++connection node_1;
++CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
++SET AUTOCOMMIT=OFF;
++START TRANSACTION;
++INSERT INTO t1 VALUES (1,'node1_committed_before');
++INSERT INTO t1 VALUES (2,'node1_committed_before');
++INSERT INTO t1 VALUES (3,'node1_committed_before');
++INSERT INTO t1 VALUES (4,'node1_committed_before');
++INSERT INTO t1 VALUES (5,'node1_committed_before');
++connection node_2;
++START TRANSACTION;
++INSERT INTO t1 VALUES (6,'node2_committed_before');
++INSERT INTO t1 VALUES (7,'node2_committed_before');
++INSERT INTO t1 VALUES (8,'node2_committed_before');
++INSERT INTO t1 VALUES (9,'node2_committed_before');
++INSERT INTO t1 VALUES (10,'node2_committed_before');
++COMMIT;
++SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
++connection node_1;
++ALTER TABLE t1 ADD COLUMN f2 INTEGER;
++connection node_2;
++SET wsrep_sync_wait = 0;
++Killing server ...
++connection node_1;
++SET AUTOCOMMIT=OFF;
++START TRANSACTION;
++INSERT INTO t1 (id,f1) VALUES (11,'node1_committed_during');
++INSERT INTO t1 (id,f1) VALUES (12,'node1_committed_during');
++INSERT INTO t1 (id,f1) VALUES (13,'node1_committed_during');
++INSERT INTO t1 (id,f1) VALUES (14,'node1_committed_during');
++INSERT INTO t1 (id,f1) VALUES (15,'node1_committed_during');
++COMMIT;
++START TRANSACTION;
++INSERT INTO t1 (id,f1) VALUES (16,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (17,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (18,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (19,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (20,'node1_to_be_committed_after');
++connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1;
++SET AUTOCOMMIT=OFF;
++START TRANSACTION;
++INSERT INTO t1 (id,f1) VALUES (21,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (22,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (23,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (24,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (25,'node1_to_be_rollbacked_after');
++connection node_2;
++Performing --wsrep-recover ...
++connection node_2;
++Starting server ...
++Using --wsrep-start-position when starting mysqld ...
++SET AUTOCOMMIT=OFF;
++START TRANSACTION;
++INSERT INTO t1 (id,f1) VALUES (26,'node2_committed_after');
++INSERT INTO t1 (id,f1) VALUES (27,'node2_committed_after');
++INSERT INTO t1 (id,f1) VALUES (28,'node2_committed_after');
++INSERT INTO t1 (id,f1) VALUES (29,'node2_committed_after');
++INSERT INTO t1 (id,f1) VALUES (30,'node2_committed_after');
++COMMIT;
++connection node_1;
++INSERT INTO t1 (id,f1) VALUES (31,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (32,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (33,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (34,'node1_to_be_committed_after');
++INSERT INTO t1 (id,f1) VALUES (35,'node1_to_be_committed_after');
++COMMIT;
++SET AUTOCOMMIT=OFF;
++START TRANSACTION;
++INSERT INTO t1 (id,f1) VALUES (36,'node1_committed_after');
++INSERT INTO t1 (id,f1) VALUES (37,'node1_committed_after');
++INSERT INTO t1 (id,f1) VALUES (38,'node1_committed_after');
++INSERT INTO t1 (id,f1) VALUES (39,'node1_committed_after');
++INSERT INTO t1 (id,f1) VALUES (40,'node1_committed_after');
++COMMIT;
++connection node_1a_galera_st_kill_slave_ddl;
++INSERT INTO t1 (id,f1) VALUES (41,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (42,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (43,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (44,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (id,f1) VALUES (45,'node1_to_be_rollbacked_after');
++ROLLBACK;
++SET AUTOCOMMIT=ON;
++SET SESSION wsrep_sync_wait=15;
++SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
++EXPECT_3
++3
++SELECT COUNT(*) AS EXPECT_35 FROM t1;
++EXPECT_35
++35
++SELECT * FROM t1;
++id f1 f2
++1 node1_committed_before NULL
++2 node1_committed_before NULL
++3 node1_committed_before NULL
++4 node1_committed_before NULL
++5 node1_committed_before NULL
++6 node2_committed_before NULL
++7 node2_committed_before NULL
++8 node2_committed_before NULL
++9 node2_committed_before NULL
++10 node2_committed_before NULL
++11 node1_committed_during NULL
++12 node1_committed_during NULL
++13 node1_committed_during NULL
++14 node1_committed_during NULL
++15 node1_committed_during NULL
++16 node1_to_be_committed_after NULL
++17 node1_to_be_committed_after NULL
++18 node1_to_be_committed_after NULL
++19 node1_to_be_committed_after NULL
++20 node1_to_be_committed_after NULL
++26 node2_committed_after NULL
++27 node2_committed_after NULL
++28 node2_committed_after NULL
++29 node2_committed_after NULL
++30 node2_committed_after NULL
++31 node1_to_be_committed_after NULL
++32 node1_to_be_committed_after NULL
++33 node1_to_be_committed_after NULL
++34 node1_to_be_committed_after NULL
++35 node1_to_be_committed_after NULL
++36 node1_committed_after NULL
++37 node1_committed_after NULL
++38 node1_committed_after NULL
++39 node1_committed_after NULL
++40 node1_committed_after NULL
++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
++COUNT(*) = 0
++1
++COMMIT;
++connection node_1;
++SET AUTOCOMMIT=ON;
++SET SESSION wsrep_sync_wait=15;
++SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
++EXPECT_3
++3
++SELECT COUNT(*) AS EXPECT_35 FROM t1;
++EXPECT_35
++35
++SELECT * FROM t1;
++id f1 f2
++1 node1_committed_before NULL
++2 node1_committed_before NULL
++3 node1_committed_before NULL
++4 node1_committed_before NULL
++5 node1_committed_before NULL
++6 node2_committed_before NULL
++7 node2_committed_before NULL
++8 node2_committed_before NULL
++9 node2_committed_before NULL
++10 node2_committed_before NULL
++11 node1_committed_during NULL
++12 node1_committed_during NULL
++13 node1_committed_during NULL
++14 node1_committed_during NULL
++15 node1_committed_during NULL
++16 node1_to_be_committed_after NULL
++17 node1_to_be_committed_after NULL
++18 node1_to_be_committed_after NULL
++19 node1_to_be_committed_after NULL
++20 node1_to_be_committed_after NULL
++26 node2_committed_after NULL
++27 node2_committed_after NULL
++28 node2_committed_after NULL
++29 node2_committed_after NULL
++30 node2_committed_after NULL
++31 node1_to_be_committed_after NULL
++32 node1_to_be_committed_after NULL
++33 node1_to_be_committed_after NULL
++34 node1_to_be_committed_after NULL
++35 node1_to_be_committed_after NULL
++36 node1_committed_after NULL
++37 node1_committed_after NULL
++38 node1_committed_after NULL
++39 node1_committed_after NULL
++40 node1_committed_after NULL
++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
++COUNT(*) = 0
++1
++DROP TABLE t1;
++COMMIT;
++SET GLOBAL debug_dbug = $debug_orig;
diff --git a/mysql-test/suite/galera/r/galera_sst_rsync_recv_auto.result b/mysql-test/suite/galera/r/galera_sst_rsync_recv_auto.result
new file mode 100644
index 00000000000..8b531bc6a3f
--- /dev/null
+++ b/mysql-test/suite/galera/r/galera_sst_rsync_recv_auto.result
@@ -0,0 +1,518 @@
+connection node_2;
+connection node_1;
+connection node_1;
+connection node_2;
+Performing State Transfer on a server that has been shut down cleanly and restarted
+connection node_1;
+CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (1,'node1_committed_before');
+INSERT INTO t1 VALUES (2,'node1_committed_before');
+INSERT INTO t1 VALUES (3,'node1_committed_before');
+INSERT INTO t1 VALUES (4,'node1_committed_before');
+INSERT INTO t1 VALUES (5,'node1_committed_before');
+COMMIT;
+connection node_2;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (6,'node2_committed_before');
+INSERT INTO t1 VALUES (7,'node2_committed_before');
+INSERT INTO t1 VALUES (8,'node2_committed_before');
+INSERT INTO t1 VALUES (9,'node2_committed_before');
+INSERT INTO t1 VALUES (10,'node2_committed_before');
+COMMIT;
+Shutting down server ...
+connection node_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (11,'node1_committed_during');
+INSERT INTO t1 VALUES (12,'node1_committed_during');
+INSERT INTO t1 VALUES (13,'node1_committed_during');
+INSERT INTO t1 VALUES (14,'node1_committed_during');
+INSERT INTO t1 VALUES (15,'node1_committed_during');
+COMMIT;
+START TRANSACTION;
+INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+connect node_1a_galera_st_shutdown_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+connection node_2;
+Starting server ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (26,'node2_committed_after');
+INSERT INTO t1 VALUES (27,'node2_committed_after');
+INSERT INTO t1 VALUES (28,'node2_committed_after');
+INSERT INTO t1 VALUES (29,'node2_committed_after');
+INSERT INTO t1 VALUES (30,'node2_committed_after');
+COMMIT;
+connection node_1;
+INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+COMMIT;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (36,'node1_committed_after');
+INSERT INTO t1 VALUES (37,'node1_committed_after');
+INSERT INTO t1 VALUES (38,'node1_committed_after');
+INSERT INTO t1 VALUES (39,'node1_committed_after');
+INSERT INTO t1 VALUES (40,'node1_committed_after');
+COMMIT;
+connection node_1a_galera_st_shutdown_slave;
+INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
+ROLLBACK;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_15 FROM t1;
+EXPECT_15
+35
+SELECT * from t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+COMMIT;
+connection node_1;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_15 FROM t1;
+EXPECT_15
+35
+SELECT * from t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+DROP TABLE t1;
+COMMIT;
+Performing State Transfer on a server that starts from a clean var directory
+This is accomplished by shutting down node #2 and removing its var directory before restarting it
+connection node_1;
+CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (1,'node1_committed_before');
+INSERT INTO t1 VALUES (2,'node1_committed_before');
+INSERT INTO t1 VALUES (3,'node1_committed_before');
+INSERT INTO t1 VALUES (4,'node1_committed_before');
+INSERT INTO t1 VALUES (5,'node1_committed_before');
+COMMIT;
+connection node_2;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (6,'node2_committed_before');
+INSERT INTO t1 VALUES (7,'node2_committed_before');
+INSERT INTO t1 VALUES (8,'node2_committed_before');
+INSERT INTO t1 VALUES (9,'node2_committed_before');
+INSERT INTO t1 VALUES (10,'node2_committed_before');
+COMMIT;
+Shutting down server ...
+connection node_1;
+Cleaning var directory ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (11,'node1_committed_during');
+INSERT INTO t1 VALUES (12,'node1_committed_during');
+INSERT INTO t1 VALUES (13,'node1_committed_during');
+INSERT INTO t1 VALUES (14,'node1_committed_during');
+INSERT INTO t1 VALUES (15,'node1_committed_during');
+COMMIT;
+START TRANSACTION;
+INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+connect node_1a_galera_st_clean_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+connection node_2;
+Starting server ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (26,'node2_committed_after');
+INSERT INTO t1 VALUES (27,'node2_committed_after');
+INSERT INTO t1 VALUES (28,'node2_committed_after');
+INSERT INTO t1 VALUES (29,'node2_committed_after');
+INSERT INTO t1 VALUES (30,'node2_committed_after');
+COMMIT;
+connection node_1;
+INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+COMMIT;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (36,'node1_committed_after');
+INSERT INTO t1 VALUES (37,'node1_committed_after');
+INSERT INTO t1 VALUES (38,'node1_committed_after');
+INSERT INTO t1 VALUES (39,'node1_committed_after');
+INSERT INTO t1 VALUES (40,'node1_committed_after');
+COMMIT;
+connection node_1a_galera_st_clean_slave;
+INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
+ROLLBACK;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
+EXPECT_35
+35
+SELECT * from t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+COMMIT;
+connection node_1;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
+EXPECT_35
+35
+SELECT * from t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+DROP TABLE t1;
+COMMIT;
+Performing State Transfer on a server that has been killed and restarted
+connection node_1;
+CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (1,'node1_committed_before');
+INSERT INTO t1 VALUES (2,'node1_committed_before');
+INSERT INTO t1 VALUES (3,'node1_committed_before');
+INSERT INTO t1 VALUES (4,'node1_committed_before');
+INSERT INTO t1 VALUES (5,'node1_committed_before');
+COMMIT;
+connection node_2;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (6,'node2_committed_before');
+INSERT INTO t1 VALUES (7,'node2_committed_before');
+INSERT INTO t1 VALUES (8,'node2_committed_before');
+INSERT INTO t1 VALUES (9,'node2_committed_before');
+INSERT INTO t1 VALUES (10,'node2_committed_before');
+COMMIT;
+Killing server ...
+connection node_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (11,'node1_committed_during');
+INSERT INTO t1 VALUES (12,'node1_committed_during');
+INSERT INTO t1 VALUES (13,'node1_committed_during');
+INSERT INTO t1 VALUES (14,'node1_committed_during');
+INSERT INTO t1 VALUES (15,'node1_committed_during');
+COMMIT;
+START TRANSACTION;
+INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+connect node_1a_galera_st_kill_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+connection node_2;
+Performing --wsrep-recover ...
+Starting server ...
+Using --wsrep-start-position when starting mysqld ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (26,'node2_committed_after');
+INSERT INTO t1 VALUES (27,'node2_committed_after');
+INSERT INTO t1 VALUES (28,'node2_committed_after');
+INSERT INTO t1 VALUES (29,'node2_committed_after');
+INSERT INTO t1 VALUES (30,'node2_committed_after');
+COMMIT;
+connection node_1;
+INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+COMMIT;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
+INSERT INTO t1 VALUES (36,'node1_committed_after');
+INSERT INTO t1 VALUES (37,'node1_committed_after');
+INSERT INTO t1 VALUES (38,'node1_committed_after');
+INSERT INTO t1 VALUES (39,'node1_committed_after');
+INSERT INTO t1 VALUES (40,'node1_committed_after');
+COMMIT;
+connection node_1a_galera_st_kill_slave;
+INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES (46,'node1_to_be_rollbacked_after');
+ROLLBACK;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
+EXPECT_35
+35
+SELECT * FROM t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+COMMIT;
+connection node_1;
+SET AUTOCOMMIT=ON;
+SET SESSION wsrep_sync_wait=15;
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
+EXPECT_35
+35
+SELECT * FROM t1;
+id f1
+1 node1_committed_before
+2 node1_committed_before
+3 node1_committed_before
+4 node1_committed_before
+5 node1_committed_before
+6 node2_committed_before
+7 node2_committed_before
+8 node2_committed_before
+9 node2_committed_before
+10 node2_committed_before
+11 node1_committed_during
+12 node1_committed_during
+13 node1_committed_during
+14 node1_committed_during
+15 node1_committed_during
+16 node1_to_be_committed_after
+17 node1_to_be_committed_after
+18 node1_to_be_committed_after
+19 node1_to_be_committed_after
+20 node1_to_be_committed_after
+26 node2_committed_after
+27 node2_committed_after
+28 node2_committed_after
+29 node2_committed_after
+30 node2_committed_after
+31 node1_to_be_committed_after
+32 node1_to_be_committed_after
+33 node1_to_be_committed_after
+34 node1_to_be_committed_after
+35 node1_to_be_committed_after
+36 node1_committed_after
+37 node1_committed_after
+38 node1_committed_after
+39 node1_committed_after
+40 node1_committed_after
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+DROP TABLE t1;
+COMMIT;
diff --git a/mysql-test/suite/galera/r/galera_var_cluster_address.result b/mysql-test/suite/galera/r/galera_var_cluster_address.result
index 8c1070e43ce..9cfe5a8f765 100644
--- a/mysql-test/suite/galera/r/galera_var_cluster_address.result
+++ b/mysql-test/suite/galera/r/galera_var_cluster_address.result
@@ -48,7 +48,7 @@ CALL mtr.add_suppression("failed to open gcomm backend connection: 110: failed t
CALL mtr.add_suppression("Failed to open backend connection: -110 \\(Connection timed out\\)");
CALL mtr.add_suppression("gcs connect failed: Connection timed out");
CALL mtr.add_suppression("WSREP: wsrep::connect\\(foo://\\) failed: 7");
-CALL mtr.add_suppression("WSREP: wsrep::connect\\(gcomm://192.0.2.1\\) failed: 7");
+CALL mtr.add_suppression("WSREP: wsrep::connect\\(gcomm://.*\\) failed: 7");
disconnect node_2;
disconnect node_1;
# End of test
diff --git a/mysql-test/suite/galera/r/mariadb_tzinfo_to_sql.result b/mysql-test/suite/galera/r/mariadb_tzinfo_to_sql.result
new file mode 100644
index 00000000000..d47cec0992f
--- /dev/null
+++ b/mysql-test/suite/galera/r/mariadb_tzinfo_to_sql.result
@@ -0,0 +1,271 @@
+connection node_2;
+connection node_1;
+#
+# MDEV-28263: mariadb-tzinfo-to-sql improve wsrep and binlog cases
+#
+
+# On node_1
+connection node_1;
+CREATE TABLE time_zone LIKE mysql.time_zone;
+CREATE TABLE time_zone_name LIKE mysql.time_zone_name;
+CREATE TABLE time_zone_transition LIKE mysql.time_zone_transition;
+CREATE TABLE time_zone_transition_type LIKE mysql.time_zone_transition_type;
+CREATE TABLE time_zone_leap_second LIKE mysql.time_zone_leap_second;
+ALTER TABLE time_zone_name ENGINE=MyISAM;
+Warnings:
+Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'
+ALTER TABLE time_zone_transition_type ENGINE=MyISAM;
+Warnings:
+Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'
+SET @save_wsrep_mode=@@WSREP_MODE;
+#
+# Run on zoneinfo directory --skip-write-binlog
+#
+
+# Apply on node_1
+
+Warnings:
+Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'
+'binlog stationary as expected'
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@WSREP_ON, @@SQL_LOG_BIN;
+@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@WSREP_ON @@SQL_LOG_BIN
+1 0 1 1 1 1
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+FROM information_schema.global_status g
+JOIN baseline b USING (VARIABLE_NAME)
+ORDER BY g.VARIABLE_NAME;
+VARIABLE_NAME diff
+COM_ALTER_TABLE 2
+COM_BEGIN 0
+COM_INSERT 6
+COM_LOCK_TABLES 1
+COM_TRUNCATE 4
+SELECT COUNT(*) FROM time_zone;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_name;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_transition;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_transition_type;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_leap_second;
+COUNT(*)
+0
+
+# On node_2 (not replicated)
+
+connection node_2;
+SELECT COUNT(*) FROM time_zone;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_name;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_transition;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_transition_type;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_leap_second;
+COUNT(*)
+0
+
+# Apply on node_1
+
+connection node_1;
+SET GLOBAL WSREP_MODE='REPLICATE_ARIA,REPLICATE_MYISAM';
+Warnings:
+Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'
+'binlog stationary as expected'
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@WSREP_ON, @@SQL_LOG_BIN;
+@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@WSREP_ON @@SQL_LOG_BIN
+1 0 1 1 1 1
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+FROM information_schema.global_status g
+JOIN baseline b USING (VARIABLE_NAME)
+ORDER BY g.VARIABLE_NAME;
+VARIABLE_NAME diff
+COM_ALTER_TABLE 2
+COM_BEGIN 0
+COM_INSERT 6
+COM_LOCK_TABLES 1
+COM_TRUNCATE 4
+SELECT COUNT(*) FROM time_zone;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_name;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_transition;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_transition_type;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_leap_second;
+COUNT(*)
+0
+
+# On node_2 (not replicated)
+
+connection node_2;
+SELECT COUNT(*) FROM time_zone;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_name;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_transition;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_transition_type;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_leap_second;
+COUNT(*)
+0
+#
+# Run on zoneinfo directory without --skip-write-binlog
+#
+
+# Apply on node_1
+
+connection node_1;
+Warnings:
+Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'
+'binlog advanced as expected'
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@WSREP_ON, @@SQL_LOG_BIN;
+@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@WSREP_ON @@SQL_LOG_BIN
+1 0 1 1 1 1
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+FROM information_schema.global_status g
+JOIN baseline b USING (VARIABLE_NAME)
+ORDER BY g.VARIABLE_NAME;
+VARIABLE_NAME diff
+COM_ALTER_TABLE 2
+COM_BEGIN 0
+COM_INSERT 6
+COM_LOCK_TABLES 1
+COM_TRUNCATE 4
+SELECT COUNT(*) FROM time_zone;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_name;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_transition;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_transition_type;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_leap_second;
+COUNT(*)
+0
+
+# On node_2 (replicated via ARIA)
+
+connection node_2;
+SELECT COUNT(*) FROM time_zone;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_name;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_transition;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_transition_type;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_leap_second;
+COUNT(*)
+0
+TRUNCATE TABLE time_zone;
+TRUNCATE TABLE time_zone_name;
+TRUNCATE TABLE time_zone_transition;
+TRUNCATE TABLE time_zone_transition_type;
+TRUNCATE TABLE time_zone_leap_second;
+
+# Apply on node_1
+
+connection node_1;
+SET GLOBAL WSREP_MODE='';
+Warnings:
+Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'
+Warnings:
+Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'
+'binlog advanced as expected'
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@WSREP_ON, @@SQL_LOG_BIN;
+@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@WSREP_ON @@SQL_LOG_BIN
+1 1 1 1 1 1
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+FROM information_schema.global_status g
+JOIN baseline b USING (VARIABLE_NAME)
+ORDER BY g.VARIABLE_NAME;
+VARIABLE_NAME diff
+COM_ALTER_TABLE 8
+COM_BEGIN 1
+COM_INSERT 6
+COM_LOCK_TABLES 0
+COM_TRUNCATE 4
+SELECT COUNT(*) FROM time_zone;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_name;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_transition;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_transition_type;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_leap_second;
+COUNT(*)
+0
+SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES
+WHERE
+TABLE_SCHEMA = DATABASE()
+AND TABLE_NAME LIKE 'time_zone%' ORDER BY TABLE_NAME;
+TABLE_NAME ENGINE
+time_zone Aria
+time_zone_leap_second Aria
+time_zone_name MyISAM
+time_zone_transition Aria
+time_zone_transition_type MyISAM
+
+# On node_2 (replicated via InnoDB)
+
+connection node_2;
+SELECT COUNT(*) FROM time_zone;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_name;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_transition;
+COUNT(*)
+0
+SELECT COUNT(*) FROM time_zone_transition_type;
+COUNT(*)
+2
+SELECT COUNT(*) FROM time_zone_leap_second;
+COUNT(*)
+0
+connection node_1;
+SET GLOBAL WSREP_MODE=@save_wsrep_mode;
+DROP TABLE baseline;
+DROP TABLE time_zone;
+DROP TABLE time_zone_name;
+DROP TABLE time_zone_transition;
+DROP TABLE time_zone_transition_type;
+DROP TABLE time_zone_leap_second;
+#
+# End of 10.6 tests
+#
diff --git a/mysql-test/suite/galera/t/MDEV-26575.test b/mysql-test/suite/galera/t/MDEV-26575.test
new file mode 100644
index 00000000000..e714f9fc430
--- /dev/null
+++ b/mysql-test/suite/galera/t/MDEV-26575.test
@@ -0,0 +1,19 @@
+#
+# MDEV-26575 Server crashes when execute shutdown statement after
+# starting an XA transaction
+#
+
+--source include/galera_cluster.inc
+
+# Save original auto_increment_offset values.
+--let $node_1=node_1
+--let $node_2=node_2
+--source include/auto_increment_offset_save.inc
+
+--connection node_2
+SET SESSION wsrep_on = OFF;
+--error ER_NOT_SUPPORTED_YET
+XA START 'xatest';
+--source include/restart_mysqld.inc
+
+--source include/auto_increment_offset_restore.inc
diff --git a/mysql-test/suite/galera/t/galera_as_slave_autoinc.test b/mysql-test/suite/galera/t/galera_as_slave_autoinc.test
index e0c8bf29682..ce4c87e2bee 100644
--- a/mysql-test/suite/galera/t/galera_as_slave_autoinc.test
+++ b/mysql-test/suite/galera/t/galera_as_slave_autoinc.test
@@ -68,9 +68,11 @@ select * from t1;
show variables like 'binlog_format';
show variables like 'auto_increment_increment';
+CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format");
--connection node_3
DROP TABLE t1;
+CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format");
--connection node_2
--let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
diff --git a/mysql-test/suite/galera/t/galera_bf_abort_ps_bind.test b/mysql-test/suite/galera/t/galera_bf_abort_ps_bind.test
index 072a68fc79d..dcfcb052d49 100644
--- a/mysql-test/suite/galera/t/galera_bf_abort_ps_bind.test
+++ b/mysql-test/suite/galera/t/galera_bf_abort_ps_bind.test
@@ -1,5 +1,6 @@
--source include/galera_cluster.inc
--source include/have_innodb.inc
+--source include/no_protocol.inc
CREATE TABLE t (i int primary key auto_increment, j varchar(20) character set utf8);
diff --git a/mysql-test/suite/galera/t/galera_sst_encrypted.cnf b/mysql-test/suite/galera/t/galera_sst_encrypted.cnf
new file mode 100644
index 00000000000..e10c3e9f215
--- /dev/null
+++ b/mysql-test/suite/galera/t/galera_sst_encrypted.cnf
@@ -0,0 +1,17 @@
+!include ../galera_2nodes.cnf
+
+[mysqld]
+plugin-load-add=@ENV.FILE_KEY_MANAGEMENT_SO
+loose-file-key-management
+loose-file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys.txt
+loose-file-key-management-encryption-algorithm=aes_cbc
+wsrep-debug=1
+innodb_encryption_threads = 4
+innodb_file_per_table=1
+wsrep_sst_method=rsync
+
+[mysqld.1]
+wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true'
+
+[mysqld.2]
+wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=1;pc.ignore_sb=true'
diff --git a/mysql-test/suite/galera/t/galera_sst_encrypted.test b/mysql-test/suite/galera/t/galera_sst_encrypted.test
new file mode 100644
index 00000000000..0ad05a34178
--- /dev/null
+++ b/mysql-test/suite/galera/t/galera_sst_encrypted.test
@@ -0,0 +1,16 @@
+--source include/big_test.inc
+--source include/galera_cluster.inc
+--source ../encryption/include/have_file_key_management_plugin.inc
+
+# Save original auto_increment_offset values.
+--let $node_1=node_1
+--let $node_2=node_2
+--source include/auto_increment_offset_save.inc
+
+--source suite/galera/include/galera_st_shutdown_slave.inc
+--source suite/galera/include/galera_st_clean_slave.inc
+
+# Restore original auto_increment_offset values.
+--source include/auto_increment_offset_restore.inc
+
+--source include/galera_end.inc
diff --git a/mysql-test/suite/galera/t/galera_sst_mariabackup_logarchive.cnf b/mysql-test/suite/galera/t/galera_sst_mariabackup_logarchive.cnf
new file mode 100644
index 00000000000..04043ac2b74
--- /dev/null
+++ b/mysql-test/suite/galera/t/galera_sst_mariabackup_logarchive.cnf
@@ -0,0 +1,17 @@
+!include ../galera_2nodes.cnf
+
+[mysqld]
+wsrep_sst_method=mariabackup
+wsrep_sst_auth="root:"
+wsrep_debug=1
+
+[mysqld.1]
+wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true'
+
+[mysqld.2]
+wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=1;pc.ignore_sb=true'
+
+[sst]
+transferfmt=@ENV.MTR_GALERA_TFMT
+sst-log-archive=1
+sst-log-archive-dir=@ENV.MYSQLTEST_VARDIR/tmp/logarchive
diff --git a/mysql-test/suite/galera/t/galera_sst_mariabackup_logarchive.test b/mysql-test/suite/galera/t/galera_sst_mariabackup_logarchive.test
new file mode 100644
index 00000000000..09a18ab4c2c
--- /dev/null
+++ b/mysql-test/suite/galera/t/galera_sst_mariabackup_logarchive.test
@@ -0,0 +1,64 @@
+--source include/big_test.inc
+--source include/galera_cluster.inc
+--source include/have_innodb.inc
+--source include/have_mariabackup.inc
+
+# Save original auto_increment_offset values.
+--let $node_1=node_1
+--let $node_2=node_2
+--source include/auto_increment_offset_save.inc
+
+--connection node_2
+
+--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
+--source include/wait_condition.inc
+
+--let $wait_condition = SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment';
+--source include/wait_condition.inc
+
+--connection node_1
+
+--let $wait_condition = SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment';
+--source include/wait_condition.inc
+
+--remove_files_wildcard $MYSQLTEST_VARDIR/tmp/logarchive *
+
+--source suite/galera/include/galera_st_shutdown_slave.inc
+--source suite/galera/include/galera_st_clean_slave.inc
+
+--source suite/galera/include/galera_st_kill_slave.inc
+--source suite/galera/include/galera_st_kill_slave_ddl.inc
+
+# Restore original auto_increment_offset values.
+--source include/auto_increment_offset_restore.inc
+
+--let sst_test_true_count=6
+--source include/maybe_debug.inc
+if ($have_debug) {
+ --let sst_test_true_count=6
+}
+
+--source include/galera_end.inc
+
+--list_files_write_file $MYSQLTEST_VARDIR/tmp/logarchive_list $MYSQLTEST_VARDIR/tmp/logarchive mariabackup.*.log.*.gz
+
+--perl
+ use strict;
+ use warnings;
+ my $file=$ENV{'MYSQLTEST_VARDIR'}.'/tmp/logarchive_list';
+ my $count=0;
+ open(FILE, "$file") or die("Error $? opening $file: $!\n");
+ while (<FILE>) {
+ my $line = $_;
+ $count++;
+ }
+ close(FILE) or die("Error $? closing $file: $!");
+ my $true_count=$ENV{'sst_test_true_count'};
+ if ($count != $true_count) {
+ die("Wrong log archives counter: $count instead of $true_count");
+ }
+EOF
+
+--remove_file $MYSQLTEST_VARDIR/tmp/logarchive_list
+--remove_files_wildcard $MYSQLTEST_VARDIR/tmp/logarchive *
+--rmdir $MYSQLTEST_VARDIR/tmp/logarchive
diff --git a/mysql-test/suite/galera/t/galera_sst_rsync_recv_auto.cnf b/mysql-test/suite/galera/t/galera_sst_rsync_recv_auto.cnf
new file mode 100644
index 00000000000..c2888926a57
--- /dev/null
+++ b/mysql-test/suite/galera/t/galera_sst_rsync_recv_auto.cnf
@@ -0,0 +1,18 @@
+!include ../galera_2nodes.cnf
+
+[mysqld]
+wsrep_sst_method=rsync
+bind-address=::
+
+[mysqld.1]
+wsrep_provider_options='base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port;gcache.size=1;pc.ignore_sb=true'
+wsrep_node_incoming_address='[::1]:@mysqld.1.port'
+wsrep_node_address=::1
+wsrep_sst_receive_address='[::1]:@mysqld.1.#sst_port'
+
+[mysqld.2]
+wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port'
+wsrep_provider_options='base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port;gcache.size=1;pc.ignore_sb=true'
+wsrep_node_address=::1
+wsrep_node_incoming_address='[::1]:@mysqld.2.port'
+wsrep_sst_receive_address=AUTO
diff --git a/mysql-test/suite/galera/t/galera_sst_rsync_recv_auto.test b/mysql-test/suite/galera/t/galera_sst_rsync_recv_auto.test
new file mode 100644
index 00000000000..6cc533ce739
--- /dev/null
+++ b/mysql-test/suite/galera/t/galera_sst_rsync_recv_auto.test
@@ -0,0 +1,15 @@
+--source include/big_test.inc
+--source include/galera_cluster.inc
+--source include/check_ipv6.inc
+
+--let $node_1=node_1
+--let $node_2=node_2
+--source include/auto_increment_offset_save.inc
+
+--source suite/galera/include/galera_st_shutdown_slave.inc
+--source suite/galera/include/galera_st_clean_slave.inc
+
+--source suite/galera/include/galera_st_kill_slave.inc
+--source suite/galera/include/galera_st_kill_slave_ddl.inc
+
+--source include/auto_increment_offset_restore.inc
diff --git a/mysql-test/suite/galera/t/galera_var_cluster_address.test b/mysql-test/suite/galera/t/galera_var_cluster_address.test
index 85ae73ffda4..e25de0aeb21 100644
--- a/mysql-test/suite/galera/t/galera_var_cluster_address.test
+++ b/mysql-test/suite/galera/t/galera_var_cluster_address.test
@@ -67,7 +67,7 @@ CALL mtr.add_suppression("failed to open gcomm backend connection: 110: failed t
CALL mtr.add_suppression("Failed to open backend connection: -110 \\(Connection timed out\\)");
CALL mtr.add_suppression("gcs connect failed: Connection timed out");
CALL mtr.add_suppression("WSREP: wsrep::connect\\(foo://\\) failed: 7");
-CALL mtr.add_suppression("WSREP: wsrep::connect\\(gcomm://192.0.2.1\\) failed: 7");
+CALL mtr.add_suppression("WSREP: wsrep::connect\\(gcomm://.*\\) failed: 7");
# Restore original auto_increment_offset values.
--source include/auto_increment_offset_restore.inc
diff --git a/mysql-test/suite/galera/t/mariadb_tzinfo_to_sql.opt b/mysql-test/suite/galera/t/mariadb_tzinfo_to_sql.opt
new file mode 100644
index 00000000000..beae84b3862
--- /dev/null
+++ b/mysql-test/suite/galera/t/mariadb_tzinfo_to_sql.opt
@@ -0,0 +1 @@
+--log-bin
diff --git a/mysql-test/suite/galera/t/mariadb_tzinfo_to_sql.test b/mysql-test/suite/galera/t/mariadb_tzinfo_to_sql.test
new file mode 100644
index 00000000000..eb5febb127a
--- /dev/null
+++ b/mysql-test/suite/galera/t/mariadb_tzinfo_to_sql.test
@@ -0,0 +1,235 @@
+--source include/galera_cluster.inc
+--source include/have_innodb.inc
+--source include/no_protocol.inc
+
+--echo #
+--echo # MDEV-28263: mariadb-tzinfo-to-sql improve wsrep and binlog cases
+--echo #
+
+--exec mkdir $MYSQLTEST_VARDIR/zoneinfo
+--exec ln -s $MYSQLTEST_VARDIR/zoneinfo $MYSQLTEST_VARDIR/zoneinfo/posix
+--copy_file std_data/zoneinfo/GMT $MYSQLTEST_VARDIR/zoneinfo/GMT
+
+--echo
+--echo # On node_1
+--connection node_1
+
+CREATE TABLE time_zone LIKE mysql.time_zone;
+CREATE TABLE time_zone_name LIKE mysql.time_zone_name;
+CREATE TABLE time_zone_transition LIKE mysql.time_zone_transition;
+CREATE TABLE time_zone_transition_type LIKE mysql.time_zone_transition_type;
+CREATE TABLE time_zone_leap_second LIKE mysql.time_zone_leap_second;
+ALTER TABLE time_zone_name ENGINE=MyISAM;
+ALTER TABLE time_zone_transition_type ENGINE=MyISAM;
+
+SET @save_wsrep_mode=@@WSREP_MODE;
+
+--echo #
+--echo # Run on zoneinfo directory --skip-write-binlog
+--echo #
+
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--exec $MYSQL_TZINFO_TO_SQL --skip-write-binlog $MYSQLTEST_VARDIR/zoneinfo 2>/dev/null > $MYSQL_TMP_DIR/tz.sql
+
+--echo
+--echo # Apply on node_1
+--echo
+--let $snap_pos= query_get_value(SHOW STATUS LIKE 'binlog_snapshot_position', Value, 1)
+--disable_query_log
+CREATE TEMPORARY TABLE baseline AS
+ SELECT VARIABLE_NAME,VARIABLE_VALUE
+ FROM information_schema.global_status
+ WHERE VARIABLE_NAME IN ('COM_BEGIN', 'COM_INSERT', 'COM_LOCK_TABLES', 'COM_ALTER_TABLE', 'COM_TRUNCATE');
+--source $MYSQL_TMP_DIR/tz.sql
+--enable_query_log
+--let $new_snap_pos= query_get_value(SHOW STATUS LIKE 'binlog_snapshot_position', Value, 1)
+
+if ($snap_pos == $new_snap_pos)
+{
+--echo 'binlog stationary as expected'
+}
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@WSREP_ON, @@SQL_LOG_BIN;
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+ FROM information_schema.global_status g
+ JOIN baseline b USING (VARIABLE_NAME)
+ ORDER BY g.VARIABLE_NAME;
+
+SELECT COUNT(*) FROM time_zone;
+SELECT COUNT(*) FROM time_zone_name;
+SELECT COUNT(*) FROM time_zone_transition;
+SELECT COUNT(*) FROM time_zone_transition_type;
+SELECT COUNT(*) FROM time_zone_leap_second;
+
+--echo
+--echo # On node_2 (not replicated)
+--echo
+--connection node_2
+
+SELECT COUNT(*) FROM time_zone;
+SELECT COUNT(*) FROM time_zone_name;
+SELECT COUNT(*) FROM time_zone_transition;
+SELECT COUNT(*) FROM time_zone_transition_type;
+SELECT COUNT(*) FROM time_zone_leap_second;
+
+--echo
+--echo # Apply on node_1
+--echo
+--connection node_1
+
+SET GLOBAL WSREP_MODE='REPLICATE_ARIA,REPLICATE_MYISAM';
+--disable_query_log
+CREATE OR REPLACE TEMPORARY TABLE baseline AS
+ SELECT VARIABLE_NAME,VARIABLE_VALUE
+ FROM information_schema.global_status
+ WHERE VARIABLE_NAME IN ('COM_BEGIN', 'COM_INSERT', 'COM_LOCK_TABLES', 'COM_ALTER_TABLE', 'COM_TRUNCATE');
+--source $MYSQL_TMP_DIR/tz.sql
+--enable_query_log
+--let $new_snap_pos= query_get_value(SHOW STATUS LIKE 'binlog_snapshot_position', Value, 1)
+
+if ($snap_pos == $new_snap_pos)
+{
+--echo 'binlog stationary as expected'
+}
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@WSREP_ON, @@SQL_LOG_BIN;
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+ FROM information_schema.global_status g
+ JOIN baseline b USING (VARIABLE_NAME)
+ ORDER BY g.VARIABLE_NAME;
+
+SELECT COUNT(*) FROM time_zone;
+SELECT COUNT(*) FROM time_zone_name;
+SELECT COUNT(*) FROM time_zone_transition;
+SELECT COUNT(*) FROM time_zone_transition_type;
+SELECT COUNT(*) FROM time_zone_leap_second;
+
+--echo
+--echo # On node_2 (not replicated)
+--echo
+--connection node_2
+
+SELECT COUNT(*) FROM time_zone;
+SELECT COUNT(*) FROM time_zone_name;
+SELECT COUNT(*) FROM time_zone_transition;
+SELECT COUNT(*) FROM time_zone_transition_type;
+SELECT COUNT(*) FROM time_zone_leap_second;
+
+--echo #
+--echo # Run on zoneinfo directory without --skip-write-binlog
+--echo #
+
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo 2>/dev/null > $MYSQL_TMP_DIR/tz.sql
+
+--echo
+--echo # Apply on node_1
+--echo
+--connection node_1
+
+--disable_query_log
+CREATE OR REPLACE TEMPORARY TABLE baseline AS
+ SELECT VARIABLE_NAME,VARIABLE_VALUE
+ FROM information_schema.global_status
+ WHERE VARIABLE_NAME IN ('COM_BEGIN', 'COM_INSERT', 'COM_LOCK_TABLES', 'COM_ALTER_TABLE', 'COM_TRUNCATE');
+--source $MYSQL_TMP_DIR/tz.sql
+--enable_query_log
+--let $new_snap_pos= query_get_value(SHOW STATUS LIKE 'binlog_snapshot_position', Value, 1)
+
+if ($snap_pos < $new_snap_pos)
+{
+--echo 'binlog advanced as expected'
+}
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@WSREP_ON, @@SQL_LOG_BIN;
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+ FROM information_schema.global_status g
+ JOIN baseline b USING (VARIABLE_NAME)
+ ORDER BY g.VARIABLE_NAME;
+
+SELECT COUNT(*) FROM time_zone;
+SELECT COUNT(*) FROM time_zone_name;
+SELECT COUNT(*) FROM time_zone_transition;
+SELECT COUNT(*) FROM time_zone_transition_type;
+SELECT COUNT(*) FROM time_zone_leap_second;
+
+--echo
+--echo # On node_2 (replicated via ARIA)
+--echo
+--connection node_2
+
+SELECT COUNT(*) FROM time_zone;
+SELECT COUNT(*) FROM time_zone_name;
+SELECT COUNT(*) FROM time_zone_transition;
+SELECT COUNT(*) FROM time_zone_transition_type;
+SELECT COUNT(*) FROM time_zone_leap_second;
+
+TRUNCATE TABLE time_zone;
+TRUNCATE TABLE time_zone_name;
+TRUNCATE TABLE time_zone_transition;
+TRUNCATE TABLE time_zone_transition_type;
+TRUNCATE TABLE time_zone_leap_second;
+
+--echo
+--echo # Apply on node_1
+--echo
+--connection node_1
+
+SET GLOBAL WSREP_MODE='';
+--let $snap_pos= query_get_value(SHOW STATUS LIKE 'binlog_snapshot_position', Value, 1)
+--disable_query_log
+CREATE OR REPLACE TEMPORARY TABLE baseline AS
+ SELECT VARIABLE_NAME,VARIABLE_VALUE
+ FROM information_schema.global_status
+ WHERE VARIABLE_NAME IN ('COM_BEGIN', 'COM_INSERT', 'COM_LOCK_TABLES', 'COM_ALTER_TABLE', 'COM_TRUNCATE');
+--source $MYSQL_TMP_DIR/tz.sql
+--enable_query_log
+--let $new_snap_pos= query_get_value(SHOW STATUS LIKE 'binlog_snapshot_position', Value, 1)
+
+if ($snap_pos < $new_snap_pos)
+{
+--echo 'binlog advanced as expected'
+}
+SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@WSREP_ON, @@SQL_LOG_BIN;
+SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
+ FROM information_schema.global_status g
+ JOIN baseline b USING (VARIABLE_NAME)
+ ORDER BY g.VARIABLE_NAME;
+
+SELECT COUNT(*) FROM time_zone;
+SELECT COUNT(*) FROM time_zone_name;
+SELECT COUNT(*) FROM time_zone_transition;
+SELECT COUNT(*) FROM time_zone_transition_type;
+SELECT COUNT(*) FROM time_zone_leap_second;
+
+SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES
+WHERE
+ TABLE_SCHEMA = DATABASE()
+ AND TABLE_NAME LIKE 'time_zone%' ORDER BY TABLE_NAME;
+
+--echo
+--echo # On node_2 (replicated via InnoDB)
+--echo
+--connection node_2
+
+SELECT COUNT(*) FROM time_zone;
+SELECT COUNT(*) FROM time_zone_name;
+SELECT COUNT(*) FROM time_zone_transition;
+SELECT COUNT(*) FROM time_zone_transition_type;
+SELECT COUNT(*) FROM time_zone_leap_second;
+
+#
+# Cleanup
+#
+
+--connection node_1
+--remove_file $MYSQL_TMP_DIR/tz.sql
+--exec rm -rf $MYSQLTEST_VARDIR/zoneinfo
+SET GLOBAL WSREP_MODE=@save_wsrep_mode;
+DROP TABLE baseline;
+DROP TABLE time_zone;
+DROP TABLE time_zone_name;
+DROP TABLE time_zone_transition;
+DROP TABLE time_zone_transition_type;
+DROP TABLE time_zone_leap_second;
+
+--echo #
+--echo # End of 10.6 tests
+--echo #
diff --git a/mysql-test/suite/galera_3nodes/galera_2x3nodes.cnf b/mysql-test/suite/galera_3nodes/galera_2x3nodes.cnf
index 3a3c43781d5..9f99adbd711 100644
--- a/mysql-test/suite/galera_3nodes/galera_2x3nodes.cnf
+++ b/mysql-test/suite/galera_3nodes/galera_2x3nodes.cnf
@@ -2,7 +2,8 @@
!include include/default_mysqld.cnf
[mysqld]
-log-bin
+loose-innodb
+log-bin=mysqld-bin
log-slave-updates
binlog-format=row
innodb-autoinc-lock-mode=2
@@ -12,83 +13,73 @@ gtid_ignore_duplicates
auto_increment_increment=3
wsrep-provider=@ENV.WSREP_PROVIDER
-wsrep_node_address=127.0.0.1
# enforce read-committed characteristics across the cluster
+# wsrep-causal-reads=ON
wsrep-sync-wait=15
[mysqld.1]
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
-wsrep-cluster-address='gcomm://'
-wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT30S;evs.inactive_timeout=PT90S;evs.install_timeout=PT60S;pc.wait_prim_timeout = PT60S'
-
-wsrep_sst_receive_address=127.0.0.2:@mysqld.1.#sst_port
+wsrep_cluster_address=gcomm://
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.1.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port'
[mysqld.2]
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
-wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT30S;evs.inactive_timeout=PT90S;evs.install_timeout=PT60S;pc.wait_prim_timeout = PT60S'
-
-wsrep_sst_receive_address=127.0.0.2:@mysqld.2.#sst_port
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.2.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port'
[mysqld.3]
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
-wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT30S;evs.inactive_timeout=PT90S;evs.install_timeout=PT60S;pc.wait_prim_timeout = PT60S'
-
-wsrep_sst_receive_address=127.0.0.2:@mysqld.3.#sst_port
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.3.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.3.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.3.#sst_port'
-
[mysqld.4]
-wsrep_cluster_name=cluster2
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
-wsrep-cluster-address='gcomm://'
-wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.4.#galera_port;evs.suspect_timeout=PT30S;evs.inactive_timeout=PT90S;evs.install_timeout=PT60S;pc.wait_prim_timeout = PT60S'
-
-wsrep_sst_receive_address=127.0.0.2:@mysqld.4.#sst_port
+wsrep_cluster_address='gcomm://
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.4.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.4.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.4.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.4.#sst_port'
[mysqld.5]
-wsrep_cluster_name=cluster2
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.4.#galera_port'
-wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.5.#galera_port;evs.suspect_timeout=PT30S;evs.inactive_timeout=PT90S;evs.install_timeout=PT60S;pc.wait_prim_timeout = PT60S'
-
-wsrep_sst_receive_address=127.0.0.2:@mysqld.5.#sst_port
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.5.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.5.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.5.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.5.#sst_port'
[mysqld.6]
-wsrep_cluster_name=cluster2
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.4.#galera_port'
-wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.6.#galera_port;evs.suspect_timeout=PT30S;evs.inactive_timeout=PT90S;evs.install_timeout=PT60S;pc.wait_prim_timeout = PT60S'
-
-wsrep_sst_receive_address=127.0.0.2:@mysqld.6.#sst_port
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.6.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.6.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.6.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.6.#sst_port'
diff --git a/mysql-test/suite/galera_3nodes/galera_3nodes.cnf b/mysql-test/suite/galera_3nodes/galera_3nodes.cnf
index d33ed0caddf..a7dd4d21bc7 100644
--- a/mysql-test/suite/galera_3nodes/galera_3nodes.cnf
+++ b/mysql-test/suite/galera_3nodes/galera_3nodes.cnf
@@ -2,51 +2,47 @@
!include include/default_mysqld.cnf
[mysqld]
+loose-innodb
binlog-format=row
innodb-autoinc-lock-mode=2
default-storage-engine=innodb
auto_increment_increment=3
wsrep-provider=@ENV.WSREP_PROVIDER
-wsrep_node_address=127.0.0.1
# enforce read-committed characteristics across the cluster
-wsrep-causal-reads=ON
+# wsrep-causal-reads=ON
wsrep-sync-wait=15
[mysqld.1]
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-#wsrep-new-cluster
-wsrep-on=1
-wsrep-cluster-address='gcomm://'
-wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S'
-
-wsrep_sst_receive_address=127.0.0.2:@mysqld.1.#sst_port
+wsrep_cluster_address=gcomm://
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.1.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port'
[mysqld.2]
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
-wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S'
-
-wsrep_sst_receive_address=127.0.0.2:@mysqld.2.#sst_port
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.2.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port'
[mysqld.3]
+wsrep-on=1
#galera_port=@OPT.port
#ist_port=@OPT.port
#sst_port=@OPT.port
-wsrep-on=1
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
-wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S'
-
-wsrep_sst_receive_address=127.0.0.2:@mysqld.3.#sst_port
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;gcache.size=10M'
+wsrep_node_address='127.0.0.1:@mysqld.3.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.3.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.3.#sst_port'
diff --git a/mysql-test/suite/galera_3nodes/r/galera_garbd_backup.result b/mysql-test/suite/galera_3nodes/r/galera_garbd_backup.result
index f176ef1dd7f..4a5e9a4530c 100644
--- a/mysql-test/suite/galera_3nodes/r/galera_garbd_backup.result
+++ b/mysql-test/suite/galera_3nodes/r/galera_garbd_backup.result
@@ -1,3 +1,5 @@
+connection node_2;
+connection node_1;
connection node_1;
connection node_1;
connection node_2;
@@ -31,8 +33,6 @@ DROP TABLE ten;
Restarting node #3 to satisfy MTR's end-of-test checks
connection node_3;
connection node_1;
-SET GLOBAL innodb_max_dirty_pages_pct = 75.000000;
-SET GLOBAL innodb_max_dirty_pages_pct_lwm = 0.000000;
connection node_1;
CALL mtr.add_suppression("WSREP: Protocol violation\. JOIN message sender 1\.0 \(.*\) is not in state transfer \(SYNCED\)");
connection node_2;
diff --git a/mysql-test/suite/galera_3nodes/t/galera_garbd_backup.test b/mysql-test/suite/galera_3nodes/t/galera_garbd_backup.test
index 302bf430dde..f5eaf6fc59a 100644
--- a/mysql-test/suite/galera_3nodes/t/galera_garbd_backup.test
+++ b/mysql-test/suite/galera_3nodes/t/galera_garbd_backup.test
@@ -119,8 +119,10 @@ let $restart_noprint=2;
--source include/start_mysqld.inc
--connection node_1
+--disable_query_log
--eval SET GLOBAL innodb_max_dirty_pages_pct = $innodb_max_dirty_pages_pct
--eval SET GLOBAL innodb_max_dirty_pages_pct_lwm = $innodb_max_dirty_pages_pct_lwm
+--enable_query_log
--source ../galera/include/auto_increment_offset_restore.inc
diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.cnf b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.cnf
index 3b0f0173b35..415a8f33257 100644
--- a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.cnf
+++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.cnf
@@ -3,33 +3,33 @@
[mysqld]
wsrep_sst_method=mariabackup
wsrep_sst_auth="root:"
-wsrep_node_address=::1
+bind-address=::
[mysqld.1]
wsrep-cluster-address=gcomm://
wsrep_provider_options='base_host=[::1];base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.1.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.1.port'
wsrep_node_name=node_1
-bind-address=::
[mysqld.2]
wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port'
wsrep_provider_options='base_host=[::1];base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.2.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.2.port'
wsrep_node_name=node_2
wsrep_sst_donor=node_1
-bind-address=::
[mysqld.3]
wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port'
wsrep_provider_options='base_host=[::1];base_port=@mysqld.3.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.3.#galera_port;ist.recv_addr=[::1]:@mysqld.3.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.3.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.3.port'
wsrep_node_name=node_3
wsrep_sst_donor=node_1
-bind-address=::
[SST]
transferfmt=@ENV.MTR_GALERA_TFMT
diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup_section.cnf b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup_section.cnf
index a3ab9a85707..21f229ffcce 100644
--- a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup_section.cnf
+++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup_section.cnf
@@ -7,33 +7,33 @@ bind-address=::
innodb-data-home-dir=
wsrep_sst_method=mariabackup
wsrep_sst_auth="root:"
-wsrep_node_address=::1
+bind-address=::
[mysqld.1]
wsrep-cluster-address=gcomm://
wsrep_provider_options='base_host=[::1];base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.1.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.1.port'
wsrep_node_name=node_1
-bind-address=::
[mysqld.2]
wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port'
wsrep_provider_options='base_host=[::1];base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.2.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.2.port'
wsrep_node_name=node_2
wsrep_sst_donor=node_1
-bind-address=::
[mysqld.3]
wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port'
wsrep_provider_options='base_host=[::1];base_port=@mysqld.3.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.3.#galera_port;ist.recv_addr=[::1]:@mysqld.3.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.3.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.3.port'
wsrep_node_name=node_3
wsrep_sst_donor=node_1
-bind-address=::
[SST]
transferfmt=@ENV.MTR_GALERA_TFMT
diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.cnf b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.cnf
index c163f798335..afdfacfa3a5 100644
--- a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.cnf
+++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.cnf
@@ -2,25 +2,25 @@
[mysqld]
wsrep_sst_method=rsync
-wsrep_node_address=::1
+bind-address=::
[mysqld.1]
wsrep-cluster-address=gcomm://
wsrep_provider_options='base_host=[::1];base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.1.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.1.port'
-bind-address=::
[mysqld.2]
wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port'
wsrep_provider_options='base_host=[::1];base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.2.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.2.port'
-bind-address=::
[mysqld.3]
wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port'
wsrep_provider_options='base_host=[::1];base_port=@mysqld.3.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.3.#galera_port;ist.recv_addr=[::1]:@mysqld.3.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.3.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.3.port'
-bind-address=::
diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.cnf b/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.cnf
index c163f798335..afdfacfa3a5 100644
--- a/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.cnf
+++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.cnf
@@ -2,25 +2,25 @@
[mysqld]
wsrep_sst_method=rsync
-wsrep_node_address=::1
+bind-address=::
[mysqld.1]
wsrep-cluster-address=gcomm://
wsrep_provider_options='base_host=[::1];base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.1.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.1.port'
-bind-address=::
[mysqld.2]
wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port'
wsrep_provider_options='base_host=[::1];base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.2.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.2.port'
-bind-address=::
[mysqld.3]
wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port'
wsrep_provider_options='base_host=[::1];base_port=@mysqld.3.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.3.#galera_port;ist.recv_addr=[::1]:@mysqld.3.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.3.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.3.port'
-bind-address=::
diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync_section.cnf b/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync_section.cnf
index ee92efeff1d..c34144d9a69 100644
--- a/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync_section.cnf
+++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync_section.cnf
@@ -7,25 +7,25 @@ innodb-data-home-dir=/tmp
[mysqld]
innodb-data-home-dir=
wsrep_sst_method=rsync
-wsrep_node_address=::1
+bind-address=::
[mysqld.1]
wsrep-cluster-address=gcomm://
wsrep_provider_options='base_host=[::1];base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.1.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.1.port'
-bind-address=::
[mysqld.2]
wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port'
wsrep_provider_options='base_host=[::1];base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.2.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.2.port'
-bind-address=::
[mysqld.3]
wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port'
wsrep_provider_options='base_host=[::1];base_port=@mysqld.3.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.3.#galera_port;ist.recv_addr=[::1]:@mysqld.3.#ist_port'
wsrep_sst_receive_address='[::1]:@mysqld.3.#sst_port'
+wsrep_node_address=::1
wsrep_node_incoming_address='[::1]:@mysqld.3.port'
-bind-address=::
diff --git a/mysql-test/suite/gcol/r/innodb_virtual_debug.result b/mysql-test/suite/gcol/r/innodb_virtual_debug.result
index 806cf1a98c8..80b2bde6ca5 100644
--- a/mysql-test/suite/gcol/r/innodb_virtual_debug.result
+++ b/mysql-test/suite/gcol/r/innodb_virtual_debug.result
@@ -105,7 +105,7 @@ SET lock_wait_timeout = 1;
ALTER TABLE t1 ADD UNIQUE INDEX(c, b);
connection default;
SET DEBUG_SYNC = 'now WAIT_FOR s1';
-SET DEBUG_SYNC = 'row_ins_sec_index_enter SIGNAL s2 WAIT_FOR s3';
+SET DEBUG_SYNC = 'row_log_insert_handle SIGNAL s2 WAIT_FOR s3';
INSERT INTO t1(a, b) VALUES(2, 2);
connection con1;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
diff --git a/mysql-test/suite/gcol/r/innodb_virtual_fk.result b/mysql-test/suite/gcol/r/innodb_virtual_fk.result
index de61c16f739..8e6ec857602 100644
--- a/mysql-test/suite/gcol/r/innodb_virtual_fk.result
+++ b/mysql-test/suite/gcol/r/innodb_virtual_fk.result
@@ -705,7 +705,7 @@ ALTER TABLE t1 ADD CONSTRAINT fk FOREIGN KEY (v4) REFERENCES nosuch(col);
ERROR HY000: Can't create table `test`.`t1` (errno: 150 "Foreign key constraint is incorrectly formed")
SET foreign_key_checks=0;
ALTER TABLE t1 ADD CONSTRAINT fk FOREIGN KEY (v4) REFERENCES nosuch(col);
-ERROR HY000: Failed to add the foreign key constaint. Missing index for constraint 'fk' in the foreign table 't1'
+ERROR HY000: Failed to add the foreign key constraint. Missing index for constraint 'fk' in the foreign table 't1'
ALTER TABLE t1 ADD INDEX(v4);
ALTER TABLE t1 ADD CONSTRAINT fk FOREIGN KEY (v4) REFERENCES nosuch(col);
SET foreign_key_checks=1;
diff --git a/mysql-test/suite/gcol/t/innodb_virtual_debug.test b/mysql-test/suite/gcol/t/innodb_virtual_debug.test
index 40446b991cd..5ebc90dac19 100644
--- a/mysql-test/suite/gcol/t/innodb_virtual_debug.test
+++ b/mysql-test/suite/gcol/t/innodb_virtual_debug.test
@@ -295,7 +295,7 @@ SET lock_wait_timeout = 1;
connection default;
SET DEBUG_SYNC = 'now WAIT_FOR s1';
-SET DEBUG_SYNC = 'row_ins_sec_index_enter SIGNAL s2 WAIT_FOR s3';
+SET DEBUG_SYNC = 'row_log_insert_handle SIGNAL s2 WAIT_FOR s3';
--send INSERT INTO t1(a, b) VALUES(2, 2)
connection con1;
diff --git a/mysql-test/suite/innodb/include/have_innodb_bzip2.inc b/mysql-test/suite/innodb/include/have_innodb_bzip2.inc
deleted file mode 100644
index afbe78f0cf9..00000000000
--- a/mysql-test/suite/innodb/include/have_innodb_bzip2.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-if (! `SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_have_bzip2' AND variable_value = 'ON'`)
-{
- --skip Test requires InnoDB compiled with libbz2
-}
diff --git a/mysql-test/suite/innodb/include/have_innodb_lz4.inc b/mysql-test/suite/innodb/include/have_innodb_lz4.inc
deleted file mode 100644
index bda3ffa8623..00000000000
--- a/mysql-test/suite/innodb/include/have_innodb_lz4.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-if (!`SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_have_lz4' AND variable_value = 'ON'`)
-{
- --skip Test requires InnoDB compiled with liblz4
-}
diff --git a/mysql-test/suite/innodb/include/have_innodb_lzma.inc b/mysql-test/suite/innodb/include/have_innodb_lzma.inc
deleted file mode 100644
index 86eda33f194..00000000000
--- a/mysql-test/suite/innodb/include/have_innodb_lzma.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-if (!`SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_have_lzma' AND variable_value = 'ON' `)
-{
- --skip Test requires InnoDB compiled with liblzma
-}
diff --git a/mysql-test/suite/innodb/include/have_innodb_lzo.inc b/mysql-test/suite/innodb/include/have_innodb_lzo.inc
deleted file mode 100644
index f40418b00fb..00000000000
--- a/mysql-test/suite/innodb/include/have_innodb_lzo.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-if (! `SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_have_lzo' AND variable_value = 'ON'`)
-{
- --skip Test requires InnoDB compiled with liblzo
-}
diff --git a/mysql-test/suite/innodb/include/have_innodb_snappy.inc b/mysql-test/suite/innodb/include/have_innodb_snappy.inc
deleted file mode 100644
index c4dca4c19ee..00000000000
--- a/mysql-test/suite/innodb/include/have_innodb_snappy.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-if (! `SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_have_snappy' AND variable_value = 'ON'`)
-{
- --skip Test requires InnoDB compiled with libsnappy
-}
diff --git a/mysql-test/suite/innodb/include/innodb-page-compression.inc b/mysql-test/suite/innodb/include/innodb-page-compression.inc
deleted file mode 100644
index b16edcf2a28..00000000000
--- a/mysql-test/suite/innodb/include/innodb-page-compression.inc
+++ /dev/null
@@ -1,132 +0,0 @@
-# This test is slow on buildbot.
---source include/big_test.inc
---disable_query_log
-# This may be triggered on a slow system or one that lacks native AIO.
-call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
---enable_query_log
-create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
-create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
-create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
-create table innodb_page_compressed3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
-create table innodb_page_compressed4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
-create table innodb_page_compressed5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
-create table innodb_page_compressed6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
-create table innodb_page_compressed7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
-create table innodb_page_compressed8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
-create table innodb_page_compressed9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
-
---disable_query_log
-begin;
-let $i = 2000;
-while ($i)
-{
- insert into innodb_normal(b) values(REPEAT('Aa',50));
- insert into innodb_normal(b) values(REPEAT('a',100));
- insert into innodb_normal(b) values(REPEAT('b',100));
- insert into innodb_normal(b) values(REPEAT('0',100));
- insert into innodb_normal(b) values(REPEAT('1',100));
- dec $i;
-}
-
-insert into innodb_page_compressed1 select * from innodb_normal;
-insert into innodb_page_compressed2 select * from innodb_normal;
-insert into innodb_page_compressed3 select * from innodb_normal;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-insert into innodb_page_compressed7 select * from innodb_normal;
-insert into innodb_page_compressed8 select * from innodb_normal;
-insert into innodb_page_compressed9 select * from innodb_normal;
-commit;
---enable_query_log
-
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed3;
-select count(*) from innodb_page_compressed4;
-select count(*) from innodb_page_compressed5;
-select count(*) from innodb_page_compressed6;
-select count(*) from innodb_page_compressed6;
-select count(*) from innodb_page_compressed7;
-select count(*) from innodb_page_compressed8;
-select count(*) from innodb_page_compressed9;
-
-#
-# Wait until pages are really compressed
-#
-let $wait_condition= select variable_value > 0 from information_schema.global_status where variable_name = 'INNODB_NUM_PAGES_PAGE_COMPRESSED';
---source include/wait_condition.inc
-
---let $MYSQLD_DATADIR=`select @@datadir`
-
-# shutdown before grep
-
---source include/shutdown_mysqld.inc
-
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_normal.ibd
---let SEARCH_RANGE = 10000000
---let SEARCH_PATTERN=AaAaAaAa
---echo # innodb_normal expected FOUND
--- let SEARCH_FILE=$t1_IBD
--- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed1.ibd
---echo # innodb_page_compressed1 page compressed expected NOT FOUND
--- let SEARCH_FILE=$t1_IBD
--- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed2.ibd
---echo # innodb_page_compressed2 page compressed expected NOT FOUND
--- let SEARCH_FILE=$t1_IBD
--- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed3.ibd
---echo # innodb_page_compressed3 page compressed expected NOT FOUND
--- let SEARCH_FILE=$t1_IBD
--- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed4.ibd
---echo # innodb_page_compressed4 page compressed expected NOT FOUND
--- let SEARCH_FILE=$t1_IBD
--- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed5.ibd
---echo # innodb_page_compressed5 page compressed expected NOT FOUND
--- let SEARCH_FILE=$t1_IBD
--- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed6.ibd
---echo # innodb_page_compressed6 page compressed expected NOT FOUND
--- let SEARCH_FILE=$t1_IBD
--- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed7.ibd
---echo # innodb_page_compressed7 page compressed expected NOT FOUND
--- let SEARCH_FILE=$t1_IBD
--- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed8.ibd
---echo # innodb_page_compressed8 page compressed expected NOT FOUND
--- let SEARCH_FILE=$t1_IBD
--- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed9.ibd
---echo # innodb_page_compressed9 page compressed expected NOT FOUND
--- let SEARCH_FILE=$t1_IBD
--- source include/search_pattern_in_file.inc
-
--- source include/start_mysqld.inc
-
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed3;
-select count(*) from innodb_page_compressed4;
-select count(*) from innodb_page_compressed5;
-select count(*) from innodb_page_compressed6;
-select count(*) from innodb_page_compressed6;
-select count(*) from innodb_page_compressed7;
-select count(*) from innodb_page_compressed8;
-select count(*) from innodb_page_compressed9;
-
-let $wait_condition= select variable_value > 0 from information_schema.global_status where variable_name = 'INNODB_NUM_PAGES_PAGE_DECOMPRESSED';
---source include/wait_condition.inc
-
-drop table innodb_normal;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
diff --git a/mysql-test/suite/innodb/r/alter_candidate_key.result b/mysql-test/suite/innodb/r/alter_candidate_key.result
index 79cb225e3b5..2ada5a499a8 100644
--- a/mysql-test/suite/innodb/r/alter_candidate_key.result
+++ b/mysql-test/suite/innodb/r/alter_candidate_key.result
@@ -74,7 +74,7 @@ connection con1;
SET DEBUG_SYNC='now WAIT_FOR dml';
BEGIN;
INSERT INTO t1 SET a=NULL;
-ROLLBACK;
+COMMIT;
set DEBUG_SYNC='now SIGNAL dml_done';
connection default;
ERROR 22004: Invalid use of NULL value
diff --git a/mysql-test/suite/innodb/r/alter_crash.result b/mysql-test/suite/innodb/r/alter_crash.result
index 46ea85d3e1e..a98aeb70a15 100644
--- a/mysql-test/suite/innodb/r/alter_crash.result
+++ b/mysql-test/suite/innodb/r/alter_crash.result
@@ -169,9 +169,6 @@ INSERT INTO t1(f1, f2) VALUES(2, "This is column2 value");
ROLLBACK;
set DEBUG_SYNC = 'now SIGNAL insert_done';
connection default;
-Warnings:
-Warning 1265 Data truncated for column 'f3' at row 3
-Warning 1265 Data truncated for column 'f4' at row 3
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -202,6 +199,7 @@ connection default;
SET DEBUG_SYNC = 'now WAIT_FOR scanned';
BEGIN;
INSERT INTO t1 VALUES(2,1);
+COMMIT;
SET DEBUG_SYNC = 'now SIGNAL commit';
SET DEBUG_SYNC = 'now WAIT_FOR c';
SET GLOBAL innodb_fil_make_page_dirty_debug=0;
@@ -221,4 +219,5 @@ t1 CREATE TABLE `t1` (
SELECT * FROM t1;
a b
1 1
+2 1
DROP TABLE t1;
diff --git a/mysql-test/suite/innodb/r/alter_crash_rebuild.result b/mysql-test/suite/innodb/r/alter_crash_rebuild.result
index b4d4e8ba85a..ab4c25c6f57 100644
--- a/mysql-test/suite/innodb/r/alter_crash_rebuild.result
+++ b/mysql-test/suite/innodb/r/alter_crash_rebuild.result
@@ -1,11 +1,9 @@
CREATE TABLE t1 (a INT NOT NULL) ENGINE=InnoDB STATS_PERSISTENT=0;
connect ddl,localhost,root;
-SET DEBUG_SYNC='after_trx_committed_in_memory SIGNAL stuck WAIT_FOR ever EXECUTE 2';
+SET DEBUG_SYNC='after_trx_committed_in_memory SIGNAL stuck WAIT_FOR ever';
ALTER TABLE t1 ADD PRIMARY KEY(a);
connection default;
SET DEBUG_SYNC='now WAIT_FOR stuck';
-SET DEBUG_SYNC='now SIGNAL ever';
-SET DEBUG_SYNC='now WAIT_FOR stuck';
SET GLOBAL innodb_log_checkpoint_now=ON;
# restart
disconnect ddl;
diff --git a/mysql-test/suite/innodb/r/alter_dml_apply.result b/mysql-test/suite/innodb/r/alter_dml_apply.result
new file mode 100644
index 00000000000..c9def9d6a41
--- /dev/null
+++ b/mysql-test/suite/innodb/r/alter_dml_apply.result
@@ -0,0 +1,39 @@
+CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
+f3 CHAR(200), f4 CHAR(200),
+PRIMARY KEY(f1))ENGINE=InnoDB;
+INSERT INTO t1 VALUES(6000, 6000, "InnoDB", "MariaDB");
+SET DEBUG_SYNC="inplace_after_index_build SIGNAL dml_start WAIT_FOR dml_commit";
+ALTER TABLE t1 ADD UNIQUE KEY(f2), ADD UNIQUE INDEX(f4(10));
+connect con1,localhost,root,,,;
+SET DEBUG_SYNC="now WAIT_FOR dml_start";
+BEGIN;
+DELETE FROM t1 WHERE f1= 6000;
+INSERT INTO t1 VALUES(6000, 6000, "InnoDB", "MariaDB");
+ROLLBACK;
+BEGIN;
+DELETE FROM t1 WHERE f1= 6000;
+INSERT INTO t1 VALUES(6000, 6000, "InnoDB", "MariaDB");
+INSERT INTO t1 SELECT seq, seq, repeat('a', 200), repeat('b', 200) FROM seq_1_to_4000;
+COMMIT;
+SET DEBUG_SYNC="now SIGNAL dml_commit";
+connection default;
+ERROR 23000: Duplicate entry '' for key '*UNKNOWN*'
+SET DEBUG_SYNC="inplace_after_index_build SIGNAL dml_start WAIT_FOR dml_commit";
+ALTER TABLE t1 ADD UNIQUE KEY(f2), ADD INDEX(f3(10));
+connection con1;
+SET DEBUG_SYNC="now WAIT_FOR dml_start";
+BEGIN;
+DELETE FROM t1;
+INSERT INTO t1 SELECT seq, seq, repeat('d', 200), repeat('e', 200) FROM
+seq_1_to_4000;
+UPDATE t1 SET f3=repeat('c', 200), f4= repeat('d', 200), f2=3;
+COMMIT;
+SET DEBUG_SYNC="now SIGNAL dml_commit";
+connection default;
+ERROR 23000: Duplicate entry '' for key '*UNKNOWN*'
+disconnect con1;
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+DROP TABLE t1;
+SET DEBUG_SYNC=reset;
diff --git a/mysql-test/suite/innodb/r/alter_mdl_timeout.result b/mysql-test/suite/innodb/r/alter_mdl_timeout.result
index 7af1362c69e..e4fba8e260f 100644
--- a/mysql-test/suite/innodb/r/alter_mdl_timeout.result
+++ b/mysql-test/suite/innodb/r/alter_mdl_timeout.result
@@ -10,7 +10,7 @@ begin;
INSERT INTO t1 VALUES('e','e',5, 5);
SET DEBUG_SYNC="now SIGNAL con1_insert";
SET DEBUG_SYNC="now WAIT_FOR con1_wait";
-SET DEBUG_SYNC="before_row_upd_sec_new_index_entry SIGNAL con1_update WAIT_FOR alter_rollback";
+SET DEBUG_SYNC="after_row_upd_clust SIGNAL con1_update WAIT_FOR alter_rollback";
UPDATE t1 set f4 = 10 order by f1 desc limit 2;
connection default;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
diff --git a/mysql-test/suite/innodb/r/alter_not_null_debug,STRICT.rdiff b/mysql-test/suite/innodb/r/alter_not_null_debug,STRICT.rdiff
index 09c717c44b0..81466d791ac 100644
--- a/mysql-test/suite/innodb/r/alter_not_null_debug,STRICT.rdiff
+++ b/mysql-test/suite/innodb/r/alter_not_null_debug,STRICT.rdiff
@@ -1,11 +1,16 @@
-18,21c18
-< affected rows: 0
-< info: Records: 0 Duplicates: 0 Warnings: 1
-< Warnings:
-< Warning 1265 Data truncated for column 'c2' at row 3
----
-> ERROR 01000: Data truncated for column 'c2' at row 3
-24c21
-< 2 0
----
-> 2 NULL
+@@ -15,13 +15,10 @@
+ SET DEBUG_SYNC= 'now SIGNAL flushed';
+ affected rows: 0
+ connection default;
+-affected rows: 0
+-info: Records: 0 Duplicates: 0 Warnings: 1
+-Warnings:
+-Warning 1265 Data truncated for column 'c2' at row 3
++ERROR 22004: Invalid use of NULL value
+ SELECT * FROM t1;
+ c1 c2
+-2 0
++2 NULL
+ 3 1
+ DROP TABLE t1;
+ CREATE TABLE t1(c1 INT NOT NULL, c2 INT, PRIMARY KEY(c1))ENGINE=INNODB;
diff --git a/mysql-test/suite/innodb/r/foreign_key.result b/mysql-test/suite/innodb/r/foreign_key.result
index 737db83103c..da784ba2acf 100644
--- a/mysql-test/suite/innodb/r/foreign_key.result
+++ b/mysql-test/suite/innodb/r/foreign_key.result
@@ -960,11 +960,30 @@ ALTER TABLE parent FORCE, ALGORITHM=INPLACE;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
ALTER TABLE parent ADD COLUMN b INT, ALGORITHM=INSTANT;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
-disconnect con1;
+connection con1;
+COMMIT;
+connection default;
SET innodb_lock_wait_timeout=DEFAULT;
TRUNCATE TABLE parent;
ALTER TABLE parent FORCE, ALGORITHM=COPY;
ALTER TABLE parent FORCE, ALGORITHM=INPLACE;
ALTER TABLE parent ADD COLUMN b INT, ALGORITHM=INSTANT;
DROP TABLE child, parent;
+#
+# MDEV-26217 Failing assertion: list.count > 0 in ut_list_remove
+# or Assertion `lock->trx == this' failed in dberr_t trx_t::drop_table
+#
+CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1);
+CREATE TABLE t2 (pk INT PRIMARY KEY, FOREIGN KEY(pk) REFERENCES t1(pk))
+ENGINE=InnoDB;
+connection con1;
+SET FOREIGN_KEY_CHECKS=OFF;
+CREATE OR REPLACE TABLE t1 (b INT) ENGINE=InnoDB;
+connection default;
+INSERT INTO t2 VALUES (1);
+connection con1;
+disconnect con1;
+connection default;
+DROP TABLE IF EXISTS t2, t1;
# End of 10.6 tests
diff --git a/mysql-test/suite/innodb/r/innodb-alter-debug.result b/mysql-test/suite/innodb/r/innodb-alter-debug.result
index 81fc67e55c7..aae9432fc35 100644
--- a/mysql-test/suite/innodb/r/innodb-alter-debug.result
+++ b/mysql-test/suite/innodb/r/innodb-alter-debug.result
@@ -43,9 +43,8 @@ SET DEBUG_SYNC = 'now SIGNAL s2';
/* connection default */
connection default;
/* reap */ alter table t1 force, add b int, ALGORITHM=inplace;
-ERROR 23000: Duplicate entry '1' for key 'uk'
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL s1 WAIT_FOR s2';
-alter table t1 force, add b int, ALGORITHM=inplace;;
+alter table t1 force, add c int, ALGORITHM=inplace;;
/* connection con1 */
connection con1;
set DEBUG_SYNC = 'now WAIT_FOR s1';
@@ -55,7 +54,6 @@ SET DEBUG_SYNC = 'now SIGNAL s2';
/* connection default */
connection default;
/* reap */ alter table t1 force, add b int, ALGORITHM=inplace;
-ERROR 23000: Duplicate entry '1' for key 'uk'
SET DEBUG_SYNC = 'RESET';
drop table t1;
#
@@ -72,7 +70,6 @@ ERROR 23000: Duplicate entry '1' for key 'a'
SET DEBUG_SYNC = 'now SIGNAL S2';
disconnect con1;
connection default;
-ERROR 23000: Duplicate entry '1' for key 'a'
SET DEBUG_SYNC='RESET';
DROP TABLE t1;
#
diff --git a/mysql-test/suite/innodb/r/innodb-index-debug.result b/mysql-test/suite/innodb/r/innodb-index-debug.result
index f6b23eea41a..c36a0531b95 100644
--- a/mysql-test/suite/innodb/r/innodb-index-debug.result
+++ b/mysql-test/suite/innodb/r/innodb-index-debug.result
@@ -118,20 +118,21 @@ drop table t480;
# MDEV-12827 Assertion failure when reporting duplicate key error
# in online table rebuild
#
-CREATE TABLE t1 (j INT UNIQUE, i INT UNIQUE) ENGINE=InnoDB;
+CREATE TABLE t1 (j INT UNIQUE, i INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES(2, 2);
connect con1,localhost,root,,test;
SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL built WAIT_FOR log';
-ALTER TABLE t1 DROP j, FORCE;
+ALTER TABLE t1 DROP j, ADD UNIQUE INDEX(i), FORCE;
connection default;
SET DEBUG_SYNC='now WAIT_FOR built';
SET DEBUG_DBUG='+d,row_ins_row_level';
INSERT INTO t1 (i) VALUES (0),(0);
-ERROR 23000: Duplicate entry '0' for key 'i'
SET DEBUG_SYNC='now SIGNAL log';
SET DEBUG_DBUG=@saved_debug_dbug;
connection con1;
ERROR 23000: Duplicate entry '0' for key 'i'
+DELETE FROM t1;
+ALTER TABLE t1 ADD UNIQUE INDEX(i);
SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL built2 WAIT_FOR log2';
ALTER TABLE t1 DROP j, FORCE;
connection default;
@@ -141,7 +142,6 @@ UPDATE t1 SET i=0;
ERROR 23000: Duplicate entry '0' for key 'i'
SET DEBUG_SYNC='now SIGNAL log2';
connection con1;
-ERROR 23000: Duplicate entry '0' for key 'i'
disconnect con1;
connection default;
SET DEBUG_SYNC='RESET';
diff --git a/mysql-test/suite/innodb/r/innodb-index-online-fk.result b/mysql-test/suite/innodb/r/innodb-index-online-fk.result
index a3041985519..5f12b58584d 100644
--- a/mysql-test/suite/innodb/r/innodb-index-online-fk.result
+++ b/mysql-test/suite/innodb/r/innodb-index-online-fk.result
@@ -36,13 +36,13 @@ SET foreign_key_checks = 0;
ALTER TABLE child ADD CONSTRAINT fk_20 FOREIGN KEY (a1, a2)
REFERENCES parent(a, b) ON DELETE CASCADE ON UPDATE CASCADE,
ALGORITHM = INPLACE;
-ERROR HY000: Failed to add the foreign key constaint. Missing index for constraint 'fk_20' in the referenced table 'parent'
+ERROR HY000: Failed to add the foreign key constraint. Missing index for constraint 'fk_20' in the referenced table 'parent'
SHOW WARNINGS;
Level Code Message
-Error 1822 Failed to add the foreign key constaint. Missing index for constraint 'fk_20' in the referenced table 'parent'
+Error 1822 Failed to add the foreign key constraint. Missing index for constraint 'fk_20' in the referenced table 'parent'
SHOW ERRORS;
Level Code Message
-Error 1822 Failed to add the foreign key constaint. Missing index for constraint 'fk_20' in the referenced table 'parent'
+Error 1822 Failed to add the foreign key constraint. Missing index for constraint 'fk_20' in the referenced table 'parent'
CREATE INDEX idx1 on parent(a, b);
ALTER TABLE child ADD CONSTRAINT fk_10 FOREIGN KEY (a1, a2)
REFERENCES parent(a, b) ON DELETE CASCADE ON UPDATE CASCADE,
@@ -141,11 +141,11 @@ SET DEBUG_DBUG = '+d,innodb_test_no_foreign_idx';
ALTER TABLE `#child` ADD CONSTRAINT fk_40 FOREIGN KEY (a1, a2)
REFERENCES `#parent`(a, b) ON DELETE CASCADE ON UPDATE CASCADE,
ALGORITHM = INPLACE;
-ERROR HY000: Failed to add the foreign key constaint. Missing index for constraint 'fk_40' in the foreign table '#child'
+ERROR HY000: Failed to add the foreign key constraint. Missing index for constraint 'fk_40' in the foreign table '#child'
SET DEBUG_DBUG = @saved_debug_dbug;
SHOW ERRORS;
Level Code Message
-Error 1821 Failed to add the foreign key constaint. Missing index for constraint 'fk_40' in the foreign table '#child'
+Error 1821 Failed to add the foreign key constraint. Missing index for constraint 'fk_40' in the foreign table '#child'
SELECT * FROM information_schema.INNODB_SYS_FOREIGN;
ID FOR_NAME REF_NAME N_COLS TYPE
test/fk_1 test/child test/parent 1 6
@@ -168,11 +168,11 @@ SET DEBUG_DBUG = '+d,innodb_test_no_reference_idx';
ALTER TABLE child ADD CONSTRAINT fk_42 FOREIGN KEY (a1, a2)
REFERENCES parent(a, b) ON DELETE CASCADE ON UPDATE CASCADE,
ALGORITHM = INPLACE;
-ERROR HY000: Failed to add the foreign key constaint. Missing index for constraint 'fk_42' in the referenced table 'parent'
+ERROR HY000: Failed to add the foreign key constraint. Missing index for constraint 'fk_42' in the referenced table 'parent'
SET DEBUG_DBUG = @saved_debug_dbug;
SHOW ERRORS;
Level Code Message
-Error 1822 Failed to add the foreign key constaint. Missing index for constraint 'fk_42' in the referenced table 'parent'
+Error 1822 Failed to add the foreign key constraint. Missing index for constraint 'fk_42' in the referenced table 'parent'
SET DEBUG_DBUG = '+d,innodb_test_wrong_fk_option';
ALTER TABLE child ADD CONSTRAINT fk_42 FOREIGN KEY (a1, a2)
REFERENCES parent(a, b) ON DELETE CASCADE ON UPDATE CASCADE,
@@ -470,7 +470,7 @@ ADD CONSTRAINT fk_new_1 FOREIGN KEY (a1_new) REFERENCES parent(b),
ADD CONSTRAINT fk_new_2 FOREIGN KEY (a2_new) REFERENCES parent(a),
ADD CONSTRAINT fk_new_3 FOREIGN KEY (a3) REFERENCES parent(c),
ALGORITHM = INPLACE;
-ERROR HY000: Failed to add the foreign key constaint. Missing index for constraint 'fk_new_3' in the referenced table 'parent'
+ERROR HY000: Failed to add the foreign key constraint. Missing index for constraint 'fk_new_3' in the referenced table 'parent'
SHOW CREATE TABLE child;
Table Create Table
child CREATE TABLE `child` (
@@ -532,7 +532,7 @@ ADD CONSTRAINT fk_new_1 FOREIGN KEY (a1) REFERENCES parent(b),
ADD CONSTRAINT fk_new_2 FOREIGN KEY (a2) REFERENCES parent(a),
ADD CONSTRAINT fk_new_3 FOREIGN KEY (a3) REFERENCES parent(c),
ALGORITHM = INPLACE;
-ERROR HY000: Failed to add the foreign key constaint. Missing index for constraint 'fk_new_3' in the referenced table 'parent'
+ERROR HY000: Failed to add the foreign key constraint. Missing index for constraint 'fk_new_3' in the referenced table 'parent'
SHOW CREATE TABLE child;
Table Create Table
child CREATE TABLE `child` (
diff --git a/mysql-test/suite/innodb/r/innodb-index-online.result b/mysql-test/suite/innodb/r/innodb-index-online.result
index 1ee352cd402..be86cf7565e 100644
--- a/mysql-test/suite/innodb/r/innodb-index-online.result
+++ b/mysql-test/suite/innodb/r/innodb-index-online.result
@@ -85,7 +85,8 @@ ddl_sort_file_alter_table 0
ddl_log_file_alter_table 0
BEGIN;
INSERT INTO t1 VALUES(7,4,2);
-ROLLBACK;
+COMMIT;
+DELETE FROM t1 where c1 = 7;
SET DEBUG_SYNC = 'now SIGNAL rollback_done';
connection con1;
ERROR 23000: Duplicate entry '4' for key 'c2'
@@ -96,14 +97,14 @@ SET DEBUG_SYNC = 'now WAIT_FOR created';
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
name count
ddl_background_drop_indexes 0
-ddl_online_create_index 0
+ddl_online_create_index 1
ddl_pending_alter_table 1
ddl_sort_file_alter_table 0
ddl_log_file_alter_table 0
INSERT INTO t1 VALUES(6,3,1);
SET DEBUG_SYNC = 'now SIGNAL dml_done';
connection con1;
-ERROR 23000: Duplicate entry for key 'c2'
+ERROR 23000: Duplicate entry '' for key '*UNKNOWN*'
DELETE FROM t1 WHERE c1=6;
ALTER TABLE t1 ADD UNIQUE INDEX(c2);
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
@@ -243,38 +244,22 @@ ddl_online_create_index 1
ddl_pending_alter_table 1
ddl_sort_file_alter_table 0
ddl_log_file_alter_table 0
-BEGIN;
-DELETE FROM t1;
-ROLLBACK;
UPDATE t1 SET c2 = c2 + 1;
-BEGIN;
+UPDATE t1 SET c2 = c2 + 2;
UPDATE t1 SET c2 = c2 + 1;
-DELETE FROM t1;
-ROLLBACK;
-BEGIN;
-DELETE FROM t1;
-ROLLBACK;
+UPDATE t1 SET c2 = c2 + 2;
UPDATE t1 SET c2 = c2 + 1;
-BEGIN;
+UPDATE t1 SET c2 = c2 + 2;
UPDATE t1 SET c2 = c2 + 1;
-DELETE FROM t1;
-ROLLBACK;
-BEGIN;
-DELETE FROM t1;
-ROLLBACK;
+UPDATE t1 SET c2 = c2 + 2;
UPDATE t1 SET c2 = c2 + 1;
-BEGIN;
+UPDATE t1 SET c2 = c2 + 2;
UPDATE t1 SET c2 = c2 + 1;
-DELETE FROM t1;
-ROLLBACK;
-BEGIN;
-DELETE FROM t1;
-ROLLBACK;
+UPDATE t1 SET c2 = c2 + 2;
UPDATE t1 SET c2 = c2 + 1;
-BEGIN;
+UPDATE t1 SET c2 = c2 + 2;
UPDATE t1 SET c2 = c2 + 1;
-DELETE FROM t1;
-ROLLBACK;
+UPDATE t1 SET c2 = c2 + 2;
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
name count
ddl_background_drop_indexes 0
@@ -310,7 +295,7 @@ ERROR HY000: Creating index 'c2e' required more than 'innodb_online_alter_log_ma
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
name count
ddl_background_drop_indexes 1
-ddl_online_create_index 0
+ddl_online_create_index 1
ddl_pending_alter_table 0
ddl_sort_file_alter_table 0
ddl_log_file_alter_table 1
@@ -321,7 +306,7 @@ name pos
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
name count
ddl_background_drop_indexes 1
-ddl_online_create_index 0
+ddl_online_create_index 1
ddl_pending_alter_table 0
ddl_sort_file_alter_table 0
ddl_log_file_alter_table 1
@@ -361,19 +346,45 @@ ddl_log_file_alter_table 1
BEGIN;
INSERT INTO t1 SELECT 320 + c1, c2, c3 FROM t1 WHERE c1 > 160;
DELETE FROM t1 WHERE c1 > 320;
-ROLLBACK;
+COMMIT;
BEGIN;
UPDATE t1 SET c2 = c2 + 1;
-DELETE FROM t1;
-ROLLBACK;
+COMMIT;
BEGIN;
INSERT INTO t1 SELECT 320 + c1, c2, c3 FROM t1 WHERE c1 > 160;
DELETE FROM t1 WHERE c1 > 320;
-ROLLBACK;
+COMMIT;
BEGIN;
UPDATE t1 SET c2 = c2 + 1;
-DELETE FROM t1;
-ROLLBACK;
+COMMIT;
+BEGIN;
+INSERT INTO t1 SELECT 320 + c1, c2, c3 FROM t1 WHERE c1 > 160;
+DELETE FROM t1 WHERE c1 > 320;
+COMMIT;
+BEGIN;
+UPDATE t1 SET c2 = c2 + 1;
+COMMIT;
+BEGIN;
+INSERT INTO t1 SELECT 320 + c1, c2, c3 FROM t1 WHERE c1 > 160;
+DELETE FROM t1 WHERE c1 > 320;
+COMMIT;
+BEGIN;
+UPDATE t1 SET c2 = c2 + 1;
+COMMIT;
+BEGIN;
+INSERT INTO t1 SELECT 320 + c1, c2, c3 FROM t1 WHERE c1 > 160;
+DELETE FROM t1 WHERE c1 > 320;
+COMMIT;
+BEGIN;
+UPDATE t1 SET c2 = c2 + 1;
+COMMIT;
+BEGIN;
+INSERT INTO t1 SELECT 320 + c1, c2, c3 FROM t1 WHERE c1 > 160;
+DELETE FROM t1 WHERE c1 > 320;
+COMMIT;
+BEGIN;
+UPDATE t1 SET c2 = c2 + 1;
+COMMIT;
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
name count
ddl_background_drop_indexes 0
@@ -452,7 +463,7 @@ name pos
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
name count
ddl_background_drop_indexes 1
-ddl_online_create_index 0
+ddl_online_create_index 1
ddl_pending_alter_table 0
ddl_sort_file_alter_table 0
ddl_log_file_alter_table 2
@@ -460,7 +471,7 @@ connection default;
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
name count
ddl_background_drop_indexes 1
-ddl_online_create_index 0
+ddl_online_create_index 1
ddl_pending_alter_table 0
ddl_sort_file_alter_table 0
ddl_log_file_alter_table 2
@@ -498,7 +509,6 @@ SET DEBUG_SYNC = 'row_log_apply_before SIGNAL t1u_created WAIT_FOR dup_done';
ALTER TABLE t1 ADD UNIQUE(c);
connection con1;
SET DEBUG_SYNC = 'now WAIT_FOR t1u_created';
-BEGIN;
INSERT INTO t1 VALUES('bar'),('bar');
SET DEBUG_SYNC = 'now SIGNAL dup_done';
connection default;
diff --git a/mysql-test/suite/innodb/r/innodb-index.result b/mysql-test/suite/innodb/r/innodb-index.result
index 603d4a61a89..4b2e88e3029 100644
--- a/mysql-test/suite/innodb/r/innodb-index.result
+++ b/mysql-test/suite/innodb/r/innodb-index.result
@@ -958,13 +958,13 @@ FOREIGN KEY (c3,c2) REFERENCES t1(c1,c1), ALGORITHM=COPY;
ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
FOREIGN KEY (c3,c2) REFERENCES t1(c1,c1);
-ERROR HY000: Failed to add the foreign key constaint. Missing index for constraint 'fk_t2_ca' in the referenced table 't1'
+ERROR HY000: Failed to add the foreign key constraint. Missing index for constraint 'fk_t2_ca' in the referenced table 't1'
ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
FOREIGN KEY (c3,c2) REFERENCES t1(c1,c2), ALGORITHM=COPY;
ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
FOREIGN KEY (c3,c2) REFERENCES t1(c1,c2);
-ERROR HY000: Failed to add the foreign key constaint. Missing index for constraint 'fk_t2_ca' in the referenced table 't1'
+ERROR HY000: Failed to add the foreign key constraint. Missing index for constraint 'fk_t2_ca' in the referenced table 't1'
ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
FOREIGN KEY (c3,c2) REFERENCES t1(c2,c1), ALGORITHM=INPLACE;
ERROR HY000: Failed to add the foreign key constraint on table 't2'. Incorrect options in FOREIGN KEY constraint 'test/fk_t2_ca'
@@ -979,7 +979,7 @@ FOREIGN KEY (c3,c2) REFERENCES t1(c1,c2), ALGORITHM=COPY;
ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
FOREIGN KEY (c3,c2) REFERENCES t1(c1,c2);
-ERROR HY000: Failed to add the foreign key constaint. Missing index for constraint 'fk_t2_ca' in the referenced table 't1'
+ERROR HY000: Failed to add the foreign key constraint. Missing index for constraint 'fk_t2_ca' in the referenced table 't1'
ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
FOREIGN KEY (c3,c2) REFERENCES t1(c2,c1);
affected rows: 0
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_bzip2.result b/mysql-test/suite/innodb/r/innodb-page_compression_bzip2.result
deleted file mode 100644
index 34b0d9431b5..00000000000
--- a/mysql-test/suite/innodb/r/innodb-page_compression_bzip2.result
+++ /dev/null
@@ -1,444 +0,0 @@
-set global innodb_compression_algorithm = 5;
-create table innodb_compressed(c1 int, b char(20)) engine=innodb row_format=compressed key_block_size=8;
-show warnings;
-Level Code Message
-create table innodb_normal (c1 int, b char(20)) engine=innodb;
-show warnings;
-Level Code Message
-create table innodb_page_compressed1 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=1;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed1;
-Table Create Table
-innodb_page_compressed1 CREATE TABLE `innodb_page_compressed1` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=1
-create table innodb_page_compressed2 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=2;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed2;
-Table Create Table
-innodb_page_compressed2 CREATE TABLE `innodb_page_compressed2` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=2
-create table innodb_page_compressed3 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=3;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed3;
-Table Create Table
-innodb_page_compressed3 CREATE TABLE `innodb_page_compressed3` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=3
-create table innodb_page_compressed4 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=4;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed4;
-Table Create Table
-innodb_page_compressed4 CREATE TABLE `innodb_page_compressed4` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=4
-create table innodb_page_compressed5 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=5;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed5;
-Table Create Table
-innodb_page_compressed5 CREATE TABLE `innodb_page_compressed5` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=5
-create table innodb_page_compressed6 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=6;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed6;
-Table Create Table
-innodb_page_compressed6 CREATE TABLE `innodb_page_compressed6` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=6
-create table innodb_page_compressed7 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=7;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed7;
-Table Create Table
-innodb_page_compressed7 CREATE TABLE `innodb_page_compressed7` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=7
-create table innodb_page_compressed8 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=8;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed8;
-Table Create Table
-innodb_page_compressed8 CREATE TABLE `innodb_page_compressed8` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-create table innodb_page_compressed9 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=9;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed9;
-Table Create Table
-innodb_page_compressed9 CREATE TABLE `innodb_page_compressed9` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=9
-create procedure innodb_insert_proc (repeat_count int)
-begin
-declare current_num int;
-set current_num = 0;
-while current_num < repeat_count do
-insert into innodb_normal values(current_num,'testing..');
-set current_num = current_num + 1;
-end while;
-end//
-commit;
-set autocommit=0;
-call innodb_insert_proc(5000);
-commit;
-set autocommit=1;
-select count(*) from innodb_normal;
-count(*)
-5000
-insert into innodb_compressed select * from innodb_normal;
-insert into innodb_page_compressed1 select * from innodb_normal;
-insert into innodb_page_compressed2 select * from innodb_normal;
-insert into innodb_page_compressed3 select * from innodb_normal;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-insert into innodb_page_compressed7 select * from innodb_normal;
-insert into innodb_page_compressed8 select * from innodb_normal;
-insert into innodb_page_compressed9 select * from innodb_normal;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-alter table innodb_normal page_compressed=1 page_compression_level=8,
-algorithm=instant;
-show warnings;
-Level Code Message
-show create table innodb_normal;
-Table Create Table
-innodb_normal CREATE TABLE `innodb_normal` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
-ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
-show warnings;
-Level Code Message
-show create table innodb_compressed;
-Table Create Table
-innodb_compressed CREATE TABLE `innodb_compressed` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-set global innodb_compression_algorithm = 1;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-set global innodb_compression_algorithm = 0;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_compressed;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_lz4.result b/mysql-test/suite/innodb/r/innodb-page_compression_lz4.result
deleted file mode 100644
index 8ea650c2241..00000000000
--- a/mysql-test/suite/innodb/r/innodb-page_compression_lz4.result
+++ /dev/null
@@ -1,444 +0,0 @@
-set global innodb_compression_algorithm = 2;
-create table innodb_compressed(c1 int, b char(20)) engine=innodb row_format=compressed key_block_size=8;
-show warnings;
-Level Code Message
-create table innodb_normal (c1 int, b char(20)) engine=innodb;
-show warnings;
-Level Code Message
-create table innodb_page_compressed1 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=1;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed1;
-Table Create Table
-innodb_page_compressed1 CREATE TABLE `innodb_page_compressed1` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=1
-create table innodb_page_compressed2 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=2;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed2;
-Table Create Table
-innodb_page_compressed2 CREATE TABLE `innodb_page_compressed2` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=2
-create table innodb_page_compressed3 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=3;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed3;
-Table Create Table
-innodb_page_compressed3 CREATE TABLE `innodb_page_compressed3` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=3
-create table innodb_page_compressed4 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=4;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed4;
-Table Create Table
-innodb_page_compressed4 CREATE TABLE `innodb_page_compressed4` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=4
-create table innodb_page_compressed5 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=5;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed5;
-Table Create Table
-innodb_page_compressed5 CREATE TABLE `innodb_page_compressed5` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=5
-create table innodb_page_compressed6 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=6;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed6;
-Table Create Table
-innodb_page_compressed6 CREATE TABLE `innodb_page_compressed6` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=6
-create table innodb_page_compressed7 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=7;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed7;
-Table Create Table
-innodb_page_compressed7 CREATE TABLE `innodb_page_compressed7` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=7
-create table innodb_page_compressed8 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=8;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed8;
-Table Create Table
-innodb_page_compressed8 CREATE TABLE `innodb_page_compressed8` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-create table innodb_page_compressed9 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=9;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed9;
-Table Create Table
-innodb_page_compressed9 CREATE TABLE `innodb_page_compressed9` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=9
-create procedure innodb_insert_proc (repeat_count int)
-begin
-declare current_num int;
-set current_num = 0;
-while current_num < repeat_count do
-insert into innodb_normal values(current_num,'testing..');
-set current_num = current_num + 1;
-end while;
-end//
-commit;
-set autocommit=0;
-call innodb_insert_proc(5000);
-commit;
-set autocommit=1;
-select count(*) from innodb_normal;
-count(*)
-5000
-insert into innodb_compressed select * from innodb_normal;
-insert into innodb_page_compressed1 select * from innodb_normal;
-insert into innodb_page_compressed2 select * from innodb_normal;
-insert into innodb_page_compressed3 select * from innodb_normal;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-insert into innodb_page_compressed7 select * from innodb_normal;
-insert into innodb_page_compressed8 select * from innodb_normal;
-insert into innodb_page_compressed9 select * from innodb_normal;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-alter table innodb_normal page_compressed=1 page_compression_level=8,
-algorithm=instant;
-show warnings;
-Level Code Message
-show create table innodb_normal;
-Table Create Table
-innodb_normal CREATE TABLE `innodb_normal` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
-ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
-show warnings;
-Level Code Message
-show create table innodb_compressed;
-Table Create Table
-innodb_compressed CREATE TABLE `innodb_compressed` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-set global innodb_compression_algorithm = 1;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-set global innodb_compression_algorithm = 0;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_compressed;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_lzma.result b/mysql-test/suite/innodb/r/innodb-page_compression_lzma.result
deleted file mode 100644
index 4206b0b83d4..00000000000
--- a/mysql-test/suite/innodb/r/innodb-page_compression_lzma.result
+++ /dev/null
@@ -1,444 +0,0 @@
-set global innodb_compression_algorithm = 4;
-create table innodb_compressed(c1 int, b char(20)) engine=innodb row_format=compressed key_block_size=8;
-show warnings;
-Level Code Message
-create table innodb_normal (c1 int, b char(20)) engine=innodb;
-show warnings;
-Level Code Message
-create table innodb_page_compressed1 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=1;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed1;
-Table Create Table
-innodb_page_compressed1 CREATE TABLE `innodb_page_compressed1` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=1
-create table innodb_page_compressed2 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=2;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed2;
-Table Create Table
-innodb_page_compressed2 CREATE TABLE `innodb_page_compressed2` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=2
-create table innodb_page_compressed3 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=3;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed3;
-Table Create Table
-innodb_page_compressed3 CREATE TABLE `innodb_page_compressed3` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=3
-create table innodb_page_compressed4 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=4;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed4;
-Table Create Table
-innodb_page_compressed4 CREATE TABLE `innodb_page_compressed4` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=4
-create table innodb_page_compressed5 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=5;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed5;
-Table Create Table
-innodb_page_compressed5 CREATE TABLE `innodb_page_compressed5` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=5
-create table innodb_page_compressed6 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=6;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed6;
-Table Create Table
-innodb_page_compressed6 CREATE TABLE `innodb_page_compressed6` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=6
-create table innodb_page_compressed7 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=7;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed7;
-Table Create Table
-innodb_page_compressed7 CREATE TABLE `innodb_page_compressed7` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=7
-create table innodb_page_compressed8 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=8;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed8;
-Table Create Table
-innodb_page_compressed8 CREATE TABLE `innodb_page_compressed8` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-create table innodb_page_compressed9 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=9;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed9;
-Table Create Table
-innodb_page_compressed9 CREATE TABLE `innodb_page_compressed9` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=9
-create procedure innodb_insert_proc (repeat_count int)
-begin
-declare current_num int;
-set current_num = 0;
-while current_num < repeat_count do
-insert into innodb_normal values(current_num,'testing..');
-set current_num = current_num + 1;
-end while;
-end//
-commit;
-set autocommit=0;
-call innodb_insert_proc(5000);
-commit;
-set autocommit=1;
-select count(*) from innodb_normal;
-count(*)
-5000
-insert into innodb_compressed select * from innodb_normal;
-insert into innodb_page_compressed1 select * from innodb_normal;
-insert into innodb_page_compressed2 select * from innodb_normal;
-insert into innodb_page_compressed3 select * from innodb_normal;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-insert into innodb_page_compressed7 select * from innodb_normal;
-insert into innodb_page_compressed8 select * from innodb_normal;
-insert into innodb_page_compressed9 select * from innodb_normal;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-alter table innodb_normal page_compressed=1 page_compression_level=8,
-algorithm=instant;
-show warnings;
-Level Code Message
-show create table innodb_normal;
-Table Create Table
-innodb_normal CREATE TABLE `innodb_normal` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
-ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
-show warnings;
-Level Code Message
-show create table innodb_compressed;
-Table Create Table
-innodb_compressed CREATE TABLE `innodb_compressed` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-set global innodb_compression_algorithm = 1;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-set global innodb_compression_algorithm = 0;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_compressed;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_lzo.result b/mysql-test/suite/innodb/r/innodb-page_compression_lzo.result
deleted file mode 100644
index c440d28ddd3..00000000000
--- a/mysql-test/suite/innodb/r/innodb-page_compression_lzo.result
+++ /dev/null
@@ -1,357 +0,0 @@
-set global innodb_compression_algorithm = 3;
-create table innodb_compressed(c1 int, b char(20)) engine=innodb row_format=compressed key_block_size=8;
-show warnings;
-Level Code Message
-create table innodb_normal (c1 int, b char(20)) engine=innodb;
-show warnings;
-Level Code Message
-create table innodb_page_compressed1 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=1;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed1;
-Table Create Table
-innodb_page_compressed1 CREATE TABLE `innodb_page_compressed1` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=1
-create table innodb_page_compressed2 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=2;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed2;
-Table Create Table
-innodb_page_compressed2 CREATE TABLE `innodb_page_compressed2` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=2
-create table innodb_page_compressed3 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=3;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed3;
-Table Create Table
-innodb_page_compressed3 CREATE TABLE `innodb_page_compressed3` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=3
-create table innodb_page_compressed4 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=4;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed4;
-Table Create Table
-innodb_page_compressed4 CREATE TABLE `innodb_page_compressed4` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=4
-create table innodb_page_compressed5 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=5;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed5;
-Table Create Table
-innodb_page_compressed5 CREATE TABLE `innodb_page_compressed5` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=5
-create table innodb_page_compressed6 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=6;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed6;
-Table Create Table
-innodb_page_compressed6 CREATE TABLE `innodb_page_compressed6` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=6
-create table innodb_page_compressed7 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=7;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed7;
-Table Create Table
-innodb_page_compressed7 CREATE TABLE `innodb_page_compressed7` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=7
-create table innodb_page_compressed8 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=8;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed8;
-Table Create Table
-innodb_page_compressed8 CREATE TABLE `innodb_page_compressed8` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-create table innodb_page_compressed9 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=9;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed9;
-Table Create Table
-innodb_page_compressed9 CREATE TABLE `innodb_page_compressed9` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=9
-create procedure innodb_insert_proc (repeat_count int)
-begin
-declare current_num int;
-set current_num = 0;
-while current_num < repeat_count do
-insert into innodb_normal values(current_num,'testing..');
-set current_num = current_num + 1;
-end while;
-end//
-commit;
-set autocommit=0;
-call innodb_insert_proc(5000);
-commit;
-set autocommit=1;
-select count(*) from innodb_normal;
-count(*)
-5000
-insert into innodb_compressed select * from innodb_normal;
-insert into innodb_page_compressed1 select * from innodb_normal;
-insert into innodb_page_compressed2 select * from innodb_normal;
-insert into innodb_page_compressed3 select * from innodb_normal;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-insert into innodb_page_compressed7 select * from innodb_normal;
-insert into innodb_page_compressed8 select * from innodb_normal;
-insert into innodb_page_compressed9 select * from innodb_normal;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-alter table innodb_normal page_compressed=1 page_compression_level=8,
-algorithm=instant;
-show warnings;
-Level Code Message
-show create table innodb_normal;
-Table Create Table
-innodb_normal CREATE TABLE `innodb_normal` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
-ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
-show warnings;
-Level Code Message
-show create table innodb_compressed;
-Table Create Table
-innodb_compressed CREATE TABLE `innodb_compressed` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-set global innodb_compression_algorithm = 1;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_compressed;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_snappy.result b/mysql-test/suite/innodb/r/innodb-page_compression_snappy.result
deleted file mode 100644
index 2f675bcf1b4..00000000000
--- a/mysql-test/suite/innodb/r/innodb-page_compression_snappy.result
+++ /dev/null
@@ -1,97 +0,0 @@
-set global innodb_compression_algorithm = snappy;
-create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
-create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
-create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
-create table innodb_page_compressed3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
-create table innodb_page_compressed4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
-create table innodb_page_compressed5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
-create table innodb_page_compressed6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
-create table innodb_page_compressed7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
-create table innodb_page_compressed8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
-create table innodb_page_compressed9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-# innodb_normal expected FOUND
-FOUND 24084 /AaAaAaAa/ in innodb_normal.ibd
-# innodb_page_compressed1 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed1.ibd
-# innodb_page_compressed2 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed2.ibd
-# innodb_page_compressed3 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed3.ibd
-# innodb_page_compressed4 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed4.ibd
-# innodb_page_compressed5 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed5.ibd
-# innodb_page_compressed6 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed6.ibd
-# innodb_page_compressed7 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed7.ibd
-# innodb_page_compressed8 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed8.ibd
-# innodb_page_compressed9 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed9.ibd
-# restart
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-drop table innodb_normal;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
-#done
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_tables.result b/mysql-test/suite/innodb/r/innodb-page_compression_tables.result
deleted file mode 100644
index 693db6eb7ec..00000000000
--- a/mysql-test/suite/innodb/r/innodb-page_compression_tables.result
+++ /dev/null
@@ -1,155 +0,0 @@
-set global innodb_compression_algorithm = 1;
-create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
-create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact page_compressed=1;
-create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic page_compressed=1;
-create table innodb_compressed(c1 bigint not null, b char(200)) engine=innodb row_format=compressed page_compressed=1;
-ERROR HY000: Can't create table `test`.`innodb_compressed` (errno: 140 "Wrong create options")
-show warnings;
-Level Code Message
-Warning 140 InnoDB: PAGE_COMPRESSED table can't have ROW_TYPE=COMPRESSED
-Error 1005 Can't create table `test`.`innodb_compressed` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-show create table innodb_compact;
-Table Create Table
-innodb_compact CREATE TABLE `innodb_compact` (
- `c1` bigint(20) NOT NULL,
- `b` char(200) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT `page_compressed`=1
-show create table innodb_dynamic;
-Table Create Table
-innodb_dynamic CREATE TABLE `innodb_dynamic` (
- `c1` bigint(20) NOT NULL,
- `b` char(200) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC `page_compressed`=1
-create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant page_compressed=1;
-ERROR HY000: Can't create table `test`.`innodb_redundant` (errno: 140 "Wrong create options")
-show warnings;
-Level Code Message
-Warning 140 InnoDB: PAGE_COMPRESSED table can't have ROW_TYPE=REDUNDANT
-Error 1005 Can't create table `test`.`innodb_redundant` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant;
-show create table innodb_redundant;
-Table Create Table
-innodb_redundant CREATE TABLE `innodb_redundant` (
- `c1` bigint(20) NOT NULL,
- `b` char(200) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
-alter table innodb_redundant page_compressed=1;
-ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'PAGE_COMPRESSED'
-show warnings;
-Level Code Message
-Warning 140 InnoDB: PAGE_COMPRESSED table can't have ROW_TYPE=REDUNDANT
-Error 1478 Table storage engine 'InnoDB' does not support the create option 'PAGE_COMPRESSED'
-show create table innodb_redundant;
-Table Create Table
-innodb_redundant CREATE TABLE `innodb_redundant` (
- `c1` bigint(20) NOT NULL,
- `b` char(200) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
-alter table innodb_redundant row_format=compact page_compressed=1;
-show create table innodb_redundant;
-Table Create Table
-innodb_redundant CREATE TABLE `innodb_redundant` (
- `c1` bigint(20) NOT NULL,
- `b` char(200) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT `page_compressed`=1
-drop table innodb_redundant;
-#
-# MDEV-24455 Assertion `!m_freed_space' failed in mtr_t::start
-#
-CREATE TABLE t1 (a TEXT, b TEXT) ENGINE=InnoDB PAGE_COMPRESSED='ON';
-BEGIN;
-INSERT INTO t1 VALUES(REPEAT('x',81),REPEAT('x',8034));
-ROLLBACK;
-DROP TABLE t1;
-create procedure innodb_insert_proc (repeat_count int)
-begin
-declare current_num int;
-set current_num = 0;
-while current_num < repeat_count do
-insert into innodb_normal values(current_num, substring(MD5(RAND()), -64));
-set current_num = current_num + 1;
-end while;
-end//
-commit;
-set autocommit=0;
-call innodb_insert_proc(5000);
-commit;
-set autocommit=1;
-insert into innodb_compact select * from innodb_normal;
-insert into innodb_dynamic select * from innodb_normal;
-update innodb_compact set c1 = c1 + 1;
-update innodb_dynamic set c1 = c1 + 1;
-select count(*) from innodb_compact where c1 < 1500000;
-count(*)
-5000
-select count(*) from innodb_dynamic where c1 < 1500000;
-count(*)
-5000
-# restart
-update innodb_compact set c1 = c1 + 1;
-update innodb_dynamic set c1 = c1 + 1;
-select count(*) from innodb_compact where c1 < 1500000;
-count(*)
-5000
-select count(*) from innodb_dynamic where c1 < 1500000;
-count(*)
-5000
-set global innodb_compression_algorithm = 0;
-alter table innodb_compact page_compressed=DEFAULT, algorithm=instant;
-ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
-alter table innodb_compact page_compressed=DEFAULT;
-alter table innodb_dynamic page_compressed=DEFAULT, algorithm=instant;
-ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
-alter table innodb_dynamic page_compressed=DEFAULT;
-show create table innodb_compact;
-Table Create Table
-innodb_compact CREATE TABLE `innodb_compact` (
- `c1` bigint(20) NOT NULL,
- `b` char(200) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
-show create table innodb_dynamic;
-Table Create Table
-innodb_dynamic CREATE TABLE `innodb_dynamic` (
- `c1` bigint(20) NOT NULL,
- `b` char(200) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
-update innodb_compact set c1 = c1 + 1;
-update innodb_dynamic set c1 = c1 + 1;
-select count(*) from innodb_compact where c1 < 1500000;
-count(*)
-5000
-select count(*) from innodb_dynamic where c1 < 1500000;
-count(*)
-5000
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_compact;
-drop table innodb_dynamic;
-CREATE TABLE no_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB;
-SET SESSION innodb_compression_default = 1;
-CREATE TABLE default_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB;
-CREATE TABLE explicit_no_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB PAGE_COMPRESSED=0;
-SHOW CREATE TABLE no_compression;
-Table Create Table
-no_compression CREATE TABLE `no_compression` (
- `id` int(11) NOT NULL,
- `name` varchar(200) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-SHOW CREATE TABLE default_compression;
-Table Create Table
-default_compression CREATE TABLE `default_compression` (
- `id` int(11) NOT NULL,
- `name` varchar(200) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`='ON'
-SHOW CREATE TABLE explicit_no_compression;
-Table Create Table
-explicit_no_compression CREATE TABLE `explicit_no_compression` (
- `id` int(11) NOT NULL,
- `name` varchar(200) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=0
-DROP TABLE no_compression;
-DROP TABLE default_compression;
-DROP TABLE explicit_no_compression;
-SET SESSION innodb_compression_default = 0;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_zip.result b/mysql-test/suite/innodb/r/innodb-page_compression_zip.result
deleted file mode 100644
index f57ab6a82d2..00000000000
--- a/mysql-test/suite/innodb/r/innodb-page_compression_zip.result
+++ /dev/null
@@ -1,356 +0,0 @@
-set global innodb_compression_algorithm = 1;
-create table innodb_compressed(c1 int, b char(20)) engine=innodb row_format=compressed key_block_size=8;
-show warnings;
-Level Code Message
-create table innodb_normal (c1 int, b char(20)) engine=innodb;
-show warnings;
-Level Code Message
-create table innodb_page_compressed1 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=1;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed1;
-Table Create Table
-innodb_page_compressed1 CREATE TABLE `innodb_page_compressed1` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=1
-create table innodb_page_compressed2 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=2;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed2;
-Table Create Table
-innodb_page_compressed2 CREATE TABLE `innodb_page_compressed2` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=2
-create table innodb_page_compressed3 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=3;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed3;
-Table Create Table
-innodb_page_compressed3 CREATE TABLE `innodb_page_compressed3` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=3
-create table innodb_page_compressed4 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=4;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed4;
-Table Create Table
-innodb_page_compressed4 CREATE TABLE `innodb_page_compressed4` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=4
-create table innodb_page_compressed5 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=5;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed5;
-Table Create Table
-innodb_page_compressed5 CREATE TABLE `innodb_page_compressed5` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=5
-create table innodb_page_compressed6 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=6;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed6;
-Table Create Table
-innodb_page_compressed6 CREATE TABLE `innodb_page_compressed6` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=6
-create table innodb_page_compressed7 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=7;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed7;
-Table Create Table
-innodb_page_compressed7 CREATE TABLE `innodb_page_compressed7` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=7
-create table innodb_page_compressed8 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=8;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed8;
-Table Create Table
-innodb_page_compressed8 CREATE TABLE `innodb_page_compressed8` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-create table innodb_page_compressed9 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=9;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed9;
-Table Create Table
-innodb_page_compressed9 CREATE TABLE `innodb_page_compressed9` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=9
-create procedure innodb_insert_proc (repeat_count int)
-begin
-declare current_num int;
-set current_num = 0;
-while current_num < repeat_count do
-insert into innodb_normal values(current_num,'testing..');
-set current_num = current_num + 1;
-end while;
-end//
-commit;
-set autocommit=0;
-call innodb_insert_proc(5000);
-commit;
-set autocommit=1;
-select count(*) from innodb_normal;
-count(*)
-5000
-insert into innodb_compressed select * from innodb_normal;
-insert into innodb_page_compressed1 select * from innodb_normal;
-insert into innodb_page_compressed2 select * from innodb_normal;
-insert into innodb_page_compressed3 select * from innodb_normal;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-insert into innodb_page_compressed7 select * from innodb_normal;
-insert into innodb_page_compressed8 select * from innodb_normal;
-insert into innodb_page_compressed9 select * from innodb_normal;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-alter table innodb_normal page_compressed=1 page_compression_level=8,
-algorithm=instant;
-show warnings;
-Level Code Message
-show create table innodb_normal;
-Table Create Table
-innodb_normal CREATE TABLE `innodb_normal` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
-ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
-show warnings;
-Level Code Message
-show create table innodb_compressed;
-Table Create Table
-innodb_compressed CREATE TABLE `innodb_compressed` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-set global innodb_compression_algorithm = 0;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-# restart
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-count(*)
-5000
-select count(*) from innodb_page_compressed1;
-count(*)
-5000
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-5000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-5000
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_compressed;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
diff --git a/mysql-test/suite/innodb/r/innodb-table-online.result b/mysql-test/suite/innodb/r/innodb-table-online.result
index 91d9b355125..659d645b5cc 100644
--- a/mysql-test/suite/innodb/r/innodb-table-online.result
+++ b/mysql-test/suite/innodb/r/innodb-table-online.result
@@ -97,11 +97,11 @@ ddl_online_create_index 1
ddl_pending_alter_table 1
ddl_sort_file_alter_table 0
ddl_log_file_alter_table 0
-BEGIN;
INSERT INTO t1 VALUES(4,7,2);
SET DEBUG_SYNC = 'now SIGNAL insert_done';
connection con1;
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
+DELETE FROM t1 WHERE c1=4 and c2=7;
connection default;
ROLLBACK;
connection con1;
@@ -213,30 +213,22 @@ ddl_online_create_index 1
ddl_pending_alter_table 1
ddl_sort_file_alter_table 0
ddl_log_file_alter_table 1
-BEGIN;
-DELETE FROM t1;
-ROLLBACK;
UPDATE t1 SET c2 = c2 + 1;
-BEGIN;
+UPDATE t1 SET c2 = c2 + 2;
UPDATE t1 SET c2 = c2 + 1;
-DELETE FROM t1;
-ROLLBACK;
-BEGIN;
-DELETE FROM t1;
-ROLLBACK;
+UPDATE t1 SET c2 = c2 + 2;
UPDATE t1 SET c2 = c2 + 1;
-BEGIN;
+UPDATE t1 SET c2 = c2 + 2;
UPDATE t1 SET c2 = c2 + 1;
-DELETE FROM t1;
-ROLLBACK;
-BEGIN;
-DELETE FROM t1;
-ROLLBACK;
+UPDATE t1 SET c2 = c2 + 2;
UPDATE t1 SET c2 = c2 + 1;
-BEGIN;
+UPDATE t1 SET c2 = c2 + 2;
UPDATE t1 SET c2 = c2 + 1;
-DELETE FROM t1;
-ROLLBACK;
+UPDATE t1 SET c2 = c2 + 2;
+UPDATE t1 SET c2 = c2 + 1;
+UPDATE t1 SET c2 = c2 + 2;
+UPDATE t1 SET c2 = c2 + 1;
+UPDATE t1 SET c2 = c2 + 2;
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
name count
ddl_background_drop_indexes 0
@@ -286,7 +278,7 @@ SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL rebuilt3 WAIT_FOR dml3_done
ALTER TABLE t1 ADD PRIMARY KEY(c22f), CHANGE c2 c22f INT;
ERROR 42000: Multiple primary key defined
ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(c22f), CHANGE c2 c22f INT;
-ERROR 23000: Duplicate entry '5' for key 'PRIMARY'
+ERROR 23000: Duplicate entry '26' for key 'PRIMARY'
ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(c22f,c1,c4(5)),
CHANGE c2 c22f INT, CHANGE c3 c3 CHAR(255) NULL, CHANGE c1 c1 INT AFTER c22f,
ADD COLUMN c4 VARCHAR(6) DEFAULT 'Online', LOCK=NONE;
@@ -302,11 +294,8 @@ ddl_log_file_alter_table 1
BEGIN;
INSERT INTO t1 SELECT 320 + c1, c2, c3 FROM t1 WHERE c1 > 240;
DELETE FROM t1 WHERE c1 > 320;
-ROLLBACK;
-BEGIN;
UPDATE t1 SET c2 = c2 + 1;
-DELETE FROM t1;
-ROLLBACK;
+COMMIT;
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
name count
ddl_background_drop_indexes 0
@@ -374,12 +363,11 @@ SET DEBUG_SYNC = 'now WAIT_FOR c3p5_created0';
BEGIN;
INSERT INTO t1 VALUES(347,33101,'Pikku kakkosen posti','YLETV2');
INSERT INTO t1 VALUES(33101,347,NULL,'');
+COMMIT;
SET DEBUG_SYNC = 'now SIGNAL ins_done0';
connection con1;
-ERROR 01000: Data truncated for column 'c3' at row 323
-connection default;
-ROLLBACK;
-connection con1;
+ERROR 22004: Invalid use of NULL value
+DELETE FROM t1 WHERE c1= 347 and c22f = 33101;
ALTER TABLE t1 MODIFY c3 CHAR(255) NOT NULL;
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL c3p5_created WAIT_FOR ins_done';
ALTER TABLE t1 DROP PRIMARY KEY, DROP COLUMN c22f,
@@ -405,20 +393,20 @@ ddl_log_file_alter_table 2
connection default;
SELECT COUNT(*) FROM t1;
COUNT(*)
-321
+322
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
SELECT * FROM t1 LIMIT 10;
c22f c1 c3 c4
-5 1 1foo Online
-5 6 6foofoofoofoofoofoo Online
-5 11 11foofoofoofoofoofoofoofoofoofoofoo Online
-5 16 16foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
-5 21 21foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
-5 26 26foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
-5 31 31foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
-5 36 36foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
-5 41 41foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
-5 46 46foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
+27 1 1foo Online
+27 6 6foofoofoofoofoofoo Online
+27 11 11foofoofoofoofoofoofoofoofoofoofoo Online
+27 16 16foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
+27 21 21foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
+27 26 26foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
+27 31 31foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
+27 36 36foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
+27 41 41foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
+27 46 46foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
connection con1;
ALTER TABLE t1 DISCARD TABLESPACE;
connection default;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_default.result b/mysql-test/suite/innodb/r/innodb_page_compressed.result
index 4610d251fc0..a494ff03e8b 100644
--- a/mysql-test/suite/innodb/r/innodb-page_compression_default.result
+++ b/mysql-test/suite/innodb/r/innodb_page_compressed.result
@@ -1,3 +1,4 @@
+SET @save_algorithm = @@GLOBAL.innodb_compression_algorithm;
create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
@@ -8,81 +9,37 @@ create table innodb_page_compressed6 (c1 int not null auto_increment primary key
create table innodb_page_compressed7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
create table innodb_page_compressed8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
create table innodb_page_compressed9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-# innodb_normal expected FOUND
-FOUND 24084 /AaAaAaAa/ in innodb_normal.ibd
-# innodb_page_compressed1 page compressed expected NOT FOUND
+connect prevent_purge,localhost,root;
+START TRANSACTION WITH CONSISTENT SNAPSHOT;
+connection default;
+begin;
+insert into innodb_normal SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed1 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed2 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed3 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed4 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed5 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed6 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed7 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed8 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed9 SET b=REPEAT('Aa',50);
+commit;
+FLUSH TABLES innodb_normal,
+innodb_page_compressed1, innodb_page_compressed2, innodb_page_compressed3,
+innodb_page_compressed4, innodb_page_compressed5, innodb_page_compressed6,
+innodb_page_compressed7, innodb_page_compressed8, innodb_page_compressed9
+FOR EXPORT;
+FOUND 12 /AaAaAaAa/ in innodb_normal.ibd
NOT FOUND /AaAaAaAa/ in innodb_page_compressed1.ibd
-# innodb_page_compressed2 page compressed expected NOT FOUND
NOT FOUND /AaAaAaAa/ in innodb_page_compressed2.ibd
-# innodb_page_compressed3 page compressed expected NOT FOUND
NOT FOUND /AaAaAaAa/ in innodb_page_compressed3.ibd
-# innodb_page_compressed4 page compressed expected NOT FOUND
NOT FOUND /AaAaAaAa/ in innodb_page_compressed4.ibd
-# innodb_page_compressed5 page compressed expected NOT FOUND
NOT FOUND /AaAaAaAa/ in innodb_page_compressed5.ibd
-# innodb_page_compressed6 page compressed expected NOT FOUND
NOT FOUND /AaAaAaAa/ in innodb_page_compressed6.ibd
-# innodb_page_compressed7 page compressed expected NOT FOUND
NOT FOUND /AaAaAaAa/ in innodb_page_compressed7.ibd
-# innodb_page_compressed8 page compressed expected NOT FOUND
NOT FOUND /AaAaAaAa/ in innodb_page_compressed8.ibd
-# innodb_page_compressed9 page compressed expected NOT FOUND
NOT FOUND /AaAaAaAa/ in innodb_page_compressed9.ibd
-# restart
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
+UNLOCK TABLES;
drop table innodb_normal;
drop table innodb_page_compressed1;
drop table innodb_page_compressed2;
@@ -93,4 +50,4 @@ drop table innodb_page_compressed6;
drop table innodb_page_compressed7;
drop table innodb_page_compressed8;
drop table innodb_page_compressed9;
-#done
+SET GLOBAL innodb_compression_algorithm=@save_algorithm;
diff --git a/mysql-test/suite/innodb/r/insert_into_empty_debug.result b/mysql-test/suite/innodb/r/insert_into_empty_debug.result
new file mode 100644
index 00000000000..6ee445eb218
--- /dev/null
+++ b/mysql-test/suite/innodb/r/insert_into_empty_debug.result
@@ -0,0 +1,32 @@
+CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
+PRIMARY KEY(f1))ENGINE=InnoDB;
+INSERT INTO t1 VALUES(1, 2), (2, 2);
+SET DEBUG_SYNC="innodb_rollback_inplace_alter_table SIGNAL dml_start WAIT_FOR dml_commit";
+ALTER TABLE t1 ADD UNIQUE KEY(f2);
+connect con1,localhost,root,,,;
+SET DEBUG_SYNC="now WAIT_FOR dml_start";
+BEGIN;
+DELETE FROM t1;
+SET DEBUG_SYNC="now SIGNAL dml_commit";
+connection default;
+ERROR 23000: Duplicate entry '2' for key 'f2'
+connection con1;
+COMMIT;
+TRUNCATE TABLE t1;
+SET unique_checks=0, foreign_key_checks=0;
+BEGIN;
+INSERT INTO t1 VALUES(1, 2);
+ROLLBACK;
+connection default;
+SELECT * FROM t1;
+f1 f2
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f1` int(11) NOT NULL,
+ `f2` int(11) NOT NULL,
+ PRIMARY KEY (`f1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+disconnect con1;
+DROP TABLE t1;
+SET DEBUG_SYNC=RESET;
diff --git a/mysql-test/suite/innodb/r/instant_alter_debug,dynamic.rdiff b/mysql-test/suite/innodb/r/instant_alter_debug,dynamic.rdiff
deleted file mode 100644
index 379514edad9..00000000000
--- a/mysql-test/suite/innodb/r/instant_alter_debug,dynamic.rdiff
+++ /dev/null
@@ -1,6 +0,0 @@
-@@ -470,4 +470,4 @@
- FROM information_schema.global_status
- WHERE variable_name = 'innodb_instant_alter_column';
- instants
--33
-+32
diff --git a/mysql-test/suite/innodb/r/instant_alter_debug,redundant.rdiff b/mysql-test/suite/innodb/r/instant_alter_debug,redundant.rdiff
index eafa8e5725d..cff4ff18c70 100644
--- a/mysql-test/suite/innodb/r/instant_alter_debug,redundant.rdiff
+++ b/mysql-test/suite/innodb/r/instant_alter_debug,redundant.rdiff
@@ -1,4 +1,4 @@
-@@ -509,4 +509,4 @@
+@@ -527,4 +527,4 @@
FROM information_schema.global_status
WHERE variable_name = 'innodb_instant_alter_column';
instants
diff --git a/mysql-test/suite/innodb/r/instant_alter_debug.result b/mysql-test/suite/innodb/r/instant_alter_debug.result
index 82230573c44..5f74c234260 100644
--- a/mysql-test/suite/innodb/r/instant_alter_debug.result
+++ b/mysql-test/suite/innodb/r/instant_alter_debug.result
@@ -262,7 +262,6 @@ INSERT INTO t1 SET a=3;
ROLLBACK;
SET DEBUG_SYNC = 'now SIGNAL logged';
connection ddl;
-ERROR 22004: Invalid use of NULL value
disconnect ddl;
connection default;
SET DEBUG_SYNC = RESET;
diff --git a/mysql-test/suite/innodb/r/online_table_rebuild.result b/mysql-test/suite/innodb/r/online_table_rebuild.result
new file mode 100644
index 00000000000..0ba26fca1d9
--- /dev/null
+++ b/mysql-test/suite/innodb/r/online_table_rebuild.result
@@ -0,0 +1,47 @@
+CREATE TABLE t1(f1 INT NOT NULL, f2 CHAR(200), f3 CHAR(200))ENGINE=InnoDB;
+INSERT INTO t1 VALUES(3, "innodb", "alter log");
+SET DEBUG_SYNC="inplace_after_index_build SIGNAL dml_start WAIT_FOR dml_commit";
+ALTER TABLE t1 ADD PRIMARY KEY(f3(10)), ADD UNIQUE KEY(f2(10));
+CONNECT con1,localhost,root,,,;
+SET DEBUG_SYNC="now WAIT_FOR dml_start";
+BEGIN;
+INSERT INTO t1 VALUES(1, repeat('b', 100), repeat('c', 100));
+INSERT INTO t1 VALUES(2, repeat('b', 100), repeat('a', 100));
+COMMIT;
+SET DEBUG_SYNC="now SIGNAL dml_commit";
+connection default;
+ERROR 23000: Duplicate entry 'bbbbbbbbbb' for key 'f2'
+connection default;
+SET DEBUG_SYNC="inplace_after_index_build SIGNAL dml_start WAIT_FOR dml_commit";
+ALTER TABLE t1 ADD PRIMARY KEY(f1);
+connection con1;
+SET DEBUG_SYNC="now WAIT_FOR dml_start";
+INSERT INTO t1 SELECT 10, repeat('a', 100), repeat('b', 100) FROM seq_1_to_4800;
+SET DEBUG_SYNC="now SIGNAL dml_commit";
+connection default;
+ERROR HY000: Creating index 'PRIMARY' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again
+DELETE FROM t1;
+INSERT INTO t1 VALUES(1, repeat('a', 100), repeat('b', 100));
+ALTER TABLE t1 ADD PRIMARY KEY(f1);
+set DEBUG_SYNC="innodb_inplace_alter_table_enter SIGNAL dml_start WAIT_FOR dml_commit";
+ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(f3(10));
+connection con1;
+SET DEBUG_SYNC="now WAIT_FOR dml_start";
+BEGIN;
+INSERT INTO t1 VALUES(2, repeat('b', 100), repeat('c', 100));
+UPDATE t1 set f3=repeat('c', 100) where f1=1;
+COMMIT;
+SET DEBUG_SYNC="now SIGNAL dml_commit";
+connection default;
+ERROR 23000: Duplicate entry 'cccccccccc' for key 'PRIMARY'
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f1` int(11) NOT NULL,
+ `f2` char(200) DEFAULT NULL,
+ `f3` char(200) DEFAULT NULL,
+ PRIMARY KEY (`f1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+DROP TABLE t1;
+disconnect con1;
+SET DEBUG_SYNC=reset;
diff --git a/mysql-test/suite/innodb/r/row_size_error_log_warnings_3.result b/mysql-test/suite/innodb/r/row_size_error_log_warnings_3.result
index fba209dd2b5..d00ac938310 100644
--- a/mysql-test/suite/innodb/r/row_size_error_log_warnings_3.result
+++ b/mysql-test/suite/innodb/r/row_size_error_log_warnings_3.result
@@ -15,31 +15,71 @@ col_1 TEXT
,col_11 TEXT
) ENGINE=INNODB ROW_FORMAT=COMPACT;
Warnings:
-Warning 139 Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
+Warning 139 Row size too large (> NNNN). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
TRUNCATE TABLE t1;
Warnings:
-Warning 139 Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
+Warning 139 Row size too large (> NNNN). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
OPTIMIZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
test.t1 optimize status OK
Warnings:
-Warning 139 Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
+Warning 139 Row size too large (> NNNN). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
ALTER TABLE t1 FORCE;
Warnings:
-Warning 139 Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
+Warning 139 Row size too large (> NNNN). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
SET innodb_strict_mode = ON;
TRUNCATE TABLE t1;
Warnings:
-Warning 139 Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
+Warning 139 Row size too large (> NNNN). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
OPTIMIZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
test.t1 optimize status OK
Warnings:
-Warning 139 Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
+Warning 139 Row size too large (> NNNN). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
ALTER TABLE t1 FORCE;
Warnings:
-Warning 139 Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
+Warning 139 Row size too large (> NNNN). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
DROP TABLE t1;
SET @@global.log_warnings = 2;
+#
+# MDEV-20194 Warnings inconsistently issued upon CHECK on
+# table from older versions
+#
+set global innodb_compression_level=1;
+CREATE TABLE t1(
+f1 INT, f2 CHAR(200), f3 CHAR(200),
+f4 CHAR(200), f5 CHAR(200), f6 CHAR(200),
+f7 CHAR(200), f8 CHAR(200), f9 CHAR(200),
+f10 CHAR(200), PRIMARY KEY(f1, f2(20), f3(20), f4(20))
+) ROW_FORMAT=COMPRESSED, ENGINE=InnoDB;
+INSERT INTO t1 SELECT seq, repeat('a', 200), repeat('b', 200),
+repeat('c', 200), repeat('d', 200),
+repeat('d', 200), repeat('e', 200),
+repeat('e', 200), repeat('f', 200),
+repeat('g', 200) FROM seq_1_to_20;
+DROP TABLE t1;
+set global innodb_compression_level=default;
+CREATE TABLE t1(f1 char(200), f2 char(200), f3 char(200),
+f4 char(200), f5 char(200), f6 char(200),
+f7 char(200), f8 char(200), f9 char(200),
+f10 char(200), f11 char(200), f12 char(200),
+f13 char(200), f14 char(200), f15 char(200),
+f16 char(200), f17 char(200), f18 char(200),
+f19 char(200), f20 char(200), f21 char(200),
+f22 char(200), f23 char(200), f24 char(200),
+f25 char(200), f26 char(200), f27 char(200),
+f28 char(200), f29 char(200), f30 char(200),
+f31 char(200), f32 char(200), f33 char(200),
+primary key(f1(10), f2(10), f3(10), f4(10),
+f5(10), f6(10), f7(10), f8(10),
+f9(10), f10(10), f11(10), f12(10),
+f13(10), f14(10), f15(10), f16(10),
+f17(10), f18(10), f19(10), f20(10),
+f21(10), f22(10), f23(10), f24(10),
+f25(10), f26(10), f27(10), f28(10),
+f29(10), f30(10), f31(10), f32(10),
+f33(10)))
+ENGINE=InnoDB;
+ERROR 42000: Too many key parts specified; max 32 parts allowed
diff --git a/mysql-test/suite/innodb/r/stat_tables.result b/mysql-test/suite/innodb/r/stat_tables.result
index bb449570479..c1ce6fc8fce 100644
--- a/mysql-test/suite/innodb/r/stat_tables.result
+++ b/mysql-test/suite/innodb/r/stat_tables.result
@@ -13,3 +13,17 @@ a
drop table t1;
rename table mysql.table_stats_save to mysql.table_stats;
flush tables;
+#
+# MDEV-26753 Assertion state == TRX_STATE_PREPARED ||... failed
+#
+CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB;
+XA START 'test';
+SELECT COUNT(*)>0 FROM mysql.innodb_index_stats LOCK IN SHARE MODE;
+COUNT(*)>0
+1
+INSERT INTO t1 VALUES (1),(2);
+UPDATE mysql.innodb_table_stats SET last_update=NULL WHERE table_name='t1';
+XA END 'test';
+XA ROLLBACK 'test';
+DROP TABLE t1;
+# End of 10.6 tests
diff --git a/mysql-test/suite/innodb/r/stored_fk.result b/mysql-test/suite/innodb/r/stored_fk.result
index 35524d5a88f..b7ef178f1be 100644
--- a/mysql-test/suite/innodb/r/stored_fk.result
+++ b/mysql-test/suite/innodb/r/stored_fk.result
@@ -49,7 +49,7 @@ CREATE TABLE s (a INT, b INT GENERATED ALWAYS AS (0) STORED, c INT,
d INT GENERATED ALWAYS AS (0) VIRTUAL, e INT) ENGINE=innodb;
CREATE TABLE t (a INT) ENGINE=innodb;
ALTER TABLE s ADD CONSTRAINT c FOREIGN KEY (e) REFERENCES t(a) ON UPDATE SET null;
-ERROR HY000: Failed to add the foreign key constaint. Missing index for constraint 'c' in the referenced table 't'
+ERROR HY000: Failed to add the foreign key constraint. Missing index for constraint 'c' in the referenced table 't'
ALTER TABLE t ADD PRIMARY KEY(a);
ALTER TABLE s ADD CONSTRAINT c FOREIGN KEY (e) REFERENCES t(a) ON UPDATE SET null;
DROP TABLE s,t;
@@ -57,7 +57,7 @@ CREATE TABLE s (a INT GENERATED ALWAYS AS (0) VIRTUAL,
b INT GENERATED ALWAYS AS (0) STORED, c INT) ENGINE=innodb;
CREATE TABLE t (a INT) ENGINE=innodb;
ALTER TABLE s ADD CONSTRAINT c FOREIGN KEY (c) REFERENCES t(a) ON UPDATE SET null;
-ERROR HY000: Failed to add the foreign key constaint. Missing index for constraint 'c' in the referenced table 't'
+ERROR HY000: Failed to add the foreign key constraint. Missing index for constraint 'c' in the referenced table 't'
ALTER TABLE t ADD PRIMARY KEY(a);
ALTER TABLE s ADD CONSTRAINT c FOREIGN KEY (c) REFERENCES t(a) ON UPDATE SET null;
DROP TABLE s,t;
@@ -68,7 +68,7 @@ DROP TABLE s,t;
CREATE TABLE s (a INT, b INT) ENGINE=innodb;
CREATE TABLE t (a INT) ENGINE=innodb;
ALTER TABLE s ADD CONSTRAINT c FOREIGN KEY (a) REFERENCES t(a) ON UPDATE SET null;
-ERROR HY000: Failed to add the foreign key constaint. Missing index for constraint 'c' in the referenced table 't'
+ERROR HY000: Failed to add the foreign key constraint. Missing index for constraint 'c' in the referenced table 't'
ALTER TABLE t ADD PRIMARY KEY(a);
ALTER TABLE s ADD CONSTRAINT c FOREIGN KEY (a) REFERENCES t(a) ON UPDATE SET null;
DROP TABLE s,t;
diff --git a/mysql-test/suite/innodb/r/table_definition_cache_debug.result b/mysql-test/suite/innodb/r/table_definition_cache_debug.result
index df171c89cd4..6bd754aaca3 100644
--- a/mysql-test/suite/innodb/r/table_definition_cache_debug.result
+++ b/mysql-test/suite/innodb/r/table_definition_cache_debug.result
@@ -12,6 +12,7 @@ connection default;
SET DEBUG_SYNC = 'now WAIT_FOR scanned';
BEGIN;
INSERT INTO to_be_evicted VALUES(3, 2);
+COMMIT;
SET DEBUG_SYNC = 'now SIGNAL got_duplicate';
connection ddl;
ERROR 23000: Duplicate entry '2' for key 'b'
diff --git a/mysql-test/suite/innodb/t/alter_candidate_key.test b/mysql-test/suite/innodb/t/alter_candidate_key.test
index 7c8f5e30993..824ad1ea799 100644
--- a/mysql-test/suite/innodb/t/alter_candidate_key.test
+++ b/mysql-test/suite/innodb/t/alter_candidate_key.test
@@ -50,7 +50,7 @@ connection con1;
SET DEBUG_SYNC='now WAIT_FOR dml';
BEGIN;
INSERT INTO t1 SET a=NULL;
-ROLLBACK;
+COMMIT;
set DEBUG_SYNC='now SIGNAL dml_done';
connection default;
--error ER_INVALID_USE_OF_NULL
diff --git a/mysql-test/suite/innodb/t/alter_crash.test b/mysql-test/suite/innodb/t/alter_crash.test
index 1049efd3e12..e0e294ae4f0 100644
--- a/mysql-test/suite/innodb/t/alter_crash.test
+++ b/mysql-test/suite/innodb/t/alter_crash.test
@@ -213,6 +213,7 @@ connection default;
SET DEBUG_SYNC = 'now WAIT_FOR scanned';
BEGIN;
INSERT INTO t1 VALUES(2,1);
+COMMIT;
SET DEBUG_SYNC = 'now SIGNAL commit';
SET DEBUG_SYNC = 'now WAIT_FOR c';
# Make all pending changes durable for recovery.
diff --git a/mysql-test/suite/innodb/t/alter_crash_rebuild.test b/mysql-test/suite/innodb/t/alter_crash_rebuild.test
index 500cd28e5c5..0ed3e4a1f9c 100644
--- a/mysql-test/suite/innodb/t/alter_crash_rebuild.test
+++ b/mysql-test/suite/innodb/t/alter_crash_rebuild.test
@@ -5,13 +5,11 @@
CREATE TABLE t1 (a INT NOT NULL) ENGINE=InnoDB STATS_PERSISTENT=0;
connect ddl,localhost,root;
-SET DEBUG_SYNC='after_trx_committed_in_memory SIGNAL stuck WAIT_FOR ever EXECUTE 2';
+SET DEBUG_SYNC='after_trx_committed_in_memory SIGNAL stuck WAIT_FOR ever';
send ALTER TABLE t1 ADD PRIMARY KEY(a);
connection default;
SET DEBUG_SYNC='now WAIT_FOR stuck';
-SET DEBUG_SYNC='now SIGNAL ever';
-SET DEBUG_SYNC='now WAIT_FOR stuck';
SET GLOBAL innodb_log_checkpoint_now=ON;
diff --git a/mysql-test/suite/innodb/t/alter_dml_apply.opt b/mysql-test/suite/innodb/t/alter_dml_apply.opt
new file mode 100644
index 00000000000..fa3418284bf
--- /dev/null
+++ b/mysql-test/suite/innodb/t/alter_dml_apply.opt
@@ -0,0 +1,2 @@
+--innodb_online_alter_log_max_size=64k
+--innodb_sort_buffer_size=64k
diff --git a/mysql-test/suite/innodb/t/alter_dml_apply.test b/mysql-test/suite/innodb/t/alter_dml_apply.test
new file mode 100644
index 00000000000..4d6fd418691
--- /dev/null
+++ b/mysql-test/suite/innodb/t/alter_dml_apply.test
@@ -0,0 +1,58 @@
+--source include/have_innodb.inc
+--source include/have_debug.inc
+--source include/have_sequence.inc
+
+CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
+ f3 CHAR(200), f4 CHAR(200),
+ PRIMARY KEY(f1))ENGINE=InnoDB;
+INSERT INTO t1 VALUES(6000, 6000, "InnoDB", "MariaDB");
+
+# InnoDB DML thread applies the online log, aborts other online index
+
+SET DEBUG_SYNC="inplace_after_index_build SIGNAL dml_start WAIT_FOR dml_commit";
+SEND ALTER TABLE t1 ADD UNIQUE KEY(f2), ADD UNIQUE INDEX(f4(10));
+
+# InnoDB DML thread applies insert log
+
+connect(con1,localhost,root,,,);
+SET DEBUG_SYNC="now WAIT_FOR dml_start";
+# Rollback should avoid online index
+BEGIN;
+DELETE FROM t1 WHERE f1= 6000;
+INSERT INTO t1 VALUES(6000, 6000, "InnoDB", "MariaDB");
+ROLLBACK;
+
+# Insert log will fetch the previous version in this case
+BEGIN;
+DELETE FROM t1 WHERE f1= 6000;
+INSERT INTO t1 VALUES(6000, 6000, "InnoDB", "MariaDB");
+INSERT INTO t1 SELECT seq, seq, repeat('a', 200), repeat('b', 200) FROM seq_1_to_4000;
+COMMIT;
+SET DEBUG_SYNC="now SIGNAL dml_commit";
+
+connection default;
+--error ER_DUP_ENTRY
+reap;
+
+# DML Thread applies update log
+
+SET DEBUG_SYNC="inplace_after_index_build SIGNAL dml_start WAIT_FOR dml_commit";
+SEND ALTER TABLE t1 ADD UNIQUE KEY(f2), ADD INDEX(f3(10));
+
+connection con1;
+SET DEBUG_SYNC="now WAIT_FOR dml_start";
+BEGIN;
+DELETE FROM t1;
+INSERT INTO t1 SELECT seq, seq, repeat('d', 200), repeat('e', 200) FROM
+seq_1_to_4000;
+UPDATE t1 SET f3=repeat('c', 200), f4= repeat('d', 200), f2=3;
+COMMIT;
+SET DEBUG_SYNC="now SIGNAL dml_commit";
+
+connection default;
+--error ER_DUP_ENTRY
+reap;
+disconnect con1;
+CHECK TABLE t1;
+DROP TABLE t1;
+SET DEBUG_SYNC=reset;
diff --git a/mysql-test/suite/innodb/t/alter_mdl_timeout.test b/mysql-test/suite/innodb/t/alter_mdl_timeout.test
index 15e7f524fd0..ff77921b2d2 100644
--- a/mysql-test/suite/innodb/t/alter_mdl_timeout.test
+++ b/mysql-test/suite/innodb/t/alter_mdl_timeout.test
@@ -14,7 +14,7 @@ begin;
INSERT INTO t1 VALUES('e','e',5, 5);
SET DEBUG_SYNC="now SIGNAL con1_insert";
SET DEBUG_SYNC="now WAIT_FOR con1_wait";
-SET DEBUG_SYNC="before_row_upd_sec_new_index_entry SIGNAL con1_update WAIT_FOR alter_rollback";
+SET DEBUG_SYNC="after_row_upd_clust SIGNAL con1_update WAIT_FOR alter_rollback";
SEND UPDATE t1 set f4 = 10 order by f1 desc limit 2;
connection default;
diff --git a/mysql-test/suite/innodb/t/alter_not_null_debug.test b/mysql-test/suite/innodb/t/alter_not_null_debug.test
index 9c5ba0faff0..87113b2b3f8 100644
--- a/mysql-test/suite/innodb/t/alter_not_null_debug.test
+++ b/mysql-test/suite/innodb/t/alter_not_null_debug.test
@@ -7,7 +7,7 @@ let $sql_mode = `SELECT @@SQL_MODE`;
let $error_code = 0;
if ($sql_mode == "STRICT_TRANS_TABLES") {
- let $error_code = WARN_DATA_TRUNCATED;
+ let $error_code = ER_INVALID_USE_OF_NULL;
}
diff --git a/mysql-test/suite/innodb/t/foreign_key.test b/mysql-test/suite/innodb/t/foreign_key.test
index 71290c722d7..6f7e5948b05 100644
--- a/mysql-test/suite/innodb/t/foreign_key.test
+++ b/mysql-test/suite/innodb/t/foreign_key.test
@@ -965,7 +965,9 @@ ALTER TABLE parent FORCE, ALGORITHM=COPY;
ALTER TABLE parent FORCE, ALGORITHM=INPLACE;
--error ER_LOCK_WAIT_TIMEOUT
ALTER TABLE parent ADD COLUMN b INT, ALGORITHM=INSTANT;
-disconnect con1;
+connection con1;
+COMMIT;
+connection default;
# Restore the timeout to avoid occasional races with purge.
SET innodb_lock_wait_timeout=DEFAULT;
TRUNCATE TABLE parent;
@@ -974,6 +976,37 @@ ALTER TABLE parent FORCE, ALGORITHM=INPLACE;
ALTER TABLE parent ADD COLUMN b INT, ALGORITHM=INSTANT;
DROP TABLE child, parent;
+--echo #
+--echo # MDEV-26217 Failing assertion: list.count > 0 in ut_list_remove
+--echo # or Assertion `lock->trx == this' failed in dberr_t trx_t::drop_table
+--echo #
+
+CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1);
+
+CREATE TABLE t2 (pk INT PRIMARY KEY, FOREIGN KEY(pk) REFERENCES t1(pk))
+ENGINE=InnoDB;
+
+--connection con1
+SET FOREIGN_KEY_CHECKS=OFF;
+--send
+CREATE OR REPLACE TABLE t1 (b INT) ENGINE=InnoDB;
+
+--connection default
+--error 0,ER_NO_REFERENCED_ROW_2,ER_LOCK_DEADLOCK
+INSERT INTO t2 VALUES (1);
+
+--connection con1
+--error 0,ER_CANT_CREATE_TABLE
+--reap
+
+# Cleanup
+--disconnect con1
+--connection default
+--disable_warnings
+DROP TABLE IF EXISTS t2, t1;
+--enable_warnings
+
--echo # End of 10.6 tests
--source include/wait_until_count_sessions.inc
diff --git a/mysql-test/suite/innodb/t/innodb-alter-debug.test b/mysql-test/suite/innodb/t/innodb-alter-debug.test
index 1789ec294e4..2241ef5d295 100644
--- a/mysql-test/suite/innodb/t/innodb-alter-debug.test
+++ b/mysql-test/suite/innodb/t/innodb-alter-debug.test
@@ -52,11 +52,10 @@ SET DEBUG_SYNC = 'now SIGNAL s2';
--echo /* connection default */
connection default;
--echo /* reap */ alter table t1 force, add b int, ALGORITHM=inplace;
---error ER_DUP_ENTRY
--reap
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL s1 WAIT_FOR s2';
---send alter table t1 force, add b int, ALGORITHM=inplace;
+--send alter table t1 force, add c int, ALGORITHM=inplace;
--echo /* connection con1 */
connection con1;
@@ -68,7 +67,6 @@ SET DEBUG_SYNC = 'now SIGNAL s2';
--echo /* connection default */
connection default;
--echo /* reap */ alter table t1 force, add b int, ALGORITHM=inplace;
---error ER_DUP_ENTRY
--reap
SET DEBUG_SYNC = 'RESET';
@@ -92,7 +90,6 @@ SET DEBUG_SYNC = 'now SIGNAL S2';
disconnect con1;
CONNECTION default;
---error ER_DUP_ENTRY
reap;
SET DEBUG_SYNC='RESET';
diff --git a/mysql-test/suite/innodb/t/innodb-index-debug.test b/mysql-test/suite/innodb/t/innodb-index-debug.test
index 204bdfe5540..f03ef061769 100644
--- a/mysql-test/suite/innodb/t/innodb-index-debug.test
+++ b/mysql-test/suite/innodb/t/innodb-index-debug.test
@@ -122,17 +122,16 @@ drop table t480;
--echo # in online table rebuild
--echo #
-CREATE TABLE t1 (j INT UNIQUE, i INT UNIQUE) ENGINE=InnoDB;
+CREATE TABLE t1 (j INT UNIQUE, i INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES(2, 2);
--connect (con1,localhost,root,,test)
SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL built WAIT_FOR log';
--send
-ALTER TABLE t1 DROP j, FORCE;
+ALTER TABLE t1 DROP j, ADD UNIQUE INDEX(i), FORCE;
--connection default
SET DEBUG_SYNC='now WAIT_FOR built';
SET DEBUG_DBUG='+d,row_ins_row_level';
---error ER_DUP_ENTRY
INSERT INTO t1 (i) VALUES (0),(0);
SET DEBUG_SYNC='now SIGNAL log';
SET DEBUG_DBUG=@saved_debug_dbug;
@@ -140,6 +139,8 @@ SET DEBUG_DBUG=@saved_debug_dbug;
--connection con1
--error ER_DUP_ENTRY
reap;
+DELETE FROM t1;
+ALTER TABLE t1 ADD UNIQUE INDEX(i);
SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL built2 WAIT_FOR log2';
--send
ALTER TABLE t1 DROP j, FORCE;
@@ -152,7 +153,6 @@ UPDATE t1 SET i=0;
SET DEBUG_SYNC='now SIGNAL log2';
--connection con1
---error ER_DUP_ENTRY
reap;
--disconnect con1
--connection default
diff --git a/mysql-test/suite/innodb/t/innodb-index-online.test b/mysql-test/suite/innodb/t/innodb-index-online.test
index 6f30dad531d..2cb84b18402 100644
--- a/mysql-test/suite/innodb/t/innodb-index-online.test
+++ b/mysql-test/suite/innodb/t/innodb-index-online.test
@@ -98,7 +98,8 @@ eval $innodb_metrics_select;
# Insert a duplicate entry (4) for the already started UNIQUE INDEX(c2).
BEGIN;
INSERT INTO t1 VALUES(7,4,2);
-ROLLBACK;
+COMMIT;
+DELETE FROM t1 where c1 = 7;
SET DEBUG_SYNC = 'now SIGNAL rollback_done';
connection con1;
@@ -121,7 +122,7 @@ INSERT INTO t1 VALUES(6,3,1);
SET DEBUG_SYNC = 'now SIGNAL dml_done';
connection con1;
# This is due to the duplicate entry (6,3,1).
---error ER_DUP_UNKNOWN_IN_INDEX
+--error ER_DUP_ENTRY
reap;
DELETE FROM t1 WHERE c1=6;
ALTER TABLE t1 ADD UNIQUE INDEX(c2);
@@ -237,17 +238,11 @@ SET DEBUG_SYNC = 'now WAIT_FOR c2e_created';
# At this point, the clustered index scan must have completed,
# but the modification log keeps accumulating due to the DEBUG_SYNC.
eval $innodb_metrics_select;
-let $c= 4;
+let $c= 8;
while ($c)
{
- BEGIN;
- DELETE FROM t1;
- ROLLBACK;
UPDATE t1 SET c2 = c2 + 1;
- BEGIN;
- UPDATE t1 SET c2 = c2 + 1;
- DELETE FROM t1;
- ROLLBACK;
+ UPDATE t1 SET c2 = c2 + 2;
dec $c;
}
# Incomplete index c2e should exist until the DDL thread notices the overflow.
@@ -325,17 +320,16 @@ connection default;
SET DEBUG_SYNC = 'now WAIT_FOR c2f_created';
# Generate some log (delete-mark, delete-unmark, insert etc.)
eval $innodb_metrics_select;
-let $c= 2;
+let $c= 6;
while ($c)
{
BEGIN;
INSERT INTO t1 SELECT 320 + c1, c2, c3 FROM t1 WHERE c1 > 160;
DELETE FROM t1 WHERE c1 > 320;
-ROLLBACK;
+COMMIT;
BEGIN;
UPDATE t1 SET c2 = c2 + 1;
-DELETE FROM t1;
-ROLLBACK;
+COMMIT;
dec $c;
}
eval $innodb_metrics_select;
@@ -481,7 +475,6 @@ send ALTER TABLE t1 ADD UNIQUE(c);
connection con1;
SET DEBUG_SYNC = 'now WAIT_FOR t1u_created';
-BEGIN;
INSERT INTO t1 VALUES('bar'),('bar');
SET DEBUG_SYNC = 'now SIGNAL dup_done';
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_bzip2.test b/mysql-test/suite/innodb/t/innodb-page_compression_bzip2.test
deleted file mode 100644
index 8aa5addb960..00000000000
--- a/mysql-test/suite/innodb/t/innodb-page_compression_bzip2.test
+++ /dev/null
@@ -1,251 +0,0 @@
--- source include/have_innodb.inc
--- source include/have_innodb_bzip2.inc
--- source include/not_embedded.inc
-
---disable_query_log
-# This may be triggered on a slow system or one that lacks native AIO.
-call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
---enable_query_log
-
-# bzip2
-set global innodb_compression_algorithm = 5;
-
---disable_query_log
-SET GLOBAL innodb_read_only_compressed=OFF;
---enable_query_log
-
-create table innodb_compressed(c1 int, b char(20)) engine=innodb row_format=compressed key_block_size=8;
-show warnings;
-create table innodb_normal (c1 int, b char(20)) engine=innodb;
-show warnings;
-create table innodb_page_compressed1 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=1;
-show warnings;
-show create table innodb_page_compressed1;
-create table innodb_page_compressed2 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=2;
-show warnings;
-show create table innodb_page_compressed2;
-create table innodb_page_compressed3 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=3;
-show warnings;
-show create table innodb_page_compressed3;
-create table innodb_page_compressed4 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=4;
-show warnings;
-show create table innodb_page_compressed4;
-create table innodb_page_compressed5 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=5;
-show warnings;
-show create table innodb_page_compressed5;
-create table innodb_page_compressed6 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=6;
-show warnings;
-show create table innodb_page_compressed6;
-create table innodb_page_compressed7 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=7;
-show warnings;
-show create table innodb_page_compressed7;
-create table innodb_page_compressed8 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=8;
-show warnings;
-show create table innodb_page_compressed8;
-create table innodb_page_compressed9 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=9;
-show warnings;
-show create table innodb_page_compressed9;
-delimiter //;
-create procedure innodb_insert_proc (repeat_count int)
-begin
- declare current_num int;
- set current_num = 0;
- while current_num < repeat_count do
- insert into innodb_normal values(current_num,'testing..');
- set current_num = current_num + 1;
- end while;
-end//
-delimiter ;//
-commit;
-
-set autocommit=0;
-call innodb_insert_proc(5000);
-commit;
-set autocommit=1;
-select count(*) from innodb_normal;
-insert into innodb_compressed select * from innodb_normal;
-insert into innodb_page_compressed1 select * from innodb_normal;
-insert into innodb_page_compressed2 select * from innodb_normal;
-insert into innodb_page_compressed3 select * from innodb_normal;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-insert into innodb_page_compressed7 select * from innodb_normal;
-insert into innodb_page_compressed8 select * from innodb_normal;
-insert into innodb_page_compressed9 select * from innodb_normal;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-alter table innodb_normal page_compressed=1 page_compression_level=8,
-algorithm=instant;
-show warnings;
-show create table innodb_normal;
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
-show warnings;
-show create table innodb_compressed;
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-# zlib
-set global innodb_compression_algorithm = 1;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-# none
-set global innodb_compression_algorithm = 0;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_compressed;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_default.test b/mysql-test/suite/innodb/t/innodb-page_compression_default.test
deleted file mode 100644
index 34b1829485e..00000000000
--- a/mysql-test/suite/innodb/t/innodb-page_compression_default.test
+++ /dev/null
@@ -1,8 +0,0 @@
---source include/have_innodb.inc
---source include/not_embedded.inc
-
-# All page compression test use the same
---source include/innodb-page-compression.inc
-
--- echo #done
-
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_lz4.test b/mysql-test/suite/innodb/t/innodb-page_compression_lz4.test
deleted file mode 100644
index f0713a002ba..00000000000
--- a/mysql-test/suite/innodb/t/innodb-page_compression_lz4.test
+++ /dev/null
@@ -1,253 +0,0 @@
--- source include/have_innodb.inc
--- source include/have_innodb_lz4.inc
--- source include/not_embedded.inc
-# The test can take very long time with valgrind
---source include/not_valgrind.inc
-
---disable_query_log
-# This may be triggered on a slow system or one that lacks native AIO.
-call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
---enable_query_log
-
-# lz4
-set global innodb_compression_algorithm = 2;
-
---disable_query_log
-SET GLOBAL innodb_read_only_compressed=OFF;
---enable_query_log
-
-create table innodb_compressed(c1 int, b char(20)) engine=innodb row_format=compressed key_block_size=8;
-show warnings;
-create table innodb_normal (c1 int, b char(20)) engine=innodb;
-show warnings;
-create table innodb_page_compressed1 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=1;
-show warnings;
-show create table innodb_page_compressed1;
-create table innodb_page_compressed2 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=2;
-show warnings;
-show create table innodb_page_compressed2;
-create table innodb_page_compressed3 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=3;
-show warnings;
-show create table innodb_page_compressed3;
-create table innodb_page_compressed4 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=4;
-show warnings;
-show create table innodb_page_compressed4;
-create table innodb_page_compressed5 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=5;
-show warnings;
-show create table innodb_page_compressed5;
-create table innodb_page_compressed6 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=6;
-show warnings;
-show create table innodb_page_compressed6;
-create table innodb_page_compressed7 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=7;
-show warnings;
-show create table innodb_page_compressed7;
-create table innodb_page_compressed8 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=8;
-show warnings;
-show create table innodb_page_compressed8;
-create table innodb_page_compressed9 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=9;
-show warnings;
-show create table innodb_page_compressed9;
-delimiter //;
-create procedure innodb_insert_proc (repeat_count int)
-begin
- declare current_num int;
- set current_num = 0;
- while current_num < repeat_count do
- insert into innodb_normal values(current_num,'testing..');
- set current_num = current_num + 1;
- end while;
-end//
-delimiter ;//
-commit;
-
-set autocommit=0;
-call innodb_insert_proc(5000);
-commit;
-set autocommit=1;
-select count(*) from innodb_normal;
-insert into innodb_compressed select * from innodb_normal;
-insert into innodb_page_compressed1 select * from innodb_normal;
-insert into innodb_page_compressed2 select * from innodb_normal;
-insert into innodb_page_compressed3 select * from innodb_normal;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-insert into innodb_page_compressed7 select * from innodb_normal;
-insert into innodb_page_compressed8 select * from innodb_normal;
-insert into innodb_page_compressed9 select * from innodb_normal;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-alter table innodb_normal page_compressed=1 page_compression_level=8,
-algorithm=instant;
-show warnings;
-show create table innodb_normal;
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
-show warnings;
-show create table innodb_compressed;
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-# zlib
-set global innodb_compression_algorithm = 1;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-# none
-set global innodb_compression_algorithm = 0;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_compressed;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_lzma.test b/mysql-test/suite/innodb/t/innodb-page_compression_lzma.test
deleted file mode 100644
index 58234169967..00000000000
--- a/mysql-test/suite/innodb/t/innodb-page_compression_lzma.test
+++ /dev/null
@@ -1,251 +0,0 @@
--- source include/have_innodb.inc
--- source include/have_innodb_lzma.inc
--- source include/not_embedded.inc
-
---disable_query_log
-# This may be triggered on a slow system or one that lacks native AIO.
-call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
---enable_query_log
-
-# lzma
-set global innodb_compression_algorithm = 4;
-
---disable_query_log
-SET GLOBAL innodb_read_only_compressed=OFF;
---enable_query_log
-
-create table innodb_compressed(c1 int, b char(20)) engine=innodb row_format=compressed key_block_size=8;
-show warnings;
-create table innodb_normal (c1 int, b char(20)) engine=innodb;
-show warnings;
-create table innodb_page_compressed1 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=1;
-show warnings;
-show create table innodb_page_compressed1;
-create table innodb_page_compressed2 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=2;
-show warnings;
-show create table innodb_page_compressed2;
-create table innodb_page_compressed3 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=3;
-show warnings;
-show create table innodb_page_compressed3;
-create table innodb_page_compressed4 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=4;
-show warnings;
-show create table innodb_page_compressed4;
-create table innodb_page_compressed5 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=5;
-show warnings;
-show create table innodb_page_compressed5;
-create table innodb_page_compressed6 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=6;
-show warnings;
-show create table innodb_page_compressed6;
-create table innodb_page_compressed7 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=7;
-show warnings;
-show create table innodb_page_compressed7;
-create table innodb_page_compressed8 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=8;
-show warnings;
-show create table innodb_page_compressed8;
-create table innodb_page_compressed9 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=9;
-show warnings;
-show create table innodb_page_compressed9;
-delimiter //;
-create procedure innodb_insert_proc (repeat_count int)
-begin
- declare current_num int;
- set current_num = 0;
- while current_num < repeat_count do
- insert into innodb_normal values(current_num,'testing..');
- set current_num = current_num + 1;
- end while;
-end//
-delimiter ;//
-commit;
-
-set autocommit=0;
-call innodb_insert_proc(5000);
-commit;
-set autocommit=1;
-select count(*) from innodb_normal;
-insert into innodb_compressed select * from innodb_normal;
-insert into innodb_page_compressed1 select * from innodb_normal;
-insert into innodb_page_compressed2 select * from innodb_normal;
-insert into innodb_page_compressed3 select * from innodb_normal;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-insert into innodb_page_compressed7 select * from innodb_normal;
-insert into innodb_page_compressed8 select * from innodb_normal;
-insert into innodb_page_compressed9 select * from innodb_normal;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-alter table innodb_normal page_compressed=1 page_compression_level=8,
-algorithm=instant;
-show warnings;
-show create table innodb_normal;
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
-show warnings;
-show create table innodb_compressed;
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-# zlib
-set global innodb_compression_algorithm = 1;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-# none
-set global innodb_compression_algorithm = 0;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_compressed;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_lzo.test b/mysql-test/suite/innodb/t/innodb-page_compression_lzo.test
deleted file mode 100644
index 6cdb0856ba9..00000000000
--- a/mysql-test/suite/innodb/t/innodb-page_compression_lzo.test
+++ /dev/null
@@ -1,204 +0,0 @@
--- source include/have_innodb.inc
--- source include/have_innodb_lzo.inc
--- source include/not_embedded.inc
-
---disable_query_log
-# This may be triggered on a slow system or one that lacks native AIO.
-call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
---enable_query_log
-
-# lzo
-set global innodb_compression_algorithm = 3;
-
---disable_query_log
-SET GLOBAL innodb_read_only_compressed=OFF;
---enable_query_log
-
-create table innodb_compressed(c1 int, b char(20)) engine=innodb row_format=compressed key_block_size=8;
-show warnings;
-create table innodb_normal (c1 int, b char(20)) engine=innodb;
-show warnings;
-create table innodb_page_compressed1 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=1;
-show warnings;
-show create table innodb_page_compressed1;
-create table innodb_page_compressed2 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=2;
-show warnings;
-show create table innodb_page_compressed2;
-create table innodb_page_compressed3 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=3;
-show warnings;
-show create table innodb_page_compressed3;
-create table innodb_page_compressed4 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=4;
-show warnings;
-show create table innodb_page_compressed4;
-create table innodb_page_compressed5 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=5;
-show warnings;
-show create table innodb_page_compressed5;
-create table innodb_page_compressed6 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=6;
-show warnings;
-show create table innodb_page_compressed6;
-create table innodb_page_compressed7 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=7;
-show warnings;
-show create table innodb_page_compressed7;
-create table innodb_page_compressed8 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=8;
-show warnings;
-show create table innodb_page_compressed8;
-create table innodb_page_compressed9 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=9;
-show warnings;
-show create table innodb_page_compressed9;
-delimiter //;
-create procedure innodb_insert_proc (repeat_count int)
-begin
- declare current_num int;
- set current_num = 0;
- while current_num < repeat_count do
- insert into innodb_normal values(current_num,'testing..');
- set current_num = current_num + 1;
- end while;
-end//
-delimiter ;//
-commit;
-
-set autocommit=0;
-call innodb_insert_proc(5000);
-commit;
-set autocommit=1;
-select count(*) from innodb_normal;
-insert into innodb_compressed select * from innodb_normal;
-insert into innodb_page_compressed1 select * from innodb_normal;
-insert into innodb_page_compressed2 select * from innodb_normal;
-insert into innodb_page_compressed3 select * from innodb_normal;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-insert into innodb_page_compressed7 select * from innodb_normal;
-insert into innodb_page_compressed8 select * from innodb_normal;
-insert into innodb_page_compressed9 select * from innodb_normal;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-alter table innodb_normal page_compressed=1 page_compression_level=8,
-algorithm=instant;
-show warnings;
-show create table innodb_normal;
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
-show warnings;
-show create table innodb_compressed;
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-# zlib
-set global innodb_compression_algorithm = 1;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_compressed;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_snappy.test b/mysql-test/suite/innodb/t/innodb-page_compression_snappy.test
deleted file mode 100644
index 0186c24ef2e..00000000000
--- a/mysql-test/suite/innodb/t/innodb-page_compression_snappy.test
+++ /dev/null
@@ -1,11 +0,0 @@
--- source include/have_innodb.inc
--- source include/have_innodb_snappy.inc
---source include/not_embedded.inc
-
-# snappy
-set global innodb_compression_algorithm = snappy;
-
-# All page compression test use the same
---source include/innodb-page-compression.inc
-
--- echo #done
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_tables.test b/mysql-test/suite/innodb/t/innodb-page_compression_tables.test
deleted file mode 100644
index 6e9d3388154..00000000000
--- a/mysql-test/suite/innodb/t/innodb-page_compression_tables.test
+++ /dev/null
@@ -1,116 +0,0 @@
---source include/have_innodb.inc
---source include/not_embedded.inc
-
-let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`;
---disable_query_log
-# This may be triggered on a slow system or one that lacks native AIO.
-call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
---enable_query_log
-
-# zlib
-set global innodb_compression_algorithm = 1;
-
-create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
-create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact page_compressed=1;
-create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic page_compressed=1;
---error 1005
-create table innodb_compressed(c1 bigint not null, b char(200)) engine=innodb row_format=compressed page_compressed=1;
-show warnings;
-show create table innodb_compact;
-show create table innodb_dynamic;
-
-# MDEV-7133: InnoDB: Assertion failure in thread 140737091569408 in file dict0mem.cc line 74
-# InnoDB: Failing assertion: dict_tf_is_valid(flags)
---error 1005
-create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant page_compressed=1;
-show warnings;
-create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant;
-show create table innodb_redundant;
---error ER_ILLEGAL_HA_CREATE_OPTION
-alter table innodb_redundant page_compressed=1;
-show warnings;
-show create table innodb_redundant;
-alter table innodb_redundant row_format=compact page_compressed=1;
-show create table innodb_redundant;
-drop table innodb_redundant;
-
---echo #
---echo # MDEV-24455 Assertion `!m_freed_space' failed in mtr_t::start
---echo #
-CREATE TABLE t1 (a TEXT, b TEXT) ENGINE=InnoDB PAGE_COMPRESSED='ON';
-BEGIN; INSERT INTO t1 VALUES(REPEAT('x',81),REPEAT('x',8034)); ROLLBACK;
-DROP TABLE t1;
-
-delimiter //;
-create procedure innodb_insert_proc (repeat_count int)
-begin
- declare current_num int;
- set current_num = 0;
- while current_num < repeat_count do
- insert into innodb_normal values(current_num, substring(MD5(RAND()), -64));
- set current_num = current_num + 1;
- end while;
-end//
-delimiter ;//
-commit;
-
-set autocommit=0;
-call innodb_insert_proc(5000);
-commit;
-set autocommit=1;
-
-insert into innodb_compact select * from innodb_normal;
-insert into innodb_dynamic select * from innodb_normal;
-
-update innodb_compact set c1 = c1 + 1;
-update innodb_dynamic set c1 = c1 + 1;
-select count(*) from innodb_compact where c1 < 1500000;
-select count(*) from innodb_dynamic where c1 < 1500000;
-
---source include/restart_mysqld.inc
-
-update innodb_compact set c1 = c1 + 1;
-update innodb_dynamic set c1 = c1 + 1;
-select count(*) from innodb_compact where c1 < 1500000;
-select count(*) from innodb_dynamic where c1 < 1500000;
-
-# none
-set global innodb_compression_algorithm = 0;
-
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
-alter table innodb_compact page_compressed=DEFAULT, algorithm=instant;
-alter table innodb_compact page_compressed=DEFAULT;
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
-alter table innodb_dynamic page_compressed=DEFAULT, algorithm=instant;
-alter table innodb_dynamic page_compressed=DEFAULT;
-show create table innodb_compact;
-show create table innodb_dynamic;
-
-update innodb_compact set c1 = c1 + 1;
-update innodb_dynamic set c1 = c1 + 1;
-select count(*) from innodb_compact where c1 < 1500000;
-select count(*) from innodb_dynamic where c1 < 1500000;
-
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_compact;
-drop table innodb_dynamic;
-
-# MDEV-9820 introducing variable for having page compression turned on by default on InnoDB tables
-# test that innodb_compression_default works as expected, i.e. if it has a value of 1 (ON) tables are by default created with page_compressed=1;
-CREATE TABLE no_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB;
-SET SESSION innodb_compression_default = 1;
-CREATE TABLE default_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB;
-CREATE TABLE explicit_no_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB PAGE_COMPRESSED=0;
-SHOW CREATE TABLE no_compression;
-SHOW CREATE TABLE default_compression;
-SHOW CREATE TABLE explicit_no_compression;
-DROP TABLE no_compression;
-DROP TABLE default_compression;
-DROP TABLE explicit_no_compression;
-SET SESSION innodb_compression_default = 0;
-
-# reset system
---disable_query_log
-EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algorithm_orig;
---enable_query_log
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_zip.test b/mysql-test/suite/innodb/t/innodb-page_compression_zip.test
deleted file mode 100644
index e147a23b7ec..00000000000
--- a/mysql-test/suite/innodb/t/innodb-page_compression_zip.test
+++ /dev/null
@@ -1,203 +0,0 @@
---source include/have_innodb.inc
---source include/not_embedded.inc
-# This test is slow on buildbot.
---source include/big_test.inc
-
---disable_query_log
-# This may be triggered on a slow system or one that lacks native AIO.
-call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
---enable_query_log
-
-# zlib
-set global innodb_compression_algorithm = 1;
-
---disable_query_log
-SET GLOBAL innodb_read_only_compressed=OFF;
---enable_query_log
-
-create table innodb_compressed(c1 int, b char(20)) engine=innodb row_format=compressed key_block_size=8;
-show warnings;
-create table innodb_normal (c1 int, b char(20)) engine=innodb;
-show warnings;
-create table innodb_page_compressed1 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=1;
-show warnings;
-show create table innodb_page_compressed1;
-create table innodb_page_compressed2 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=2;
-show warnings;
-show create table innodb_page_compressed2;
-create table innodb_page_compressed3 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=3;
-show warnings;
-show create table innodb_page_compressed3;
-create table innodb_page_compressed4 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=4;
-show warnings;
-show create table innodb_page_compressed4;
-create table innodb_page_compressed5 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=5;
-show warnings;
-show create table innodb_page_compressed5;
-create table innodb_page_compressed6 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=6;
-show warnings;
-show create table innodb_page_compressed6;
-create table innodb_page_compressed7 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=7;
-show warnings;
-show create table innodb_page_compressed7;
-create table innodb_page_compressed8 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=8;
-show warnings;
-show create table innodb_page_compressed8;
-create table innodb_page_compressed9 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=9;
-show warnings;
-show create table innodb_page_compressed9;
-delimiter //;
-create procedure innodb_insert_proc (repeat_count int)
-begin
- declare current_num int;
- set current_num = 0;
- while current_num < repeat_count do
- insert into innodb_normal values(current_num,'testing..');
- set current_num = current_num + 1;
- end while;
-end//
-delimiter ;//
-commit;
-
-set autocommit=0;
-call innodb_insert_proc(5000);
-commit;
-set autocommit=1;
-select count(*) from innodb_normal;
-insert into innodb_compressed select * from innodb_normal;
-insert into innodb_page_compressed1 select * from innodb_normal;
-insert into innodb_page_compressed2 select * from innodb_normal;
-insert into innodb_page_compressed3 select * from innodb_normal;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-insert into innodb_page_compressed7 select * from innodb_normal;
-insert into innodb_page_compressed8 select * from innodb_normal;
-insert into innodb_page_compressed9 select * from innodb_normal;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-alter table innodb_normal page_compressed=1 page_compression_level=8,
-algorithm=instant;
-show warnings;
-show create table innodb_normal;
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
-alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
-show warnings;
-show create table innodb_compressed;
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-# none
-set global innodb_compression_algorithm = 0;
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-commit;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
---source include/restart_mysqld.inc
-
-update innodb_page_compressed1 set c1 = c1 + 1;
-update innodb_page_compressed2 set c1 = c1 + 1;
-update innodb_page_compressed3 set c1 = c1 + 1;
-update innodb_page_compressed4 set c1 = c1 + 1;
-update innodb_page_compressed5 set c1 = c1 + 1;
-update innodb_page_compressed6 set c1 = c1 + 1;
-update innodb_page_compressed7 set c1 = c1 + 1;
-update innodb_page_compressed8 set c1 = c1 + 1;
-update innodb_page_compressed9 set c1 = c1 + 1;
-select count(*) from innodb_compressed;
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed1 where c1 < 500000;
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_compressed;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
diff --git a/mysql-test/suite/innodb/t/innodb-table-online.test b/mysql-test/suite/innodb/t/innodb-table-online.test
index 86d9cfdb2b4..03f4b58ab73 100644
--- a/mysql-test/suite/innodb/t/innodb-table-online.test
+++ b/mysql-test/suite/innodb/t/innodb-table-online.test
@@ -101,7 +101,6 @@ SET DEBUG_SYNC = 'now WAIT_FOR scanned';
eval $innodb_metrics_select;
# Insert a duplicate entry (4) for the already started UNIQUE INDEX(c1).
-BEGIN;
INSERT INTO t1 VALUES(4,7,2);
SET DEBUG_SYNC = 'now SIGNAL insert_done';
@@ -111,7 +110,7 @@ connection con1;
# error on the (4,7,2).
--error ER_DUP_ENTRY
reap;
-
+DELETE FROM t1 WHERE c1=4 and c2=7;
connection default;
ROLLBACK;
@@ -204,17 +203,11 @@ UPDATE t1 SET c2 = c2 + 1;
# At this point, the clustered index scan must have completed,
# but the modification log keeps accumulating due to the DEBUG_SYNC.
eval $innodb_metrics_select;
-let $c= 3;
+let $c= 8;
while ($c)
{
- BEGIN;
- DELETE FROM t1;
- ROLLBACK;
UPDATE t1 SET c2 = c2 + 1;
- BEGIN;
- UPDATE t1 SET c2 = c2 + 1;
- DELETE FROM t1;
- ROLLBACK;
+ UPDATE t1 SET c2 = c2 + 2;
dec $c;
}
# Temporary table should exist until the DDL thread notices the overflow.
@@ -279,11 +272,8 @@ eval $innodb_metrics_select;
BEGIN;
INSERT INTO t1 SELECT 320 + c1, c2, c3 FROM t1 WHERE c1 > 240;
DELETE FROM t1 WHERE c1 > 320;
-ROLLBACK;
-BEGIN;
UPDATE t1 SET c2 = c2 + 1;
-DELETE FROM t1;
-ROLLBACK;
+COMMIT;
eval $innodb_metrics_select;
# Release con1.
SET DEBUG_SYNC = 'now SIGNAL dml3_done';
@@ -346,16 +336,13 @@ SET DEBUG_SYNC = 'now WAIT_FOR c3p5_created0';
BEGIN;
INSERT INTO t1 VALUES(347,33101,'Pikku kakkosen posti','YLETV2');
INSERT INTO t1 VALUES(33101,347,NULL,'');
+COMMIT;
SET DEBUG_SYNC = 'now SIGNAL ins_done0';
connection con1;
---error WARN_DATA_TRUNCATED
+--error ER_INVALID_USE_OF_NULL
reap;
-
-connection default;
-ROLLBACK;
-
-connection con1;
+DELETE FROM t1 WHERE c1= 347 and c22f = 33101;
ALTER TABLE t1 MODIFY c3 CHAR(255) NOT NULL;
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL c3p5_created WAIT_FOR ins_done';
diff --git a/mysql-test/suite/innodb/t/innodb_page_compressed.combinations b/mysql-test/suite/innodb/t/innodb_page_compressed.combinations
new file mode 100644
index 00000000000..f3caab14af3
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_page_compressed.combinations
@@ -0,0 +1,6 @@
+[bzip2]
+[lz4]
+[lzma]
+[lzo]
+[snappy]
+[zlib]
diff --git a/mysql-test/suite/innodb/t/innodb_page_compressed.test b/mysql-test/suite/innodb/t/innodb_page_compressed.test
new file mode 100644
index 00000000000..74cd33e2aa5
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_page_compressed.test
@@ -0,0 +1,86 @@
+-- source include/have_innodb.inc
+
+SET @save_algorithm = @@GLOBAL.innodb_compression_algorithm;
+let $alg=`select regexp_replace('$MTR_COMBINATIONS', 'innodb,\|,innodb', '')`;
+
+if (!`select '$alg' = 'zlib'`)
+{
+ if (!`SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_have_$alg' AND variable_value = 'ON'`)
+ {
+ --skip Test requires InnoDB compiled with $alg
+ }
+ --disable_query_log
+ eval SET GLOBAL innodb_compression_algorithm=$alg;
+ --enable_query_log
+}
+
+create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
+create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
+create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
+create table innodb_page_compressed3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
+create table innodb_page_compressed4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
+create table innodb_page_compressed5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
+create table innodb_page_compressed6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
+create table innodb_page_compressed7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
+create table innodb_page_compressed8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
+create table innodb_page_compressed9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
+
+connect (prevent_purge,localhost,root);
+START TRANSACTION WITH CONSISTENT SNAPSHOT;
+connection default;
+
+begin;
+insert into innodb_normal SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed1 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed2 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed3 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed4 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed5 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed6 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed7 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed8 SET b=REPEAT('Aa',50);
+insert into innodb_page_compressed9 SET b=REPEAT('Aa',50);
+commit;
+
+FLUSH TABLES innodb_normal,
+innodb_page_compressed1, innodb_page_compressed2, innodb_page_compressed3,
+innodb_page_compressed4, innodb_page_compressed5, innodb_page_compressed6,
+innodb_page_compressed7, innodb_page_compressed8, innodb_page_compressed9
+FOR EXPORT;
+
+--let $MYSQLD_DATADIR=`select @@datadir`
+--let SEARCH_PATTERN=AaAaAaAa
+--let SEARCH_FILE=$MYSQLD_DATADIR/test/innodb_normal.ibd
+--source include/search_pattern_in_file.inc
+--let SEARCH_FILE=$MYSQLD_DATADIR/test/innodb_page_compressed1.ibd
+--source include/search_pattern_in_file.inc
+--let SEARCH_FILE=$MYSQLD_DATADIR/test/innodb_page_compressed2.ibd
+--source include/search_pattern_in_file.inc
+--let SEARCH_FILE=$MYSQLD_DATADIR/test/innodb_page_compressed3.ibd
+--source include/search_pattern_in_file.inc
+--let SEARCH_FILE=$MYSQLD_DATADIR/test/innodb_page_compressed4.ibd
+--source include/search_pattern_in_file.inc
+--let SEARCH_FILE=$MYSQLD_DATADIR/test/innodb_page_compressed5.ibd
+--source include/search_pattern_in_file.inc
+--let SEARCH_FILE=$MYSQLD_DATADIR/test/innodb_page_compressed6.ibd
+--source include/search_pattern_in_file.inc
+--let SEARCH_FILE=$MYSQLD_DATADIR/test/innodb_page_compressed7.ibd
+--source include/search_pattern_in_file.inc
+--let SEARCH_FILE=$MYSQLD_DATADIR/test/innodb_page_compressed8.ibd
+--source include/search_pattern_in_file.inc
+--let SEARCH_FILE=$MYSQLD_DATADIR/test/innodb_page_compressed9.ibd
+--source include/search_pattern_in_file.inc
+
+UNLOCK TABLES;
+
+drop table innodb_normal;
+drop table innodb_page_compressed1;
+drop table innodb_page_compressed2;
+drop table innodb_page_compressed3;
+drop table innodb_page_compressed4;
+drop table innodb_page_compressed5;
+drop table innodb_page_compressed6;
+drop table innodb_page_compressed7;
+drop table innodb_page_compressed8;
+drop table innodb_page_compressed9;
+SET GLOBAL innodb_compression_algorithm=@save_algorithm;
diff --git a/mysql-test/suite/innodb/t/insert_into_empty_debug.test b/mysql-test/suite/innodb/t/insert_into_empty_debug.test
new file mode 100644
index 00000000000..4d2b99bd554
--- /dev/null
+++ b/mysql-test/suite/innodb/t/insert_into_empty_debug.test
@@ -0,0 +1,36 @@
+--source include/have_innodb.inc
+--source include/have_debug.inc
+--source include/have_debug_sync.inc
+
+# Encounter aborted online index during rollback of bulk insert
+
+CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
+ PRIMARY KEY(f1))ENGINE=InnoDB;
+INSERT INTO t1 VALUES(1, 2), (2, 2);
+
+SET DEBUG_SYNC="innodb_rollback_inplace_alter_table SIGNAL dml_start WAIT_FOR dml_commit";
+send ALTER TABLE t1 ADD UNIQUE KEY(f2);
+
+connect(con1,localhost,root,,,);
+SET DEBUG_SYNC="now WAIT_FOR dml_start";
+BEGIN;
+DELETE FROM t1;
+SET DEBUG_SYNC="now SIGNAL dml_commit";
+
+connection default;
+--error ER_DUP_ENTRY
+reap;
+connection con1;
+COMMIT;
+TRUNCATE TABLE t1;
+SET unique_checks=0, foreign_key_checks=0;
+BEGIN;
+INSERT INTO t1 VALUES(1, 2);
+ROLLBACK;
+
+connection default;
+SELECT * FROM t1;
+SHOW CREATE TABLE t1;
+disconnect con1;
+DROP TABLE t1;
+SET DEBUG_SYNC=RESET;
diff --git a/mysql-test/suite/innodb/t/instant_alter_debug.test b/mysql-test/suite/innodb/t/instant_alter_debug.test
index f102185c27f..c6eca884907 100644
--- a/mysql-test/suite/innodb/t/instant_alter_debug.test
+++ b/mysql-test/suite/innodb/t/instant_alter_debug.test
@@ -303,7 +303,6 @@ ROLLBACK;
SET DEBUG_SYNC = 'now SIGNAL logged';
connection ddl;
---error ER_INVALID_USE_OF_NULL
reap;
disconnect ddl;
diff --git a/mysql-test/suite/innodb/t/online_table_rebuild.opt b/mysql-test/suite/innodb/t/online_table_rebuild.opt
new file mode 100644
index 00000000000..fa3418284bf
--- /dev/null
+++ b/mysql-test/suite/innodb/t/online_table_rebuild.opt
@@ -0,0 +1,2 @@
+--innodb_online_alter_log_max_size=64k
+--innodb_sort_buffer_size=64k
diff --git a/mysql-test/suite/innodb/t/online_table_rebuild.test b/mysql-test/suite/innodb/t/online_table_rebuild.test
new file mode 100644
index 00000000000..94bac2f949c
--- /dev/null
+++ b/mysql-test/suite/innodb/t/online_table_rebuild.test
@@ -0,0 +1,62 @@
+--source include/have_innodb.inc
+--source include/have_debug.inc
+--source include/have_sequence.inc
+
+CREATE TABLE t1(f1 INT NOT NULL, f2 CHAR(200), f3 CHAR(200))ENGINE=InnoDB;
+INSERT INTO t1 VALUES(3, "innodb", "alter log");
+
+# InnoDB fails with DUPLICATE KEY error in commit phase
+
+SET DEBUG_SYNC="inplace_after_index_build SIGNAL dml_start WAIT_FOR dml_commit";
+send ALTER TABLE t1 ADD PRIMARY KEY(f3(10)), ADD UNIQUE KEY(f2(10));
+CONNECT(con1,localhost,root,,,);
+SET DEBUG_SYNC="now WAIT_FOR dml_start";
+BEGIN;
+INSERT INTO t1 VALUES(1, repeat('b', 100), repeat('c', 100));
+INSERT INTO t1 VALUES(2, repeat('b', 100), repeat('a', 100));
+COMMIT;
+SET DEBUG_SYNC="now SIGNAL dml_commit";
+
+connection default;
+--error ER_DUP_ENTRY
+reap;
+
+# ONLINE_LOG_TOO_BIG error during commit phase
+
+connection default;
+
+SET DEBUG_SYNC="inplace_after_index_build SIGNAL dml_start WAIT_FOR dml_commit";
+SEND ALTER TABLE t1 ADD PRIMARY KEY(f1);
+
+connection con1;
+SET DEBUG_SYNC="now WAIT_FOR dml_start";
+INSERT INTO t1 SELECT 10, repeat('a', 100), repeat('b', 100) FROM seq_1_to_4800;
+SET DEBUG_SYNC="now SIGNAL dml_commit";
+
+connection default;
+--error ER_INNODB_ONLINE_LOG_TOO_BIG
+reap;
+DELETE FROM t1;
+INSERT INTO t1 VALUES(1, repeat('a', 100), repeat('b', 100));
+ALTER TABLE t1 ADD PRIMARY KEY(f1);
+
+# Update operation leads to duplicate key error
+
+set DEBUG_SYNC="innodb_inplace_alter_table_enter SIGNAL dml_start WAIT_FOR dml_commit";
+SEND ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(f3(10));
+
+connection con1;
+SET DEBUG_SYNC="now WAIT_FOR dml_start";
+BEGIN;
+INSERT INTO t1 VALUES(2, repeat('b', 100), repeat('c', 100));
+UPDATE t1 set f3=repeat('c', 100) where f1=1;
+COMMIT;
+SET DEBUG_SYNC="now SIGNAL dml_commit";
+
+connection default;
+--error ER_DUP_ENTRY
+reap;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+disconnect con1;
+SET DEBUG_SYNC=reset;
diff --git a/mysql-test/suite/innodb/t/row_size_error_log_warnings_3.test b/mysql-test/suite/innodb/t/row_size_error_log_warnings_3.test
index af6c15e0e6b..209c86a29b5 100644
--- a/mysql-test/suite/innodb/t/row_size_error_log_warnings_3.test
+++ b/mysql-test/suite/innodb/t/row_size_error_log_warnings_3.test
@@ -1,10 +1,14 @@
--source include/have_innodb.inc
+--source include/have_sequence.inc
+--source include/innodb_page_size_small.inc
call mtr.add_suppression("InnoDB: Cannot add field .* in table .* because after adding it, the row size is .* which is greater than maximum allowed size (.*) for a record on index leaf page.");
SET innodb_strict_mode = 0;
SET @@global.log_warnings = 3;
+# Check the Warning | 139 | Row size too large (> 16318)
+--replace_regex /> [0-9]+/> NNNN/
CREATE TABLE t1 (
col_1 TEXT
,col_2 TEXT
@@ -19,14 +23,65 @@ CREATE TABLE t1 (
,col_11 TEXT
) ENGINE=INNODB ROW_FORMAT=COMPACT;
--enable_warnings
+--replace_regex /> [0-9]+/> NNNN/
TRUNCATE TABLE t1;
+--replace_regex /> [0-9]+/> NNNN/
OPTIMIZE TABLE t1;
+--replace_regex /> [0-9]+/> NNNN/
ALTER TABLE t1 FORCE;
SET innodb_strict_mode = ON;
+--replace_regex /> [0-9]+/> NNNN/
TRUNCATE TABLE t1;
+--replace_regex /> [0-9]+/> NNNN/
OPTIMIZE TABLE t1;
+--replace_regex /> [0-9]+/> NNNN/
ALTER TABLE t1 FORCE;
DROP TABLE t1;
--disable_warnings
SET @@global.log_warnings = 2;
+
+--echo #
+--echo # MDEV-20194 Warnings inconsistently issued upon CHECK on
+--echo # table from older versions
+--echo #
+set global innodb_compression_level=1;
+CREATE TABLE t1(
+ f1 INT, f2 CHAR(200), f3 CHAR(200),
+ f4 CHAR(200), f5 CHAR(200), f6 CHAR(200),
+ f7 CHAR(200), f8 CHAR(200), f9 CHAR(200),
+ f10 CHAR(200), PRIMARY KEY(f1, f2(20), f3(20), f4(20))
+ ) ROW_FORMAT=COMPRESSED, ENGINE=InnoDB;
+
+INSERT INTO t1 SELECT seq, repeat('a', 200), repeat('b', 200),
+ repeat('c', 200), repeat('d', 200),
+ repeat('d', 200), repeat('e', 200),
+ repeat('e', 200), repeat('f', 200),
+ repeat('g', 200) FROM seq_1_to_20;
+DROP TABLE t1;
+set global innodb_compression_level=default;
+
+# Maximum field in the index
+
+--error ER_TOO_MANY_KEY_PARTS
+CREATE TABLE t1(f1 char(200), f2 char(200), f3 char(200),
+ f4 char(200), f5 char(200), f6 char(200),
+ f7 char(200), f8 char(200), f9 char(200),
+ f10 char(200), f11 char(200), f12 char(200),
+ f13 char(200), f14 char(200), f15 char(200),
+ f16 char(200), f17 char(200), f18 char(200),
+ f19 char(200), f20 char(200), f21 char(200),
+ f22 char(200), f23 char(200), f24 char(200),
+ f25 char(200), f26 char(200), f27 char(200),
+ f28 char(200), f29 char(200), f30 char(200),
+ f31 char(200), f32 char(200), f33 char(200),
+ primary key(f1(10), f2(10), f3(10), f4(10),
+ f5(10), f6(10), f7(10), f8(10),
+ f9(10), f10(10), f11(10), f12(10),
+ f13(10), f14(10), f15(10), f16(10),
+ f17(10), f18(10), f19(10), f20(10),
+ f21(10), f22(10), f23(10), f24(10),
+ f25(10), f26(10), f27(10), f28(10),
+ f29(10), f30(10), f31(10), f32(10),
+ f33(10)))
+ ENGINE=InnoDB;
diff --git a/mysql-test/suite/innodb/t/stat_tables.test b/mysql-test/suite/innodb/t/stat_tables.test
index 68344b3f425..dd18c265e99 100644
--- a/mysql-test/suite/innodb/t/stat_tables.test
+++ b/mysql-test/suite/innodb/t/stat_tables.test
@@ -15,3 +15,17 @@ select * from t1;
drop table t1;
rename table mysql.table_stats_save to mysql.table_stats;
flush tables;
+
+--echo #
+--echo # MDEV-26753 Assertion state == TRX_STATE_PREPARED ||... failed
+--echo #
+CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB;
+XA START 'test';
+SELECT COUNT(*)>0 FROM mysql.innodb_index_stats LOCK IN SHARE MODE;
+INSERT INTO t1 VALUES (1),(2);
+UPDATE mysql.innodb_table_stats SET last_update=NULL WHERE table_name='t1';
+XA END 'test';
+XA ROLLBACK 'test';
+DROP TABLE t1;
+
+--echo # End of 10.6 tests
diff --git a/mysql-test/suite/innodb/t/table_definition_cache_debug.test b/mysql-test/suite/innodb/t/table_definition_cache_debug.test
index 6a466af4cc5..8950691e05c 100644
--- a/mysql-test/suite/innodb/t/table_definition_cache_debug.test
+++ b/mysql-test/suite/innodb/t/table_definition_cache_debug.test
@@ -29,6 +29,7 @@ SET DEBUG_SYNC = 'now WAIT_FOR scanned';
# and then hogs the table lock, so that the unique index cannot be dropped.
BEGIN;
INSERT INTO to_be_evicted VALUES(3, 2);
+COMMIT;
SET DEBUG_SYNC = 'now SIGNAL got_duplicate';
connection ddl;
diff --git a/mysql-test/suite/innodb_fts/r/misc_debug.result b/mysql-test/suite/innodb_fts/r/misc_debug.result
index 2a2afacb052..f40ed1fe9c3 100644
--- a/mysql-test/suite/innodb_fts/r/misc_debug.result
+++ b/mysql-test/suite/innodb_fts/r/misc_debug.result
@@ -65,3 +65,12 @@ ERROR HY000: Got error -1 "Internal error < 0 (Not system error)" from storage e
SET debug_dbug=@saved_debug_dbug;
DROP TABLE t1;
# End of 10.3 tests
+CREATE TABLE t1(f1 INT NOT NULL, f2 CHAR(100))ENGINE=InnoDB;
+SET DEBUG_DBUG="+d,stats_lock_fail";
+ALTER TABLE t1 ADD FULLTEXT(f2);
+ERROR HY000: Got error 15 "Block device required" from storage engine InnoDB
+SET DEBUG_DBUG="-d,stats_lock_fail";
+ALTER TABLE t1 DISCARD TABLESPACE;
+ALTER TABLE t1 ADD FULLTEXT(f2);
+ERROR HY000: Tablespace has been discarded for table `t1`
+DROP TABLE t1;
diff --git a/mysql-test/suite/innodb_fts/t/misc_debug.test b/mysql-test/suite/innodb_fts/t/misc_debug.test
index 84da1320264..6ab980a3948 100644
--- a/mysql-test/suite/innodb_fts/t/misc_debug.test
+++ b/mysql-test/suite/innodb_fts/t/misc_debug.test
@@ -95,3 +95,15 @@ TRUNCATE t1;
SET debug_dbug=@saved_debug_dbug;
DROP TABLE t1;
--echo # End of 10.3 tests
+
+# Fulltext fails in commit phase
+
+CREATE TABLE t1(f1 INT NOT NULL, f2 CHAR(100))ENGINE=InnoDB;
+SET DEBUG_DBUG="+d,stats_lock_fail";
+--error ER_GET_ERRNO
+ALTER TABLE t1 ADD FULLTEXT(f2);
+SET DEBUG_DBUG="-d,stats_lock_fail";
+ALTER TABLE t1 DISCARD TABLESPACE;
+--error ER_TABLESPACE_DISCARDED
+ALTER TABLE t1 ADD FULLTEXT(f2);
+DROP TABLE t1;
diff --git a/mysql-test/suite/json/r/json_table.result b/mysql-test/suite/json/r/json_table.result
index 30c2c8bde50..8359d6b8a39 100644
--- a/mysql-test/suite/json/r/json_table.result
+++ b/mysql-test/suite/json/r/json_table.result
@@ -985,5 +985,15 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
)
) AS jt' at line 3
#
+# MDEV-27690 Crash on `CHARACTER SET csname COLLATE DEFAULT` in column definition
+#
+SELECT * FROM json_table('[{"name":"Jeans"}]', '$[*]'
+ COLUMNS(
+name VARCHAR(10) CHARACTER SET latin1 COLLATE DEFAULT PATH '$.name'
+ )
+) AS jt;
+name
+Jeans
+#
# End of 10.6 tests
#
diff --git a/mysql-test/suite/json/t/json_table.test b/mysql-test/suite/json/t/json_table.test
index 2867c5f89d0..dbb9f43ab17 100644
--- a/mysql-test/suite/json/t/json_table.test
+++ b/mysql-test/suite/json/t/json_table.test
@@ -843,5 +843,16 @@ SELECT * FROM json_table('[{"name":"str"}]', '$[*]'
--echo #
+--echo # MDEV-27690 Crash on `CHARACTER SET csname COLLATE DEFAULT` in column definition
+--echo #
+
+SELECT * FROM json_table('[{"name":"Jeans"}]', '$[*]'
+ COLUMNS(
+ name VARCHAR(10) CHARACTER SET latin1 COLLATE DEFAULT PATH '$.name'
+ )
+) AS jt;
+
+
+--echo #
--echo # End of 10.6 tests
--echo #
diff --git a/mysql-test/suite/maria/maria.result b/mysql-test/suite/maria/maria.result
index ad714f26fb6..3bcb80060f0 100644
--- a/mysql-test/suite/maria/maria.result
+++ b/mysql-test/suite/maria/maria.result
@@ -2893,3 +2893,17 @@ key(c, a), unique(b)
partition by hash (b);
replace into t1 values (1, 0, 0), (2, 0, 0), (0, 0, 0);
drop table t1;
+#
+# MDEV-28269 Assertion `save_errno' in maria_write or ER_GET_ERRNO
+#
+connect session1,localhost,root,,;
+SET big_tables= on;
+Warnings:
+Warning 1287 '@@big_tables' is deprecated and will be removed in a future release
+SET NAMES 'sjis';
+SELECT 'למטה' AS a UNION SELECT 'Wetter' AS a;
+a
+למט×?
+Wetter
+connection default;
+disconnect session1;
diff --git a/mysql-test/suite/maria/maria.test b/mysql-test/suite/maria/maria.test
index 8e617eebc62..119d005dc72 100644
--- a/mysql-test/suite/maria/maria.test
+++ b/mysql-test/suite/maria/maria.test
@@ -1437,7 +1437,7 @@ CREATE TABLE t1 (
) ENGINE=aria DEFAULT CHARSET=utf8 PACK_KEYS=0;
let $MYSQLD_DATADIR= `select @@datadir`;
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
---exec $MARIA_CHK -d $MYSQLD_DATADIR/test/t1
+--exec $MARIA_CHK -d --ignore-control-file $MYSQLD_DATADIR/test/t1
DROP TABLE t1;
# Test warnings with transactional=1 with MyISAM
@@ -2112,3 +2112,14 @@ partition by hash (b);
replace into t1 values (1, 0, 0), (2, 0, 0), (0, 0, 0);
# cleanup
drop table t1;
+
+--echo #
+--echo # MDEV-28269 Assertion `save_errno' in maria_write or ER_GET_ERRNO
+--echo #
+
+connect (session1,localhost,root,,);
+SET big_tables= on;
+SET NAMES 'sjis';
+SELECT 'למטה' AS a UNION SELECT 'Wetter' AS a;
+connection default;
+disconnect session1;
diff --git a/mysql-test/suite/mariabackup/log_copy_interval.result b/mysql-test/suite/mariabackup/log_copy_interval.result
new file mode 100644
index 00000000000..678fc6cc0a2
--- /dev/null
+++ b/mysql-test/suite/mariabackup/log_copy_interval.result
@@ -0,0 +1,2 @@
+# xtrabackup backup
+NOT FOUND /sleep_after_waiting_for_lsn\n(\[\d+\] \d+-\d+-\d+ \d+:\d+:\d+ >> log scanned up to \(\d+\)\n){2}/ in backup.log
diff --git a/mysql-test/suite/mariabackup/log_copy_interval.test b/mysql-test/suite/mariabackup/log_copy_interval.test
new file mode 100644
index 00000000000..5ea09c53066
--- /dev/null
+++ b/mysql-test/suite/mariabackup/log_copy_interval.test
@@ -0,0 +1,18 @@
+--source include/have_debug.inc
+
+echo # xtrabackup backup;
+let $targetdir=$MYSQLTEST_VARDIR/tmp/backup;
+--let $backup_log=$MYSQLTEST_VARDIR/tmp/backup.log
+
+--let sleep_after_waiting_for_lsn=250
+--disable_result_log
+exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir --log-copy-interval=500 --dbug=+d,mariabackup_inject_code > $backup_log 2>&1;
+--enable_result_log
+
+--let SEARCH_PATTERN=sleep_after_waiting_for_lsn\n(\[\d+\] \d+-\d+-\d+ \d+:\d+:\d+ >> log scanned up to \(\d+\)\n){2}
+--let SEARCH_FILE=$backup_log
+--source include/search_pattern_in_file.inc
+--remove_file $backup_log
+
+rmdir $targetdir;
+
diff --git a/mysql-test/suite/parts/inc/part_alter_values.inc b/mysql-test/suite/parts/inc/part_alter_values.inc
index ac69169a9ca..2f16476c78b 100644
--- a/mysql-test/suite/parts/inc/part_alter_values.inc
+++ b/mysql-test/suite/parts/inc/part_alter_values.inc
@@ -36,12 +36,43 @@ ALTER TABLE t1 REORGANIZE PARTITION p1 INTO
);
DROP TABLE t1;
-#
-# MDEV-15456 Server crashes upon adding or dropping a partition in ALTER under LOCK TABLE after ER_SAME_NAME_PARTITION
-#
+--echo #
+--echo # MDEV-15456 Server crashes upon adding or dropping a partition in ALTER under LOCK TABLE after ER_SAME_NAME_PARTITION
+--echo #
--eval create table t1 (i int) engine=$engine partition by range(i) (partition p0 values less than (10))
lock table t1 write;
--error ER_SAME_NAME_PARTITION
alter table t1 add partition (partition p0 values less than (20));
alter table t1 add partition (partition p1 values less than (20)) /* comment */;
drop table t1;
+
+--echo #
+--echo # MDEV-27065 Partitioning tables with custom data directories moves data back to default directory
+--echo #
+
+--mkdir $MYSQLTEST_VARDIR/tmp/mdev_27065
+
+--disable_query_log
+--eval CREATE TABLE t1 (id INT) ENGINE=$engine DATA DIRECTORY='$MYSQLTEST_VARDIR/tmp/mdev_27065'
+--enable_query_log
+ALTER TABLE t1 PARTITION BY RANGE(id)(
+ PARTITION p0 VALUES LESS THAN (1000),
+ PARTITION p1 VALUES LESS THAN MAXVALUE
+);
+DROP TABLE t1;
+
+# InnoDB doesn't support INDEX DIRECTORY.
+if (`SELECT IF('$engine' != 'InnoDB', 1, 0)`)
+{
+ --disable_query_log
+ --eval CREATE TABLE t2 (id INT) ENGINE=$engine INDEX DIRECTORY='$MYSQLTEST_VARDIR/tmp/mdev_27065'
+ --enable_query_log
+ ALTER TABLE t2 PARTITION BY RANGE(id)(
+ PARTITION p0 VALUES LESS THAN (1000),
+ PARTITION p1 VALUES LESS THAN MAXVALUE
+ );
+ DROP TABLE t2;
+}
+
+--remove_files_wildcard $MYSQLTEST_VARDIR/tmp/mdev_27065 *
+--rmdir $MYSQLTEST_VARDIR/tmp/mdev_27065
diff --git a/mysql-test/suite/parts/r/partition_alter_innodb.result b/mysql-test/suite/parts/r/partition_alter_innodb.result
index fad8434989f..33429980737 100644
--- a/mysql-test/suite/parts/r/partition_alter_innodb.result
+++ b/mysql-test/suite/parts/r/partition_alter_innodb.result
@@ -42,6 +42,9 @@ PARTITION p3 VALUES IN (4,5,6)
);
ERROR HY000: Syntax error: LIST PARTITIONING requires definition of VALUES IN for each partition
DROP TABLE t1;
+#
+# MDEV-15456 Server crashes upon adding or dropping a partition in ALTER under LOCK TABLE after ER_SAME_NAME_PARTITION
+#
create table t1 (i int) engine=InnoDB partition by range(i) (partition p0 values less than (10));
lock table t1 write;
alter table t1 add partition (partition p0 values less than (20));
@@ -49,6 +52,16 @@ ERROR HY000: Duplicate partition name p0
alter table t1 add partition (partition p1 values less than (20)) /* comment */;
drop table t1;
#
+# MDEV-27065 Partitioning tables with custom data directories moves data back to default directory
+#
+ALTER TABLE t1 PARTITION BY RANGE(id)(
+PARTITION p0 VALUES LESS THAN (1000),
+PARTITION p1 VALUES LESS THAN MAXVALUE
+);
+Warnings:
+Warning 1618 <DATA DIRECTORY> table option of old schema is ignored
+DROP TABLE t1;
+#
# MDEV-28079 Shutdown hangs after altering innodb partition fts table
#
CREATE TABLE t1(f1 INT, f2 CHAR(100))ENGINE=InnoDB PARTITION BY HASH(f1) PARTITIONS 2;
diff --git a/mysql-test/suite/parts/r/partition_alter_maria.result b/mysql-test/suite/parts/r/partition_alter_maria.result
index 77f511d9b3b..358ffbdfbe7 100644
--- a/mysql-test/suite/parts/r/partition_alter_maria.result
+++ b/mysql-test/suite/parts/r/partition_alter_maria.result
@@ -69,9 +69,29 @@ PARTITION p3 VALUES IN (4,5,6)
);
ERROR HY000: Syntax error: LIST PARTITIONING requires definition of VALUES IN for each partition
DROP TABLE t1;
+#
+# MDEV-15456 Server crashes upon adding or dropping a partition in ALTER under LOCK TABLE after ER_SAME_NAME_PARTITION
+#
create table t1 (i int) engine=Aria partition by range(i) (partition p0 values less than (10));
lock table t1 write;
alter table t1 add partition (partition p0 values less than (20));
ERROR HY000: Duplicate partition name p0
alter table t1 add partition (partition p1 values less than (20)) /* comment */;
drop table t1;
+#
+# MDEV-27065 Partitioning tables with custom data directories moves data back to default directory
+#
+ALTER TABLE t1 PARTITION BY RANGE(id)(
+PARTITION p0 VALUES LESS THAN (1000),
+PARTITION p1 VALUES LESS THAN MAXVALUE
+);
+Warnings:
+Warning 1618 <DATA DIRECTORY> table option of old schema is ignored
+DROP TABLE t1;
+ALTER TABLE t2 PARTITION BY RANGE(id)(
+PARTITION p0 VALUES LESS THAN (1000),
+PARTITION p1 VALUES LESS THAN MAXVALUE
+);
+Warnings:
+Warning 1618 <INDEX DIRECTORY> table option of old schema is ignored
+DROP TABLE t2;
diff --git a/mysql-test/suite/parts/r/partition_alter_myisam.result b/mysql-test/suite/parts/r/partition_alter_myisam.result
index ce3e04d6c97..9d76881fdfa 100644
--- a/mysql-test/suite/parts/r/partition_alter_myisam.result
+++ b/mysql-test/suite/parts/r/partition_alter_myisam.result
@@ -42,12 +42,32 @@ PARTITION p3 VALUES IN (4,5,6)
);
ERROR HY000: Syntax error: LIST PARTITIONING requires definition of VALUES IN for each partition
DROP TABLE t1;
+#
+# MDEV-15456 Server crashes upon adding or dropping a partition in ALTER under LOCK TABLE after ER_SAME_NAME_PARTITION
+#
create table t1 (i int) engine=MyISAM partition by range(i) (partition p0 values less than (10));
lock table t1 write;
alter table t1 add partition (partition p0 values less than (20));
ERROR HY000: Duplicate partition name p0
alter table t1 add partition (partition p1 values less than (20)) /* comment */;
drop table t1;
+#
+# MDEV-27065 Partitioning tables with custom data directories moves data back to default directory
+#
+ALTER TABLE t1 PARTITION BY RANGE(id)(
+PARTITION p0 VALUES LESS THAN (1000),
+PARTITION p1 VALUES LESS THAN MAXVALUE
+);
+Warnings:
+Warning 1618 <DATA DIRECTORY> table option of old schema is ignored
+DROP TABLE t1;
+ALTER TABLE t2 PARTITION BY RANGE(id)(
+PARTITION p0 VALUES LESS THAN (1000),
+PARTITION p1 VALUES LESS THAN MAXVALUE
+);
+Warnings:
+Warning 1618 <INDEX DIRECTORY> table option of old schema is ignored
+DROP TABLE t2;
create table t1 ( c1 int, c2 int, c3 varchar(100)) delay_key_write=1
partition by key(c1) (
partition p01 data directory = 'MYSQL_TMP_DIR'
diff --git a/mysql-test/suite/rpl/r/rpl_binlog_rollback_cleanup.result b/mysql-test/suite/rpl/r/rpl_binlog_rollback_cleanup.result
index 90446776e5b..c434b91f191 100644
--- a/mysql-test/suite/rpl/r/rpl_binlog_rollback_cleanup.result
+++ b/mysql-test/suite/rpl/r/rpl_binlog_rollback_cleanup.result
@@ -3,7 +3,7 @@ include/master-slave.inc
connection master;
SET GLOBAL max_binlog_cache_size = 65536;
CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=INNODB;
-ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage
+ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mariadbd variable and try again
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
DROP TABLE t1;
include/rpl_end.inc
diff --git a/mysql-test/suite/sys_vars/r/tmp_disk_table_size_basic.result b/mysql-test/suite/sys_vars/r/tmp_disk_table_size_basic.result
index 0acf8428100..81453d72274 100644
--- a/mysql-test/suite/sys_vars/r/tmp_disk_table_size_basic.result
+++ b/mysql-test/suite/sys_vars/r/tmp_disk_table_size_basic.result
@@ -142,5 +142,17 @@ SELECT global.tmp_disk_table_size;
ERROR 42S02: Unknown table 'global' in field list
SELECT tmp_disk_table_size = @@session.tmp_disk_table_size;
ERROR 42S22: Unknown column 'tmp_disk_table_size' in 'field list'
+#
+# Beginning of 10.4 test
+#
+# Diagnostics_area::sql_errno() const: Assertion `m_status == DA_ERROR'
+# failed on SELECT after setting tmp_disk_table_size.
+#
+SET @@tmp_disk_table_size=16384;
+CREATE VIEW v AS SELECT 'a';
+SELECT table_name FROM INFORMATION_SCHEMA.views;
+ERROR HY000: The table '(temporary)' is full
+DROP VIEW v;
+# End of 10.4 test
SET @@global.tmp_disk_table_size = @start_global_value;
SET @@session.tmp_disk_table_size = @start_session_value;
diff --git a/mysql-test/suite/sys_vars/t/tmp_disk_table_size_basic.test b/mysql-test/suite/sys_vars/t/tmp_disk_table_size_basic.test
index 123f522a3a4..099be354486 100644
--- a/mysql-test/suite/sys_vars/t/tmp_disk_table_size_basic.test
+++ b/mysql-test/suite/sys_vars/t/tmp_disk_table_size_basic.test
@@ -193,6 +193,22 @@ SELECT global.tmp_disk_table_size;
--Error ER_BAD_FIELD_ERROR
SELECT tmp_disk_table_size = @@session.tmp_disk_table_size;
+--echo #
+--echo # Beginning of 10.4 test
+--echo #
+--echo # Diagnostics_area::sql_errno() const: Assertion `m_status == DA_ERROR'
+--echo # failed on SELECT after setting tmp_disk_table_size.
+--echo #
+
+SET @@tmp_disk_table_size=16384;
+CREATE VIEW v AS SELECT 'a';
+
+--error ER_RECORD_FILE_FULL
+SELECT table_name FROM INFORMATION_SCHEMA.views;
+
+DROP VIEW v;
+
+--echo # End of 10.4 test
####################################
# Restore initial value #
diff --git a/mysql-test/suite/sysschema/r/pr_table_exists.result b/mysql-test/suite/sysschema/r/pr_table_exists.result
index 459ad1639e7..83db569eecf 100644
--- a/mysql-test/suite/sysschema/r/pr_table_exists.result
+++ b/mysql-test/suite/sysschema/r/pr_table_exists.result
@@ -1,20 +1,37 @@
-DROP TABLE IF EXISTS t1, t2;
-DROP VIEW IF EXISTS v_t1;
CREATE TABLE t1 (id INT PRIMARY KEY);
-CREATE view v_t1 AS SELECT * FROM t1;
CALL sys.table_exists('test', 't1', @exists);
SELECT @exists;
@exists
BASE TABLE
+DROP TABLE t1;
+CREATE view v_t1 AS SELECT 1;
CALL sys.table_exists('test', 'v_t1', @exists);
SELECT @exists;
@exists
VIEW
+DROP VIEW v_t1;
+CREATE TABLE tv (i int) with system versioning;
+CALL sys.table_exists('test','tv',@exists);
+SELECT @exists;
+@exists
+BASE TABLE
+DROP TABLE tv;
+CREATE SEQUENCE s;
+CALL sys.table_exists('test','s',@exists);
+SELECT @exists;
+@exists
+SEQUENCE
+DROP SEQUENCE s;
CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
CALL sys.table_exists('test', 't1', @exists);
SELECT @exists;
@exists
TEMPORARY
+DROP TEMPORARY TABLE t1;
+CALL sys.table_exists('information_schema', 'all_plugins', @exists);
+SELECT @exists;
+@exists
+SYSTEM VIEW
CALL sys.table_exists('test', 't2', @exists);
SELECT @exists;
@exists
@@ -24,7 +41,4 @@ CALL sys.table_exists(@identifier, 't1', @exists);
ERROR 22001: Data too long for column 'in_db' at row 1
CALL sys.table_exists('test', @identifier, @exists);
ERROR 22001: Data too long for column 'in_table' at row 0
-DROP TEMPORARY TABLE t1;
-DROP TABLE t1;
-DROP VIEW v_t1;
SET @identifier := NULL;
diff --git a/mysql-test/suite/sysschema/t/pr_table_exists.test b/mysql-test/suite/sysschema/t/pr_table_exists.test
index 06226510d32..d0c538843b1 100644
--- a/mysql-test/suite/sysschema/t/pr_table_exists.test
+++ b/mysql-test/suite/sysschema/t/pr_table_exists.test
@@ -1,25 +1,36 @@
-- source include/not_embedded.inc
---disable_warnings
-DROP TABLE IF EXISTS t1, t2;
-DROP VIEW IF EXISTS v_t1;
---enable_warnings
# Create a base table and a view
CREATE TABLE t1 (id INT PRIMARY KEY);
-CREATE view v_t1 AS SELECT * FROM t1;
-
# Verify the base table and view is supported
CALL sys.table_exists('test', 't1', @exists);
SELECT @exists;
+DROP TABLE t1;
+CREATE view v_t1 AS SELECT 1;
CALL sys.table_exists('test', 'v_t1', @exists);
SELECT @exists;
+DROP VIEW v_t1;
+
+CREATE TABLE tv (i int) with system versioning;
+CALL sys.table_exists('test','tv',@exists);
+SELECT @exists;
+DROP TABLE tv;
+
+CREATE SEQUENCE s;
+CALL sys.table_exists('test','s',@exists);
+SELECT @exists;
+DROP SEQUENCE s;
# Replace the base table with a temporary table
CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
CALL sys.table_exists('test', 't1', @exists);
SELECT @exists;
+DROP TEMPORARY TABLE t1;
+
+CALL sys.table_exists('information_schema', 'all_plugins', @exists);
+SELECT @exists;
# Try a non-existing table
CALL sys.table_exists('test', 't2', @exists);
@@ -34,8 +45,4 @@ CALL sys.table_exists(@identifier, 't1', @exists);
-- error 1406
CALL sys.table_exists('test', @identifier, @exists);
-# Clean up
-DROP TEMPORARY TABLE t1;
-DROP TABLE t1;
-DROP VIEW v_t1;
SET @identifier := NULL;
diff --git a/mysql-test/suite/vcol/r/vcol_syntax.result b/mysql-test/suite/vcol/r/vcol_syntax.result
index 0063f38ea36..a799c13cd92 100644
--- a/mysql-test/suite/vcol/r/vcol_syntax.result
+++ b/mysql-test/suite/vcol/r/vcol_syntax.result
@@ -94,6 +94,97 @@ create table t1 (a int, v_a int generated always as (a));
update t1 as x set a = 1;
alter table t1 force;
drop table t1;
+create table t1 (
+id int not null auto_increment primary key,
+order_date_time datetime not null,
+order_date date generated always as (convert(order_date_time, date)),
+language_id binary(16) null
+);
+update t1 as tx set order_date= null;
+alter table t1 modify column language_id binary(16) not null;
+drop table t1;
#
-# End of 10.2 tests
+# MDEV-24176 Server crashes after insert in the table with virtual column generated using date_format() and if()
#
+create table t1 (d1 date not null, d2 date not null,
+gd text as (concat(d1,if(d1 <> d2, date_format(d2, 'to %y-%m-%d '), ''))) );
+insert into t1(d1,d2) values
+('2020-09-01','2020-09-01'),('2020-05-01','2020-09-01');
+select * from t1;
+d1 d2 gd
+2020-09-01 2020-09-01 2020-09-01
+2020-05-01 2020-09-01 2020-05-01to 20-09-01
+drop table t1;
+# MDEV-25772 (duplicate) and LOCK TABLES case
+create table t1 (d1 datetime , v_d1 tinyint(1) as (d1 < curdate()));
+insert into t1 (d1) values ('2021-09-11 08:38:23'), ('2021-09-01 08:38:23');
+lock tables t1 write;
+select * from t1 where v_d1=1;
+d1 v_d1
+2021-09-11 08:38:23 1
+2021-09-01 08:38:23 1
+select * from t1;
+d1 v_d1
+2021-09-11 08:38:23 1
+2021-09-01 08:38:23 1
+unlock tables;
+drop table t1;
+# MDEV-26432 (duplicate)
+create table t1 (v2 int, v1 int as ((user() like 'x'))) ;
+select 1 from t1 where v1=1 ;
+1
+select * from t1;
+v2 v1
+drop table t1;
+create table t1 (v2 int as ( user () like 'x'));
+select 1 from t1 order by v2 ;
+1
+alter table t1 add i int;
+drop table t1;
+# MDEV-26437 (duplicate)
+create table v0 (v2 int not null,
+v1 bigint as (case 'x' when current_user() then v2 end));
+select v2 as v3 from v0 where v1 like 'x' escape 'x';
+v3
+insert into v0 (v2) values (-128);
+drop table v0;
+create table t1 (vi int as (case 'x' when current_user() then 1 end));
+select 1 from t1 where vi=1;
+1
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `vi` int(11) GENERATED ALWAYS AS (case 'x' when current_user() then 1 end) VIRTUAL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+drop table t1;
+create table t1 (vi int as (case 'x' when current_user() then 1 end));
+select 1 from t1 where vi=1;
+1
+select 1 from t1 where vi=1;
+1
+drop table t1;
+# MDEV-28092 (duplicate)
+create table t1 (b timestamp, a int as (1 in (dayofmonth (b between 'x' and current_user) = b)));
+insert into t1(b) values ('2022-03-17 14:55:37');
+select 1 from t1 x natural join t1;
+1
+1
+Warnings:
+Warning 1292 Truncated incorrect datetime value: 'x'
+Warning 1292 Truncated incorrect datetime value: 'root@localhost'
+Warning 1292 Truncated incorrect datetime value: 'x'
+Warning 1292 Truncated incorrect datetime value: 'root@localhost'
+drop table t1;
+# MDEV-28089 (duplicate)
+create table t1 (a int , b date as (1 in ('x' ,(database () = 'x' is null) ))) ;
+select b from t1;
+b
+select a from t1 order by 'x' = b;
+a
+drop table t1;
+create table t1 (a int , b date as (1 in ('x' ,(database ()) ))) ;
+select b from t1;
+b
+select a from t1 order by 'x' = b;
+a
+drop table t1;
diff --git a/mysql-test/suite/vcol/t/vcol_syntax.test b/mysql-test/suite/vcol/t/vcol_syntax.test
index 3c8a50a7f36..198d61a13aa 100644
--- a/mysql-test/suite/vcol/t/vcol_syntax.test
+++ b/mysql-test/suite/vcol/t/vcol_syntax.test
@@ -77,7 +77,88 @@ update t1 as x set a = 1;
alter table t1 force;
drop table t1;
+create table t1 (
+ id int not null auto_increment primary key,
+ order_date_time datetime not null,
+ order_date date generated always as (convert(order_date_time, date)),
+ language_id binary(16) null
+);
+
+update t1 as tx set order_date= null;
+alter table t1 modify column language_id binary(16) not null;
+# Cleanup
+drop table t1;
--echo #
---echo # End of 10.2 tests
+--echo # MDEV-24176 Server crashes after insert in the table with virtual column generated using date_format() and if()
--echo #
+create table t1 (d1 date not null, d2 date not null,
+ gd text as (concat(d1,if(d1 <> d2, date_format(d2, 'to %y-%m-%d '), ''))) );
+
+insert into t1(d1,d2) values
+ ('2020-09-01','2020-09-01'),('2020-05-01','2020-09-01');
+select * from t1;
+
+drop table t1;
+
+--echo # MDEV-25772 (duplicate) and LOCK TABLES case
+create table t1 (d1 datetime , v_d1 tinyint(1) as (d1 < curdate()));
+insert into t1 (d1) values ('2021-09-11 08:38:23'), ('2021-09-01 08:38:23');
+
+lock tables t1 write;
+select * from t1 where v_d1=1;
+select * from t1;
+unlock tables;
+
+drop table t1;
+
+--echo # MDEV-26432 (duplicate)
+create table t1 (v2 int, v1 int as ((user() like 'x'))) ;
+select 1 from t1 where v1=1 ;
+select * from t1;
+
+drop table t1;
+
+create table t1 (v2 int as ( user () like 'x'));
+select 1 from t1 order by v2 ;
+alter table t1 add i int;
+drop table t1;
+
+--echo # MDEV-26437 (duplicate)
+create table v0 (v2 int not null,
+ v1 bigint as (case 'x' when current_user() then v2 end));
+
+select v2 as v3 from v0 where v1 like 'x' escape 'x';
+insert into v0 (v2) values (-128);
+
+drop table v0;
+
+create table t1 (vi int as (case 'x' when current_user() then 1 end));
+select 1 from t1 where vi=1;
+show create table t1;
+
+drop table t1;
+
+create table t1 (vi int as (case 'x' when current_user() then 1 end));
+select 1 from t1 where vi=1;
+select 1 from t1 where vi=1;
+
+drop table t1;
+
+--echo # MDEV-28092 (duplicate)
+create table t1 (b timestamp, a int as (1 in (dayofmonth (b between 'x' and current_user) = b)));
+insert into t1(b) values ('2022-03-17 14:55:37');
+
+select 1 from t1 x natural join t1;
+drop table t1;
+
+--echo # MDEV-28089 (duplicate)
+create table t1 (a int , b date as (1 in ('x' ,(database () = 'x' is null) ))) ;
+select b from t1;
+select a from t1 order by 'x' = b;
+drop table t1;
+
+create table t1 (a int , b date as (1 in ('x' ,(database ()) ))) ;
+select b from t1;
+select a from t1 order by 'x' = b;
+drop table t1;
diff --git a/mysql-test/suite/versioning/r/delete_history.result b/mysql-test/suite/versioning/r/delete_history.result
index a5a6de19bc6..5b4fb5309e7 100644
--- a/mysql-test/suite/versioning/r/delete_history.result
+++ b/mysql-test/suite/versioning/r/delete_history.result
@@ -187,3 +187,15 @@ x
1
drop prepare stmt;
drop table t1;
+#
+# MDEV-28201 Server crashes upon SHOW ANALYZE/EXPLAIN FORMAT=JSON
+#
+CREATE TABLE t1 (a INT) WITH SYSTEM VERSIONING;
+CREATE ALGORITHM=TEMPTABLE VIEW v1 AS SELECT * FROM t1;
+SET optimizer_trace= 'enabled=on';
+DELETE HISTORY FROM v1 BEFORE SYSTEM_TIME '2021-01-01';
+ERROR HY000: The target table v1 of the DELETE is not updatable
+DELETE HISTORY FROM v1;
+ERROR HY000: The target table v1 of the DELETE is not updatable
+DROP VIEW v1;
+DROP TABLE t1;
diff --git a/mysql-test/suite/versioning/t/delete_history.test b/mysql-test/suite/versioning/t/delete_history.test
index e3b60011644..624f57cd2b5 100644
--- a/mysql-test/suite/versioning/t/delete_history.test
+++ b/mysql-test/suite/versioning/t/delete_history.test
@@ -191,4 +191,17 @@ select * from t1;
drop prepare stmt;
drop table t1;
+--echo #
+--echo # MDEV-28201 Server crashes upon SHOW ANALYZE/EXPLAIN FORMAT=JSON
+--echo #
+CREATE TABLE t1 (a INT) WITH SYSTEM VERSIONING;
+CREATE ALGORITHM=TEMPTABLE VIEW v1 AS SELECT * FROM t1;
+SET optimizer_trace= 'enabled=on';
+--error ER_NON_UPDATABLE_TABLE
+DELETE HISTORY FROM v1 BEFORE SYSTEM_TIME '2021-01-01';
+--error ER_NON_UPDATABLE_TABLE
+DELETE HISTORY FROM v1;
+DROP VIEW v1;
+DROP TABLE t1;
+
--source suite/versioning/common_finish.inc
diff --git a/mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink.opt b/mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink.opt
deleted file mode 100644
index a8b72174076..00000000000
--- a/mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink.opt
+++ /dev/null
@@ -1 +0,0 @@
---wsrep-provider=$WSREP_PROVIDER --wsrep-cluster-address=gcomm:// --wsrep_on=1 --binlog_format=ROW
diff --git a/mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink.test b/mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink.test
deleted file mode 100644
index 87554635666..00000000000
--- a/mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink.test
+++ /dev/null
@@ -1,41 +0,0 @@
---source include/have_wsrep.inc
---source include/have_symlink.inc
---source include/not_windows.inc
---source include/have_innodb.inc
-
---echo #
---echo # MDEV-5226 mysql_tzinfo_to_sql errors with tzdata 2013f and above
---echo #
-
---exec mkdir $MYSQLTEST_VARDIR/zoneinfo
---exec ln -s $MYSQLTEST_VARDIR/zoneinfo $MYSQLTEST_VARDIR/zoneinfo/posix
---copy_file std_data/zoneinfo/GMT $MYSQLTEST_VARDIR/zoneinfo/GMT
---copy_file std_data/words.dat $MYSQLTEST_VARDIR/zoneinfo/garbage
---copy_file std_data/words.dat $MYSQLTEST_VARDIR/zoneinfo/ignored.tab
-
---echo # Verbose run
---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
---exec $MYSQL_TZINFO_TO_SQL --verbose $MYSQLTEST_VARDIR/zoneinfo 2>&1
-
---echo # Silent run
---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
---exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo 2>&1
-
---echo #
---echo # Testing with explicit timezonefile
---echo #
-
---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
---exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo/GMT XXX 2>&1
-
---echo #
---echo # Testing --leap
---echo #
-
---exec $MYSQL_TZINFO_TO_SQL --leap $MYSQLTEST_VARDIR/zoneinfo/GMT 2>&1
-
-#
-# Cleanup
-#
-
---exec rm -rf $MYSQLTEST_VARDIR/zoneinfo
diff --git a/mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink_skip.opt b/mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink_skip.opt
deleted file mode 100644
index a8b72174076..00000000000
--- a/mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink_skip.opt
+++ /dev/null
@@ -1 +0,0 @@
---wsrep-provider=$WSREP_PROVIDER --wsrep-cluster-address=gcomm:// --wsrep_on=1 --binlog_format=ROW
diff --git a/mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink_skip.test b/mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink_skip.test
deleted file mode 100644
index ab1f94cc1cf..00000000000
--- a/mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink_skip.test
+++ /dev/null
@@ -1,41 +0,0 @@
---source include/have_wsrep.inc
---source include/have_symlink.inc
---source include/not_windows.inc
---source include/have_innodb.inc
-
---echo #
---echo # MDEV-5226 mysql_tzinfo_to_sql errors with tzdata 2013f and above
---echo #
-
---exec mkdir $MYSQLTEST_VARDIR/zoneinfo
---exec ln -s $MYSQLTEST_VARDIR/zoneinfo $MYSQLTEST_VARDIR/zoneinfo/posix
---copy_file std_data/zoneinfo/GMT $MYSQLTEST_VARDIR/zoneinfo/GMT
---copy_file std_data/words.dat $MYSQLTEST_VARDIR/zoneinfo/garbage
---copy_file std_data/words.dat $MYSQLTEST_VARDIR/zoneinfo/ignored.tab
-
---echo # Verbose run
---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
---exec $MYSQL_TZINFO_TO_SQL --verbose --skip-write-binlog $MYSQLTEST_VARDIR/zoneinfo 2>&1
-
---echo # Silent run
---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
---exec $MYSQL_TZINFO_TO_SQL --skip-write-binlog $MYSQLTEST_VARDIR/zoneinfo 2>&1
-
---echo #
---echo # Testing with explicit timezonefile
---echo #
-
---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
---exec $MYSQL_TZINFO_TO_SQL --skip-write-binlog $MYSQLTEST_VARDIR/zoneinfo/GMT XXX 2>&1
-
---echo #
---echo # Testing --leap
---echo #
-
---exec $MYSQL_TZINFO_TO_SQL --leap --skip-write-binlog $MYSQLTEST_VARDIR/zoneinfo/GMT 2>&1
-
-#
-# Cleanup
-#
-
---exec rm -rf $MYSQLTEST_VARDIR/zoneinfo
diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp
index fc6d2e7ec86..9127bb1f962 100644
--- a/mysql-test/valgrind.supp
+++ b/mysql-test/valgrind.supp
@@ -1,5 +1,5 @@
# Copyright (c) 2005, 2015, Oracle and/or its affiliates.
-# Copyright (c) 2008, 2019, MariaDB
+# Copyright (c) 2008, 2022, MariaDB
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@@ -100,137 +100,6 @@
fun:_dl_start
}
-#
-# Warnings in libz becasue it works with aligned memory(?)
-#
-
-{
- libz tr_flush_block
- Memcheck:Cond
- fun:_tr_flush_block
- fun:deflate_slow
- fun:deflate
- fun:do_flush
- fun:gzclose
-}
-
-{
- libz tr_flush_block2
- Memcheck:Cond
- fun:_tr_flush_block
- fun:deflate_slow
- fun:deflate
- fun:compress2
-}
-
-{
- libz longest_match
- Memcheck:Cond
- fun:longest_match
- fun:deflate_slow
- fun:deflate
- fun:do_flush
-}
-
-{
- libz longest_match called from btr_store_big_rec_extern_fields
- Memcheck:Cond
- fun:longest_match
- fun:deflate_slow
- fun:deflate
- fun:btr_store_big_rec_extern_fields
-}
-
-{
- libz longest_match called from page_zip_compress
- Memcheck:Cond
- fun:longest_match
- fun:deflate_slow
- fun:deflate
- fun:page_zip_compress
-}
-
-{
- libz longest_match2
- Memcheck:Cond
- fun:longest_match
- fun:deflate_slow
- fun:deflate
- fun:compress2
-}
-
-{
- libz longest_match 3
- Memcheck:Cond
- fun:longest_match
- fun:deflate_slow
- fun:deflate
- fun:gzclose
-}
-
-{
- libz longest_match 4
- Memcheck:Cond
- fun:longest_match
- fun:deflate_slow
- fun:deflate
- fun:gzflush
-}
-
-{
- libz longest_match3
- Memcheck:Cond
- fun:longest_match
- fun:deflate_slow
- fun:deflate
- fun:azflush
-}
-
-{
- libz longest_match3
- Memcheck:Cond
- fun:longest_match
- fun:deflate_slow
- fun:deflate
- fun:azclose
-}
-
-{
- libz deflate
- Memcheck:Cond
- obj:*/libz.so.*
- obj:*/libz.so.*
- fun:deflate
- fun:compress2
-}
-
-{
- libz deflate2
- Memcheck:Cond
- obj:*/libz.so.*
- obj:*/libz.so.*
- fun:deflate
- obj:*/libz.so.*
- fun:gzflush
-}
-
-{
- libz deflate3
- Memcheck:Cond
- obj:*/libz.so.*
- obj:*/libz.so.*
- fun:deflate
- fun:do_flush
-}
-
-{
- libz inflatereset2
- Memcheck:Cond
- fun:inflateReset2
- fun:inflateInit2_
- fun:uncompress
-}
-
#
# Warning from my_thread_init becasue mysqld dies before kill thread exists
@@ -706,39 +575,6 @@
}
{
- Bug 59874 Valgrind warning in InnoDB compression code
- Memcheck:Cond
- fun:*
- fun:*
- fun:deflate
- fun:btr_store_big_rec_extern_fields_func
- fun:row_ins_index_entry_low
- fun:row_ins_index_entry
- fun:row_ins_index_entry_step
- fun:row_ins
- fun:row_ins_step
- fun:row_insert_for_mysql
-}
-
-{
- In page0zip.c we have already checked that the memory is initialized before calling deflate()
- Memcheck:Cond
- fun:*
- fun:*
- fun:deflate
- fun:page_zip_compress
-}
-
-{
- In page0zip.c we have already checked that the memory is initialized before calling deflate()
- Memcheck:Cond
- fun:*
- fun:*
- fun:deflate
- fun:page_zip_compress_deflate
-}
-
-{
Bug 59875 Valgrind warning in buf0buddy.c
Memcheck:Addr1
fun:mach_read_from_4
diff --git a/mysys/my_compress.c b/mysys/my_compress.c
index 11603e7ba24..e30d42c2dbf 100644
--- a/mysys/my_compress.c
+++ b/mysys/my_compress.c
@@ -1,4 +1,5 @@
/* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2022, MariaDB Corporation.
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
@@ -57,35 +58,11 @@ my_bool my_compress(uchar *packet, size_t *len, size_t *complen)
}
-/*
- Valgrind normally gives false alarms for zlib operations, in the form of
- "conditional jump depends on uninitialised values" etc. The reason is
- explained in the zlib FAQ (http://www.zlib.net/zlib_faq.html#faq36):
-
- "That is intentional for performance reasons, and the output of deflate
- is not affected."
-
- Also discussed on a blog
- (http://www.sirena.org.uk/log/2006/02/19/zlib-generating-valgrind-warnings/):
-
- "...loop unrolling in the zlib library causes the mentioned
- “Conditional jump or move depends on uninitialised value(s)â€
- warnings. These are safe since the results of the comparison are
- subsequently ignored..."
-
- "the results of the calculations are discarded by bounds checking done
- after the loop exits"
-
- Fix by initializing the memory allocated by zlib when running under Valgrind.
-
- This fix is safe, since such memory is only used internally by zlib, so we
- will not hide any bugs in mysql this way.
-*/
void *my_az_allocator(void *dummy __attribute__((unused)), unsigned int items,
unsigned int size)
{
return my_malloc(key_memory_my_compress_alloc, (size_t)items*(size_t)size,
- IF_VALGRIND(MY_ZEROFILL, MYF(0)));
+ MYF(0));
}
void my_az_free(void *dummy __attribute__((unused)), void *address)
diff --git a/scripts/sys_schema/procedures/table_exists.sql b/scripts/sys_schema/procedures/table_exists.sql
index e06d018308f..8a17e0e19f4 100644
--- a/scripts/sys_schema/procedures/table_exists.sql
+++ b/scripts/sys_schema/procedures/table_exists.sql
@@ -19,7 +19,7 @@ DELIMITER $$
CREATE DEFINER='mariadb.sys'@'localhost' PROCEDURE table_exists (
IN in_db VARCHAR(64), IN in_table VARCHAR(64),
- OUT out_exists ENUM('', 'BASE TABLE', 'VIEW', 'TEMPORARY')
+ OUT out_exists ENUM('', 'BASE TABLE', 'VIEW', 'TEMPORARY', 'SEQUENCE', 'SYSTEM VIEW')
)
COMMENT '
Description
@@ -41,10 +41,12 @@ CREATE DEFINER='mariadb.sys'@'localhost' PROCEDURE table_exists (
out_exists ENUM('''', ''BASE TABLE'', ''VIEW'', ''TEMPORARY''):
The return value: whether the table exists. The value is one of:
- * '''' - the table does not exist neither as a base table, view, nor temporary table.
- * ''BASE TABLE'' - the table name exists as a permanent base table table.
- * ''VIEW'' - the table name exists as a view.
- * ''TEMPORARY'' - the table name exists as a temporary table.
+ * '''' - the table does not exist neither as a base table, view, sequence nor temporary table.
+ * ''BASE TABLE'' - the table name exists as a permanent base table table.
+ * ''VIEW'' - the table name exists as a view.
+ * ''TEMPORARY'' - the table name exists as a temporary table.
+ * ''SEQUENCE'' - the table name exists as a sequence.
+ * ''SYSTEM VIEW'' - the table name exists as a system view.
Example
--------
@@ -96,6 +98,26 @@ CREATE DEFINER='mariadb.sys'@'localhost' PROCEDURE table_exists (
+---------+
1 row in set (0.00 sec)
+ MariaDB [sys]> CALL sys.table_exists(''db1'', ''s'', @exists); SELECT @exists;
+ Query OK, 0 rows affected (0.006 sec)
+
+ +----------+
+ | @exists |
+ +----------+
+ | SEQUENCE |
+ +----------+
+ 1 row in set (0.000 sec)
+
+ MariaDB [sys]> CALL table_exists(''information_schema'', ''user_variables'', @exists); SELECT @exists;
+ Query OK, 0 rows affected (0.003 sec)
+
+ +-------------+
+ | @exists |
+ +-------------+
+ | SYSTEM VIEW |
+ +-------------+
+ 1 row in set (0.001 sec)
+
mysql> CALL sys.table_exists(''db1'', ''t3'', @exists); SELECT @exists;
Query OK, 0 rows affected (0.01 sec)
@@ -111,6 +133,9 @@ CREATE DEFINER='mariadb.sys'@'localhost' PROCEDURE table_exists (
CONTAINS SQL
BEGIN
DECLARE v_error BOOLEAN DEFAULT FALSE;
+ DECLARE v_table_type VARCHAR(16) DEFAULT '';
+ DECLARE v_system_db BOOLEAN
+ DEFAULT LOWER(in_db) IN ('information_schema', 'performance_schema');
DECLARE CONTINUE HANDLER FOR 1050 SET v_error = TRUE;
DECLARE CONTINUE HANDLER FOR 1146 SET v_error = TRUE;
@@ -120,29 +145,41 @@ BEGIN
IF (EXISTS(SELECT 1 FROM information_schema.TABLES WHERE TABLE_SCHEMA = in_db AND TABLE_NAME = in_table)) THEN
-- Unfortunately the only way to determine whether there is also a temporary table is to try to create
-- a temporary table with the same name. If it succeeds the table didn't exist as a temporary table.
- SET @sys.tmp.table_exists.SQL = CONCAT('CREATE TEMPORARY TABLE `', in_db, '`.`', in_table, '` (id INT PRIMARY KEY)');
- PREPARE stmt_create_table FROM @sys.tmp.table_exists.SQL;
- EXECUTE stmt_create_table;
- DEALLOCATE PREPARE stmt_create_table;
- IF (v_error) THEN
- SET out_exists = 'TEMPORARY';
- ELSE
+ IF v_system_db = FALSE THEN
+ SET @sys.tmp.table_exists.SQL = CONCAT('CREATE TEMPORARY TABLE `', in_db, '`.`', in_table, '` (id INT PRIMARY KEY)');
+ PREPARE stmt_create_table FROM @sys.tmp.table_exists.SQL;
+ EXECUTE stmt_create_table;
+ DEALLOCATE PREPARE stmt_create_table;
+
-- The temporary table was created, i.e. it didn't exist. Remove it again so we don't leave garbage around.
SET @sys.tmp.table_exists.SQL = CONCAT('DROP TEMPORARY TABLE `', in_db, '`.`', in_table, '`');
PREPARE stmt_drop_table FROM @sys.tmp.table_exists.SQL;
EXECUTE stmt_drop_table;
DEALLOCATE PREPARE stmt_drop_table;
- SET out_exists = (SELECT TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = in_db AND TABLE_NAME = in_table);
+ END IF;
+ IF (v_error) THEN
+ SET out_exists = 'TEMPORARY';
+ ELSE
+ SET v_table_type = (SELECT TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = in_db AND TABLE_NAME = in_table);
+ -- Don't fail on table_type='SYSTEM VERSIONED'
+ -- but return 'BASE TABLE' for compatibility with existing tooling
+ IF v_table_type = 'SYSTEM VERSIONED' THEN
+ SET out_exists = 'BASE TABLE';
+ ELSE
+ SET out_exists = v_table_type;
+ END IF;
END IF;
ELSE
-- Check whether a temporary table exists with the same name.
-- If it does it's possible to SELECT from the table without causing an error.
-- If it does not exist even a PREPARE using the table will fail.
- SET @sys.tmp.table_exists.SQL = CONCAT('SELECT COUNT(*) FROM `', in_db, '`.`', in_table, '`');
- PREPARE stmt_select FROM @sys.tmp.table_exists.SQL;
- IF (NOT v_error) THEN
- DEALLOCATE PREPARE stmt_select;
- SET out_exists = 'TEMPORARY';
+ IF v_system_db = FALSE THEN
+ SET @sys.tmp.table_exists.SQL = CONCAT('SELECT COUNT(*) FROM `', in_db, '`.`', in_table, '`');
+ PREPARE stmt_select FROM @sys.tmp.table_exists.SQL;
+ IF (NOT v_error) THEN
+ DEALLOCATE PREPARE stmt_select;
+ SET out_exists = 'TEMPORARY';
+ END IF;
END IF;
END IF;
END$$
diff --git a/scripts/wsrep_sst_mariabackup.sh b/scripts/wsrep_sst_mariabackup.sh
index 067a777fb9c..87ed8392475 100644
--- a/scripts/wsrep_sst_mariabackup.sh
+++ b/scripts/wsrep_sst_mariabackup.sh
@@ -535,7 +535,14 @@ read_cnf()
ssystag=$(parse_cnf mysqld_safe syslog-tag "${SST_SYSLOG_TAG:-}")
ssystag="$ssystag-"
sstlogarchive=$(parse_cnf sst sst-log-archive 1)
- sstlogarchivedir=$(parse_cnf sst sst-log-archive-dir '/tmp/sst_log_archive')
+ sstlogarchivedir=""
+ if [ $sstlogarchive -ne 0 ]; then
+ sstlogarchivedir=$(parse_cnf sst sst-log-archive-dir \
+ '/tmp/sst_log_archive')
+ if [ -n "$sstlogarchivedir" ]; then
+ sstlogarchivedir=$(trim_dir "$sstlogarchivedir")
+ fi
+ fi
if [ $speciald -eq 0 ]; then
wsrep_log_error \
@@ -879,7 +886,15 @@ else
if [ -n "$sstlogarchivedir" ]; then
if [ ! -d "$sstlogarchivedir" ]; then
- mkdir -p "$sstlogarchivedir"
+ if ! mkdir -p "$sstlogarchivedir"; then
+ sstlogarchivedir=""
+ wsrep_log_warning \
+ "Unable to create '$sstlogarchivedir' directory"
+ fi
+ elif [ ! -w "$sstlogarchivedir" ]; then
+ sstlogarchivedir=""
+ wsrep_log_warning \
+ "The '$sstlogarchivedir' directory is not writtable"
fi
fi
@@ -891,8 +906,8 @@ else
newfile="$INNOAPPLYLOG.$ARCHIVETIMESTAMP"
fi
wsrep_log_info "Moving '$INNOAPPLYLOG' to '$newfile'"
- mv "$INNOAPPLYLOG" "$newfile"
- gzip "$newfile"
+ mv "$INNOAPPLYLOG" "$newfile" && gzip "$newfile" || \
+ wsrep_log_warning "Failed to archive log file ('$newfile')"
fi
if [ -e "$INNOMOVELOG" ]; then
@@ -903,8 +918,8 @@ else
newfile="$INNOMOVELOG.$ARCHIVETIMESTAMP"
fi
wsrep_log_info "Moving '$INNOMOVELOG' to '$newfile'"
- mv "$INNOMOVELOG" "$newfile"
- gzip "$newfile"
+ mv "$INNOMOVELOG" "$newfile" && gzip "$newfile" || \
+ wsrep_log_warning "Failed to archive log file ('$newfile')"
fi
if [ -e "$INNOBACKUPLOG" ]; then
@@ -915,8 +930,8 @@ else
newfile="$INNOBACKUPLOG.$ARCHIVETIMESTAMP"
fi
wsrep_log_info "Moving '$INNOBACKUPLOG' to '$newfile'"
- mv "$INNOBACKUPLOG" "$newfile"
- gzip "$newfile"
+ mv "$INNOBACKUPLOG" "$newfile" && gzip "$newfile" || \
+ wsrep_log_warning "Failed to archive log file ('$newfile')"
fi
fi
INNOAPPLY="> '$INNOAPPLYLOG' 2>&1"
diff --git a/sql/event_db_repository.cc b/sql/event_db_repository.cc
index 18cba99f92b..cf27e9b7326 100644
--- a/sql/event_db_repository.cc
+++ b/sql/event_db_repository.cc
@@ -611,6 +611,8 @@ Event_db_repository::open_event_table(THD *thd, enum thr_lock_type lock_type,
*table= tables.table;
tables.table->use_all_columns();
+ /* NOTE: &tables pointer will be invalid after return */
+ tables.table->pos_in_table_list= NULL;
if (table_intact.check(*table, &event_table_def))
{
diff --git a/sql/field.cc b/sql/field.cc
index 767492fe17d..6b5e8251822 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -2620,6 +2620,11 @@ int Field::set_default()
if (default_value)
{
Query_arena backup_arena;
+ /*
+ TODO: this may impose memory leak until table flush.
+ See comment in
+ TABLE::update_virtual_fields(handler *, enum_vcol_update_mode).
+ */
table->in_use->set_n_backup_active_arena(table->expr_arena, &backup_arena);
int rc= default_value->expr->save_in_field(this, 0);
table->in_use->restore_active_arena(table->expr_arena, &backup_arena);
diff --git a/sql/field.h b/sql/field.h
index 2ed02b37cfd..8fe0cc9f8da 100644
--- a/sql/field.h
+++ b/sql/field.h
@@ -638,6 +638,14 @@ public:
{
in_partitioning_expr= TRUE;
}
+ bool need_refix() const
+ {
+ return flags & VCOL_SESSION_FUNC;
+ }
+ bool fix_expr(THD *thd);
+ bool fix_session_expr(THD *thd);
+ bool cleanup_session_expr();
+ bool fix_and_check_expr(THD *thd, TABLE *table);
inline bool is_equal(const Virtual_column_info* vcol) const;
inline void print(String*);
};
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
index 453446eb85d..3a9d1eccaf5 100644
--- a/sql/ha_partition.cc
+++ b/sql/ha_partition.cc
@@ -767,6 +767,7 @@ int ha_partition::create(const char *name, TABLE *table_arg,
HA_CREATE_INFO *create_info)
{
int error;
+ THD *thd= ha_thd();
char name_buff[FN_REFLEN + 1], name_lc_buff[FN_REFLEN];
char *name_buffer_ptr;
const char *path;
@@ -785,8 +786,27 @@ int ha_partition::create(const char *name, TABLE *table_arg,
my_error(ER_FEATURE_NOT_SUPPORTED_WITH_PARTITIONING, MYF(0), "CREATE TEMPORARY TABLE");
DBUG_RETURN(TRUE);
}
+ /*
+ The following block should be removed once the table-level data directory
+ specification is supported by the partitioning engine (MDEV-28108).
+ */
+ if (thd_sql_command(thd) == SQLCOM_ALTER_TABLE && create_info)
+ {
+ if (create_info->data_file_name)
+ {
+ push_warning_printf(
+ thd, Sql_condition::WARN_LEVEL_WARN, WARN_OPTION_IGNORED,
+ "<DATA DIRECTORY> table option of old schema is ignored");
+ }
+ if (create_info->index_file_name)
+ {
+ push_warning_printf(
+ thd, Sql_condition::WARN_LEVEL_WARN, WARN_OPTION_IGNORED,
+ "<INDEX DIRECTORY> table option of old schema is ignored");
+ }
+ }
- if (get_from_handler_file(name, ha_thd()->mem_root, false))
+ if (get_from_handler_file(name, thd->mem_root, false))
DBUG_RETURN(TRUE);
DBUG_ASSERT(m_file_buffer);
name_buffer_ptr= m_name_buffer_ptr;
diff --git a/sql/item.cc b/sql/item.cc
index f515dd3924d..7c9aa662609 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -723,7 +723,6 @@ bool Item_ident::remove_dependence_processor(void * arg)
DBUG_RETURN(0);
}
-
bool Item_ident::collect_outer_ref_processor(void *param)
{
Collect_deps_prm *prm= (Collect_deps_prm *)param;
@@ -2753,7 +2752,8 @@ Item_sp::Item_sp(THD *thd, Item_sp *item):
memset(&sp_mem_root, 0, sizeof(sp_mem_root));
}
-LEX_CSTRING Item_sp::func_name_cstring(THD *thd) const
+LEX_CSTRING
+Item_sp::func_name_cstring(THD *thd, bool is_package_function) const
{
/* Calculate length to avoid reallocation of string for sure */
size_t len= (((m_name->m_explicit_name ? m_name->m_db.length : 0) +
@@ -2774,7 +2774,7 @@ LEX_CSTRING Item_sp::func_name_cstring(THD *thd) const
append_identifier(thd, &qname, &m_name->m_db);
qname.append('.');
}
- if (m_sp && m_sp->m_handler == &sp_handler_package_function)
+ if (is_package_function)
{
/*
In case of a package function split `pkg.func` and print
@@ -6186,8 +6186,6 @@ bool Item_field::fix_fields(THD *thd, Item **reference)
}
#endif
base_flags|= item_base_t::FIXED;
- if (field->vcol_info)
- fix_session_vcol_expr_for_read(thd, field, field->vcol_info);
if (thd->variables.sql_mode & MODE_ONLY_FULL_GROUP_BY &&
!outer_fixed && !thd->lex->in_sum_func &&
select &&
@@ -9539,11 +9537,6 @@ bool Item_default_value::fix_fields(THD *thd, Item **items)
uchar *newptr= (uchar*) thd->alloc(1+def_field->pack_length());
if (!newptr)
goto error;
- /*
- Even if DEFAULT() do not read tables fields, the default value
- expression can do it.
- */
- fix_session_vcol_expr_for_read(thd, def_field, def_field->default_value);
if (should_mark_column(thd->column_usage))
def_field->default_value->expr->update_used_tables();
def_field->move_field(newptr+1, def_field->maybe_null() ? newptr : 0, 1);
diff --git a/sql/item.h b/sql/item.h
index 46a513023dd..fbe26c597a9 100644
--- a/sql/item.h
+++ b/sql/item.h
@@ -2,7 +2,7 @@
#define SQL_ITEM_INCLUDED
/* Copyright (c) 2000, 2017, Oracle and/or its affiliates.
- Copyright (c) 2009, 2021, MariaDB Corporation.
+ Copyright (c) 2009, 2022, MariaDB Corporation.
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
@@ -3485,6 +3485,10 @@ public:
this variable.
*/
bool can_be_depended;
+ /*
+ NOTE: came from TABLE::alias_name_used and this is only a hint!
+ See comment for TABLE::alias_name_used.
+ */
bool alias_name_used; /* true if item was resolved against alias */
Item_ident(THD *thd, Name_resolution_context *context_arg,
@@ -5492,7 +5496,7 @@ public:
Field *sp_result_field;
Item_sp(THD *thd, Name_resolution_context *context_arg, sp_name *name_arg);
Item_sp(THD *thd, Item_sp *item);
- LEX_CSTRING func_name_cstring(THD *thd) const;
+ LEX_CSTRING func_name_cstring(THD *thd, bool is_package_function) const;
void cleanup();
bool sp_check_access(THD *thd);
bool execute(THD *thd, bool *null_value, Item **args, uint arg_count);
diff --git a/sql/item_func.cc b/sql/item_func.cc
index cbf25ddf791..94b14fa70ac 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -6570,8 +6570,8 @@ Item_func_sp::cleanup()
LEX_CSTRING
Item_func_sp::func_name_cstring() const
{
- THD *thd= current_thd;
- return Item_sp::func_name_cstring(thd);
+ return Item_sp::func_name_cstring(current_thd,
+ m_handler == &sp_handler_package_function);
}
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc
index 97c7469214d..e4bbe475212 100644
--- a/sql/item_subselect.cc
+++ b/sql/item_subselect.cc
@@ -2871,6 +2871,8 @@ bool Item_in_subselect::inject_in_to_exists_cond(JOIN *join_arg)
}
where_item= and_items(thd, join_arg->conds, where_item);
+
+ /* This is the fix_fields() call mentioned in the comment above */
if (where_item->fix_fields_if_needed(thd, 0))
DBUG_RETURN(true);
// TIMOUR TODO: call optimize_cond() for the new where clause
@@ -2881,7 +2883,10 @@ bool Item_in_subselect::inject_in_to_exists_cond(JOIN *join_arg)
/* Attach back the list of multiple equalities to the new top-level AND. */
if (and_args && join_arg->cond_equal)
{
- /* The argument list of the top-level AND may change after fix fields. */
+ /*
+ The fix_fields() call above may have changed the argument list, so
+ fetch it again:
+ */
and_args= ((Item_cond*) join_arg->conds)->argument_list();
((Item_cond_and *) (join_arg->conds))->m_cond_equal=
*join_arg->cond_equal;
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index c8a7aca5afb..2b8aae57ece 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -1,5 +1,5 @@
/* Copyright (c) 2000, 2015, Oracle and/or its affiliates.
- Copyright (c) 2008, 2020, MariaDB
+ Copyright (c) 2008, 2022, MariaDB
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
@@ -1470,8 +1470,7 @@ Item_sum_sp::fix_length_and_dec()
LEX_CSTRING Item_sum_sp::func_name_cstring() const
{
- THD *thd= current_thd;
- return Item_sp::func_name_cstring(thd);
+ return Item_sp::func_name_cstring(current_thd, false);
}
Item* Item_sum_sp::copy_or_same(THD *thd)
diff --git a/sql/log.cc b/sql/log.cc
index 61c400a647c..0eb477fc034 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -1700,13 +1700,9 @@ bool Log_to_csv_event_handler::init()
return 0;
}
-int LOGGER::set_handlers(ulonglong error_log_printer,
- ulonglong slow_log_printer,
+int LOGGER::set_handlers(ulonglong slow_log_printer,
ulonglong general_log_printer)
{
- /* error log table is not supported yet */
- DBUG_ASSERT(error_log_printer < LOG_TABLE);
-
lock_exclusive();
if ((slow_log_printer & LOG_TABLE || general_log_printer & LOG_TABLE) &&
@@ -1719,7 +1715,6 @@ int LOGGER::set_handlers(ulonglong error_log_printer,
"Falling back to the old-fashioned logs");
}
- init_error_log(error_log_printer);
init_slow_log(slow_log_printer);
init_general_log(general_log_printer);
diff --git a/sql/log.h b/sql/log.h
index b4c82e0aed4..c027e0c1e89 100644
--- a/sql/log.h
+++ b/sql/log.h
@@ -1115,8 +1115,7 @@ public:
const char *query, size_t query_length);
/* we use this function to setup all enabled log event handlers */
- int set_handlers(ulonglong error_log_printer,
- ulonglong slow_log_printer,
+ int set_handlers(ulonglong slow_log_printer,
ulonglong general_log_printer);
void init_error_log(ulonglong error_log_printer);
void init_slow_log(ulonglong slow_log_printer);
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 4789ed1b8ae..75d8b4af72e 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -3174,7 +3174,7 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
sql_print_information("Got signal %d to shutdown server",sig);
#endif
/* switch to the old log message processing */
- logger.set_handlers(LOG_FILE, global_system_variables.sql_log_slow ? LOG_FILE:LOG_NONE,
+ logger.set_handlers(global_system_variables.sql_log_slow ? LOG_FILE:LOG_NONE,
opt_log ? LOG_FILE:LOG_NONE);
DBUG_PRINT("info",("Got signal: %d abort_loop: %d",sig,abort_loop));
if (!abort_loop)
@@ -3216,8 +3216,8 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
ulonglong fixed_log_output_options=
log_output_options & LOG_NONE ? LOG_TABLE : log_output_options;
- logger.set_handlers(LOG_FILE, global_system_variables.sql_log_slow
- ? fixed_log_output_options : LOG_NONE,
+ logger.set_handlers(global_system_variables.sql_log_slow
+ ? fixed_log_output_options : LOG_NONE,
opt_log ? fixed_log_output_options : LOG_NONE);
}
break;
@@ -5275,7 +5275,7 @@ static int init_server_components()
sql_print_warning("There were other values specified to "
"log-output besides NONE. Disabling slow "
"and general logs anyway.");
- logger.set_handlers(LOG_FILE, LOG_NONE, LOG_NONE);
+ logger.set_handlers(LOG_NONE, LOG_NONE);
}
else
{
@@ -5291,8 +5291,7 @@ static int init_server_components()
/* purecov: end */
}
- logger.set_handlers(LOG_FILE,
- global_system_variables.sql_log_slow ?
+ logger.set_handlers(global_system_variables.sql_log_slow ?
log_output_options:LOG_NONE,
opt_log ? log_output_options:LOG_NONE);
}
@@ -6696,7 +6695,7 @@ struct my_option my_long_options[]=
Also disable by default on Windows, due to high overhead for checking .sym
files.
*/
- IF_VALGRIND(0,IF_WIN(0,1)), 0, 0, 0, 0, 0},
+ IF_WIN(0,1), 0, 0, 0, 0, 0},
{"sysdate-is-now", 0,
"Non-default option to alias SYSDATE() to NOW() to make it safe-replicable. "
"Since 5.0, SYSDATE() returns a `dynamic' value different for different "
@@ -8711,12 +8710,16 @@ void set_server_version(char *buf, size_t size)
{
bool is_log= opt_log || global_system_variables.sql_log_slow || opt_bin_log;
bool is_debug= IF_DBUG(!strstr(MYSQL_SERVER_SUFFIX_STR, "-debug"), 0);
- bool is_valgrind= IF_VALGRIND(!strstr(MYSQL_SERVER_SUFFIX_STR, "-valgrind"), 0);
+ const char *is_valgrind=
+#ifdef HAVE_VALGRIND
+ !strstr(MYSQL_SERVER_SUFFIX_STR, "-valgrind") ? "-valgrind" :
+#endif
+ "";
strxnmov(buf, size - 1,
MYSQL_SERVER_VERSION,
MYSQL_SERVER_SUFFIX_STR,
IF_EMBEDDED("-embedded", ""),
- is_valgrind ? "-valgrind" : "",
+ is_valgrind,
is_debug ? "-debug" : "",
is_log ? "-log" : "",
NullS);
diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt
index ce427d6cded..799a62b83bc 100644
--- a/sql/share/errmsg-utf8.txt
+++ b/sql/share/errmsg-utf8.txt
@@ -1,4 +1,4 @@
-languages czech=cze latin2, danish=dan latin1, dutch=nla latin1, english=eng latin1, estonian=est latin7, french=fre latin1, german=ger latin1, greek=greek greek, hungarian=hun latin2, italian=ita latin1, japanese=jpn ujis, korean=kor euckr, norwegian-ny=norwegian-ny latin1, norwegian=nor latin1, polish=pol latin2, portuguese=por latin1, romanian=rum latin2, russian=rus koi8r, serbian=serbian cp1250, slovak=slo latin2, spanish=spa latin1, swedish=swe latin1, ukrainian=ukr koi8u, bulgarian=bgn cp1251, hindi=hindi utf8mb3;
+languages chinese=chi gbk, czech=cze latin2, danish=dan latin1, dutch=nla latin1, english=eng latin1, estonian=est latin7, french=fre latin1, german=ger latin1, greek=greek greek, hungarian=hun latin2, italian=ita latin1, japanese=jpn ujis, korean=kor euckr, norwegian-ny=norwegian-ny latin1, norwegian=nor latin1, polish=pol latin2, portuguese=por latin1, romanian=rum latin2, russian=rus koi8r, serbian=serbian cp1250, slovak=slo latin2, spanish=spa latin1, swedish=swe latin1, ukrainian=ukr koi8u, bulgarian=bgn cp1251, hindi=hindi utf8mb3;
default-language eng
@@ -9,9 +9,9 @@ ER_HASHCHK
ER_NISAMCHK
eng "isamchk"
ER_NO
+ chi "ä¸"
cze "NE"
dan "NEJ"
- nla "NEE"
eng "NO"
est "EI"
fre "NON"
@@ -20,6 +20,7 @@ ER_NO
hindi "नहीं"
hun "NEM"
kor "아니오"
+ nla "NEE"
nor "NEI"
norwegian-ny "NEI"
pol "NIE"
@@ -30,9 +31,9 @@ ER_NO
slo "NIE"
ukr "ÐІ"
ER_YES
+ chi "是的"
cze "ANO"
dan "JA"
- nla "JA"
eng "YES"
est "JAH"
fre "OUI"
@@ -42,6 +43,7 @@ ER_YES
hun "IGEN"
ita "SI"
kor "예"
+ nla "JA"
nor "JA"
norwegian-ny "JA"
pol "TAK"
@@ -53,9 +55,9 @@ ER_YES
spa "SÃ"
ukr "ТÐК"
ER_CANT_CREATE_FILE
+ chi "无法创建文件'%-.200s'(错误å·ç ï¼š%M)"
cze "Nemohu vytvořit soubor '%-.200s' (chybový kód: %M)"
dan "Kan ikke oprette filen '%-.200s' (Fejlkode: %M)"
- nla "Kan file '%-.200s' niet aanmaken (Errcode: %M)"
eng "Can't create file '%-.200s' (errno: %M)"
est "Ei suuda luua faili '%-.200s' (veakood: %M)"
fre "Ne peut créer le fichier '%-.200s' (Errcode: %M)"
@@ -66,6 +68,7 @@ ER_CANT_CREATE_FILE
ita "Impossibile creare il file '%-.200s' (errno: %M)"
jpn "ファイル '%-.200s' を作æˆã§ãã¾ã›ã‚“。(エラー番å·: %M)"
kor "í™”ì¼ '%-.200s'를 만들지 못했습니다. (ì—러번호: %M)"
+ nla "Kan file '%-.200s' niet aanmaken (Errcode: %M)"
nor "Kan ikke opprette fila '%-.200s' (Feilkode: %M)"
norwegian-ny "Kan ikkje opprette fila '%-.200s' (Feilkode: %M)"
pol "Nie można stworzyć pliku '%-.200s' (Kod błędu: %M)"
@@ -78,11 +81,10 @@ ER_CANT_CREATE_FILE
swe "Kan inte skapa filen '%-.200s' (Felkod: %M)"
ukr "Ðе можу Ñтворити файл '%-.200s' (помилка: %M)"
ER_CANT_CREATE_TABLE
+ chi "无法创建表%`s.%`s(错误å·ç ï¼š%M)"
cze "Nemohu vytvořit tabulku %`s.%`s (chybový kód: %M)"
dan "Kan ikke oprette tabellen %`s.%`s (Fejlkode: %M)"
- nla "Kan tabel %`s.%`s niet aanmaken (Errcode: %M)"
eng "Can't create table %`s.%`s (errno: %M)"
- jps "%`s.%`s テーブルãŒä½œã‚Œã¾ã›ã‚“.(errno: %M)",
est "Ei suuda luua tabelit %`s.%`s (veakood: %M)"
fre "Ne peut créer la table %`s.%`s (Errcode: %M)"
ger "Kann Tabelle %`s.%`s nicht erzeugen (Fehler: %M)"
@@ -92,6 +94,7 @@ ER_CANT_CREATE_TABLE
ita "Impossibile creare la tabella %`s.%`s (errno: %M)"
jpn "%`s.%`s テーブルãŒä½œã‚Œã¾ã›ã‚“.(errno: %M)"
kor "í…Œì´ë¸” %`s.%`s를 만들지 못했습니다. (ì—러번호: %M)"
+ nla "Kan tabel %`s.%`s niet aanmaken (Errcode: %M)"
nor "Kan ikke opprette tabellen %`s.%`s (Feilkode: %M)"
norwegian-ny "Kan ikkje opprette tabellen %`s.%`s (Feilkode: %M)"
pol "Nie można stworzyć tabeli %`s.%`s (Kod błędu: %M)"
@@ -104,9 +107,9 @@ ER_CANT_CREATE_TABLE
swe "Kan inte skapa tabellen %`s.%`s (Felkod: %M)"
ukr "Ðе можу Ñтворити таблицю %`s.%`s (помилка: %M)"
ER_CANT_CREATE_DB
+ chi "无法创建数æ®åº“'%-.192s'(错误å·ç ï¼š%M)"
cze "Nemohu vytvořit databázi '%-.192s' (chybový kód: %M)"
dan "Kan ikke oprette databasen '%-.192s' (Fejlkode: %M)"
- nla "Kan database '%-.192s' niet aanmaken (Errcode: %M)"
eng "Can't create database '%-.192s' (errno: %M)"
est "Ei suuda luua andmebaasi '%-.192s' (veakood: %M)"
fre "Ne peut créer la base '%-.192s' (Erreur %M)"
@@ -117,6 +120,7 @@ ER_CANT_CREATE_DB
ita "Impossibile creare il database '%-.192s' (errno: %M)"
jpn "データベース '%-.192s' を作æˆã§ãã¾ã›ã‚“。(エラー番å·: %M)"
kor "ë°ì´íƒ€ë² ì´ìŠ¤ '%-.192s'를 만들지 못했습니다.. (ì—러번호: %M)"
+ nla "Kan database '%-.192s' niet aanmaken (Errcode: %M)"
nor "Kan ikke opprette databasen '%-.192s' (Feilkode: %M)"
norwegian-ny "Kan ikkje opprette databasen '%-.192s' (Feilkode: %M)"
pol "Nie można stworzyć bazy danych '%-.192s' (Kod błędu: %M)"
@@ -129,9 +133,9 @@ ER_CANT_CREATE_DB
swe "Kan inte skapa databasen '%-.192s' (Felkod: %M)"
ukr "Ðе можу Ñтворити базу данних '%-.192s' (помилка: %M)"
ER_DB_CREATE_EXISTS
+ chi "无法创建数æ®åº“'%-.192s';å·²ç»å­˜åœ¨"
cze "Nemohu vytvořit databázi '%-.192s'; databáze již existuje"
dan "Kan ikke oprette databasen '%-.192s'; databasen eksisterer"
- nla "Kan database '%-.192s' niet aanmaken; database bestaat reeds"
eng "Can't create database '%-.192s'; database exists"
est "Ei suuda luua andmebaasi '%-.192s': andmebaas juba eksisteerib"
fre "Ne peut créer la base '%-.192s'; elle existe déjà"
@@ -142,6 +146,7 @@ ER_DB_CREATE_EXISTS
ita "Impossibile creare il database '%-.192s'; il database esiste"
jpn "データベース '%-.192s' を作æˆã§ãã¾ã›ã‚“。データベースã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
kor "ë°ì´íƒ€ë² ì´ìŠ¤ '%-.192s'를 만들지 못했습니다.. ë°ì´íƒ€ë² ì´ìŠ¤ê°€ 존재함"
+ nla "Kan database '%-.192s' niet aanmaken; database bestaat reeds"
nor "Kan ikke opprette databasen '%-.192s'; databasen eksisterer"
norwegian-ny "Kan ikkje opprette databasen '%-.192s'; databasen eksisterer"
pol "Nie można stworzyć bazy danych '%-.192s'; baza danych już istnieje"
@@ -154,9 +159,9 @@ ER_DB_CREATE_EXISTS
swe "Databasen '%-.192s' existerar redan"
ukr "Ðе можу Ñтворити базу данних '%-.192s'. База данних Ñ–Ñнує"
ER_DB_DROP_EXISTS
+ chi "无法删除数æ®åº“'%-.192s';æ•°æ®åº“ä¸å­˜åœ¨"
cze "Nemohu zrušit databázi '%-.192s', databáze neexistuje"
dan "Kan ikke slette (droppe) '%-.192s'; databasen eksisterer ikke"
- nla "Kan database '%-.192s' niet verwijderen; database bestaat niet"
eng "Can't drop database '%-.192s'; database doesn't exist"
est "Ei suuda kustutada andmebaasi '%-.192s': andmebaasi ei eksisteeri"
fre "Ne peut effacer la base '%-.192s'; elle n'existe pas"
@@ -167,6 +172,7 @@ ER_DB_DROP_EXISTS
ita "Impossibile cancellare '%-.192s'; il database non esiste"
jpn "データベース '%-.192s' を削除ã§ãã¾ã›ã‚“。データベースã¯å­˜åœ¨ã—ã¾ã›ã‚“。"
kor "ë°ì´íƒ€ë² ì´ìŠ¤ '%-.192s'를 제거하지 못했습니다. ë°ì´íƒ€ë² ì´ìŠ¤ê°€ 존재하지 ì•ŠìŒ "
+ nla "Kan database '%-.192s' niet verwijderen; database bestaat niet"
nor "Kan ikke fjerne (drop) '%-.192s'; databasen eksisterer ikke"
norwegian-ny "Kan ikkje fjerne (drop) '%-.192s'; databasen eksisterer ikkje"
pol "Nie można usun?ć bazy danych '%-.192s'; baza danych nie istnieje"
@@ -179,9 +185,9 @@ ER_DB_DROP_EXISTS
swe "Kan inte radera databasen '%-.192s'; databasen finns inte"
ukr "Ðе можу видалити базу данних '%-.192s'. База данних не Ñ–Ñнує"
ER_DB_DROP_DELETE
+ chi "删除数æ®åº“错误(无法删除'%-.192s',错误å·ç ï¼š%M)"
cze "Chyba při rušení databáze (nemohu vymazat '%-.192s', chyba %M)"
dan "Fejl ved sletning (drop) af databasen (kan ikke slette '%-.192s', Fejlkode %M)"
- nla "Fout bij verwijderen database (kan '%-.192s' niet verwijderen, Errcode: %M)"
eng "Error dropping database (can't delete '%-.192s', errno: %M)"
est "Viga andmebaasi kustutamisel (ei suuda kustutada faili '%-.192s', veakood: %M)"
fre "Ne peut effacer la base '%-.192s' (erreur %M)"
@@ -192,6 +198,7 @@ ER_DB_DROP_DELETE
ita "Errore durante la cancellazione del database (impossibile cancellare '%-.192s', errno: %M)"
jpn "データベース削除エラー ('%-.192s' を削除ã§ãã¾ã›ã‚“。エラー番å·: %M)"
kor "ë°ì´íƒ€ë² ì´ìŠ¤ 제거 ì—러('%-.192s'를 삭제할 수 없습니다, ì—러번호: %M)"
+ nla "Fout bij verwijderen database (kan '%-.192s' niet verwijderen, Errcode: %M)"
nor "Feil ved fjerning (drop) av databasen (kan ikke slette '%-.192s', feil %M)"
norwegian-ny "Feil ved fjerning (drop) av databasen (kan ikkje slette '%-.192s', feil %M)"
pol "Bł?d podczas usuwania bazy danych (nie można usun?ć '%-.192s', bł?d %M)"
@@ -204,9 +211,9 @@ ER_DB_DROP_DELETE
swe "Fel vid radering av databasen (Kan inte radera '%-.192s'. Felkod: %M)"
ukr "Ðе можу видалити базу данних (Ðе можу видалити '%-.192s', помилка: %M)"
ER_DB_DROP_RMDIR
+ chi "删除数æ®åº“错误(无法rmdir '%-.192s',错误å·ç ï¼š%M)"
cze "Chyba při rušení databáze (nemohu vymazat adresář '%-.192s', chyba %M)"
dan "Fejl ved sletting af database (kan ikke slette folderen '%-.192s', Fejlkode %M)"
- nla "Fout bij verwijderen database (kan rmdir '%-.192s' niet uitvoeren, Errcode: %M)"
eng "Error dropping database (can't rmdir '%-.192s', errno: %M)"
est "Viga andmebaasi kustutamisel (ei suuda kustutada kataloogi '%-.192s', veakood: %M)"
fre "Erreur en effaçant la base (rmdir '%-.192s', erreur %M)"
@@ -215,8 +222,9 @@ ER_DB_DROP_RMDIR
hindi "डेटाबेस डà¥à¤°à¥‰à¤ª में तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ ('%-.192s' rmdir नहीं कर सकते, errno: %M)"
hun "Adatbazis megszuntetesi hiba ('%-.192s' nem szuntetheto meg, hibakod: %M)"
ita "Errore durante la cancellazione del database (impossibile rmdir '%-.192s', errno: %M)"
- jpn "データベース削除エラー (ディレクトリ '%-.192s' を削除ã§ãã¾ã›ã‚“。エラー番å·: %M)"
+ jpn "データベース削除エラー (ディレクトリ '%-.192s' を削除ã§ãã¾ã›ã‚“。エラー番å·: %M)"
kor "ë°ì´íƒ€ë² ì´ìŠ¤ 제거 ì—러(rmdir '%-.192s'를 í•  수 없습니다, ì—러번호: %M)"
+ nla "Fout bij verwijderen database (kan rmdir '%-.192s' niet uitvoeren, Errcode: %M)"
nor "Feil ved sletting av database (kan ikke slette katalogen '%-.192s', feil %M)"
norwegian-ny "Feil ved sletting av database (kan ikkje slette katalogen '%-.192s', feil %M)"
pol "Bł?d podczas usuwania bazy danych (nie można wykonać rmdir '%-.192s', bł?d %M)"
@@ -229,9 +237,9 @@ ER_DB_DROP_RMDIR
swe "Fel vid radering av databasen (Kan inte radera biblioteket '%-.192s'. Felkod: %M)"
ukr "Ðе можу видалити базу данних (Ðе можу видалити теку '%-.192s', помилка: %M)"
ER_CANT_DELETE_FILE
+ chi "删除'%-.192s'出错(错误å·ç ï¼š%M)"
cze "Chyba při výmazu '%-.192s' (chybový kód: %M)"
dan "Fejl ved sletning af '%-.192s' (Fejlkode: %M)"
- nla "Fout bij het verwijderen van '%-.192s' (Errcode: %M)"
eng "Error on delete of '%-.192s' (errno: %M)"
est "Viga '%-.192s' kustutamisel (veakood: %M)"
fre "Erreur en effaçant '%-.192s' (Errcode: %M)"
@@ -240,8 +248,9 @@ ER_CANT_DELETE_FILE
hindi "'%-.192s' के हटाने पर तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ (errno: %M)"
hun "Torlesi hiba: '%-.192s' (hibakod: %M)"
ita "Errore durante la cancellazione di '%-.192s' (errno: %M)"
- jpn "ファイル '%-.192s' ã®å‰Šé™¤ã‚¨ãƒ©ãƒ¼ (エラー番å·: %M)"
+ jpn "ファイル '%-.192s' ã®å‰Šé™¤ã‚¨ãƒ©ãƒ¼ (エラー番å·: %M)"
kor "'%-.192s' ì‚­ì œ 중 ì—러 (ì—러번호: %M)"
+ nla "Fout bij het verwijderen van '%-.192s' (Errcode: %M)"
nor "Feil ved sletting av '%-.192s' (Feilkode: %M)"
norwegian-ny "Feil ved sletting av '%-.192s' (Feilkode: %M)"
pol "Bł?d podczas usuwania '%-.192s' (Kod błędu: %M)"
@@ -254,9 +263,9 @@ ER_CANT_DELETE_FILE
swe "Kan inte radera filen '%-.192s' (Felkod: %M)"
ukr "Ðе можу видалити '%-.192s' (помилка: %M)"
ER_CANT_FIND_SYSTEM_REC
+ chi "无法在系统表中读å–记录"
cze "Nemohu Äíst záznam v systémové tabulce"
dan "Kan ikke læse posten i systemfolderen"
- nla "Kan record niet lezen in de systeem tabel"
eng "Can't read record in system table"
est "Ei suuda lugeda kirjet süsteemsest tabelist"
fre "Ne peut lire un enregistrement de la table 'system'"
@@ -267,6 +276,7 @@ ER_CANT_FIND_SYSTEM_REC
ita "Impossibile leggere il record dalla tabella di sistema"
jpn "システム表ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“。"
kor "system í…Œì´ë¸”ì—ì„œ 레코드를 ì½ì„ 수 없습니다."
+ nla "Kan record niet lezen in de systeem tabel"
nor "Kan ikke lese posten i systemkatalogen"
norwegian-ny "Kan ikkje lese posten i systemkatalogen"
pol "Nie można odczytać rekordu z tabeli systemowej"
@@ -279,9 +289,9 @@ ER_CANT_FIND_SYSTEM_REC
swe "Hittar inte posten i systemregistret"
ukr "Ðе можу зчитати Ð·Ð°Ð¿Ð¸Ñ Ð· ÑиÑтемної таблиці"
ER_CANT_GET_STAT
+ chi "无法获得'%-.200s'的状æ€ï¼ˆé”™è¯¯å·ç ï¼š%M)"
cze "Nemohu získat stav '%-.200s' (chybový kód: %M)"
dan "Kan ikke læse status af '%-.200s' (Fejlkode: %M)"
- nla "Kan de status niet krijgen van '%-.200s' (Errcode: %M)"
eng "Can't get status of '%-.200s' (errno: %M)"
est "Ei suuda lugeda '%-.200s' olekut (veakood: %M)"
fre "Ne peut obtenir le status de '%-.200s' (Errcode: %M)"
@@ -292,6 +302,7 @@ ER_CANT_GET_STAT
ita "Impossibile leggere lo stato di '%-.200s' (errno: %M)"
jpn "'%-.200s' ã®çŠ¶æ…‹ã‚’å–å¾—ã§ãã¾ã›ã‚“。(エラー番å·: %M)"
kor "'%-.200s'ì˜ ìƒíƒœë¥¼ 얻지 못했습니다. (ì—러번호: %M)"
+ nla "Kan de status niet krijgen van '%-.200s' (Errcode: %M)"
nor "Kan ikke lese statusen til '%-.200s' (Feilkode: %M)"
norwegian-ny "Kan ikkje lese statusen til '%-.200s' (Feilkode: %M)"
pol "Nie można otrzymać statusu '%-.200s' (Kod błędu: %M)"
@@ -304,9 +315,9 @@ ER_CANT_GET_STAT
swe "Kan inte läsa filinformationen (stat) från '%-.200s' (Felkod: %M)"
ukr "Ðе можу отримати ÑÑ‚Ð°Ñ‚ÑƒÑ '%-.200s' (помилка: %M)"
ER_CANT_GET_WD
+ chi "无法获å–工作目录(错误å·ç ï¼š%M)"
cze "Chyba při zjišťování pracovní adresář (chybový kód: %M)"
dan "Kan ikke læse aktive folder (Fejlkode: %M)"
- nla "Kan de werkdirectory niet krijgen (Errcode: %M)"
eng "Can't get working directory (errno: %M)"
est "Ei suuda identifitseerida jooksvat kataloogi (veakood: %M)"
fre "Ne peut obtenir le répertoire de travail (Errcode: %M)"
@@ -317,6 +328,7 @@ ER_CANT_GET_WD
ita "Impossibile leggere la directory di lavoro (errno: %M)"
jpn "作業ディレクトリをå–å¾—ã§ãã¾ã›ã‚“。(エラー番å·: %M)"
kor "수행 디렉토리를 찾지 못했습니다. (ì—러번호: %M)"
+ nla "Kan de werkdirectory niet krijgen (Errcode: %M)"
nor "Kan ikke lese aktiv katalog(Feilkode: %M)"
norwegian-ny "Kan ikkje lese aktiv katalog(Feilkode: %M)"
pol "Nie można rozpoznać aktualnego katalogu (Kod błędu: %M)"
@@ -329,9 +341,9 @@ ER_CANT_GET_WD
swe "Kan inte inte läsa aktivt bibliotek. (Felkod: %M)"
ukr "Ðе можу визначити робочу теку (помилка: %M)"
ER_CANT_LOCK
+ chi "无法é”定文件(错误å·ç ï¼š%M)"
cze "Nemohu uzamknout soubor (chybový kód: %M)"
dan "Kan ikke låse fil (Fejlkode: %M)"
- nla "Kan de file niet blokeren (Errcode: %M)"
eng "Can't lock file (errno: %M)"
est "Ei suuda lukustada faili (veakood: %M)"
fre "Ne peut verrouiller le fichier (Errcode: %M)"
@@ -342,6 +354,7 @@ ER_CANT_LOCK
ita "Impossibile il locking il file (errno: %M)"
jpn "ファイルをロックã§ãã¾ã›ã‚“。(エラー番å·: %M)"
kor "í™”ì¼ì„ 잠그지(lock) 못했습니다. (ì—러번호: %M)"
+ nla "Kan de file niet blokeren (Errcode: %M)"
nor "Kan ikke låse fila (Feilkode: %M)"
norwegian-ny "Kan ikkje låse fila (Feilkode: %M)"
pol "Nie można zablokować pliku (Kod błędu: %M)"
@@ -354,9 +367,9 @@ ER_CANT_LOCK
swe "Kan inte låsa filen. (Felkod: %M)"
ukr "Ðе можу заблокувати файл (помилка: %M)"
ER_CANT_OPEN_FILE
- cze "Nemohu otevřít soubor '%-.200s' (chybový kód: %M)"
+ chi "无法打开文件:'%-.200s'(错误å·ç ï¼š%M)"
+ cze "Nemohu otevřít soubor '%-.200s' (chybový kód: %M)"
dan "Kan ikke åbne fil: '%-.200s' (Fejlkode: %M)"
- nla "Kan de file '%-.200s' niet openen (Errcode: %M)"
eng "Can't open file: '%-.200s' (errno: %M)"
est "Ei suuda avada faili '%-.200s' (veakood: %M)"
fre "Ne peut ouvrir le fichier: '%-.200s' (Errcode: %M)"
@@ -367,6 +380,7 @@ ER_CANT_OPEN_FILE
ita "Impossibile aprire il file: '%-.200s' (errno: %M)"
jpn "ファイル '%-.200s' をオープンã§ãã¾ã›ã‚“。(エラー番å·: %M)"
kor "í™”ì¼ì„ 열지 못했습니다.: '%-.200s' (ì—러번호: %M)"
+ nla "Kan de file '%-.200s' niet openen (Errcode: %M)"
nor "Kan ikke åpne fila: '%-.200s' (Feilkode: %M)"
norwegian-ny "Kan ikkje åpne fila: '%-.200s' (Feilkode: %M)"
pol "Nie można otworzyć pliku: '%-.200s' (Kod błędu: %M)"
@@ -379,9 +393,9 @@ ER_CANT_OPEN_FILE
swe "Kan inte använda '%-.200s' (Felkod: %M)"
ukr "Ðе можу відкрити файл: '%-.200s' (помилка: %M)"
ER_FILE_NOT_FOUND
+ chi "找ä¸åˆ°æ–‡ä»¶ï¼š'%-.200s'(错误å·ç ï¼š%M)"
cze "Nemohu najít soubor '%-.200s' (chybový kód: %M)"
dan "Kan ikke finde fila: '%-.200s' (Fejlkode: %M)"
- nla "Kan de file: '%-.200s' niet vinden (Errcode: %M)"
eng "Can't find file: '%-.200s' (errno: %M)"
est "Ei suuda leida faili '%-.200s' (veakood: %M)"
fre "Ne peut trouver le fichier: '%-.200s' (Errcode: %M)"
@@ -392,6 +406,7 @@ ER_FILE_NOT_FOUND
ita "Impossibile trovare il file: '%-.200s' (errno: %M)"
jpn "ファイル '%-.200s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。(エラー番å·: %M)"
kor "í™”ì¼ì„ 찾지 못했습니다.: '%-.200s' (ì—러번호: %M)"
+ nla "Kan de file: '%-.200s' niet vinden (Errcode: %M)"
nor "Kan ikke finne fila: '%-.200s' (Feilkode: %M)"
norwegian-ny "Kan ikkje finne fila: '%-.200s' (Feilkode: %M)"
pol "Nie można znaleĽć pliku: '%-.200s' (Kod błędu: %M)"
@@ -404,9 +419,9 @@ ER_FILE_NOT_FOUND
swe "Hittar inte filen '%-.200s' (Felkod: %M)"
ukr "Ðе можу знайти файл: '%-.200s' (помилка: %M)"
ER_CANT_READ_DIR
+ chi "无法读å–'%-.192s'的文件夹(错误å·ç ï¼š%M)"
cze "Nemohu Äíst adresář '%-.192s' (chybový kód: %M)"
dan "Kan ikke læse folder '%-.192s' (Fejlkode: %M)"
- nla "Kan de directory niet lezen van '%-.192s' (Errcode: %M)"
eng "Can't read dir of '%-.192s' (errno: %M)"
est "Ei suuda lugeda kataloogi '%-.192s' (veakood: %M)"
fre "Ne peut lire le répertoire de '%-.192s' (Errcode: %M)"
@@ -417,6 +432,7 @@ ER_CANT_READ_DIR
ita "Impossibile leggere la directory di '%-.192s' (errno: %M)"
jpn "ディレクトリ '%-.192s' を読ã¿è¾¼ã‚ã¾ã›ã‚“。(エラー番å·: %M)"
kor "'%-.192s'디렉토리를 ì½ì§€ 못했습니다. (ì—러번호: %M)"
+ nla "Kan de directory niet lezen van '%-.192s' (Errcode: %M)"
nor "Kan ikke lese katalogen '%-.192s' (Feilkode: %M)"
norwegian-ny "Kan ikkje lese katalogen '%-.192s' (Feilkode: %M)"
pol "Nie można odczytać katalogu '%-.192s' (Kod błędu: %M)"
@@ -429,9 +445,9 @@ ER_CANT_READ_DIR
swe "Kan inte läsa från bibliotek '%-.192s' (Felkod: %M)"
ukr "Ðе можу прочитати теку '%-.192s' (помилка: %M)"
ER_CANT_SET_WD
- cze "Nemohu změnit adresář na '%-.192s' (chybový kód: %M)"
+ chi "无法将dir更改为'%-.192s'(错误å·ç ï¼š%M)"
+ cze "Nemohu změnit adresář na '%-.192s' (chybový kód: %M)"
dan "Kan ikke skifte folder til '%-.192s' (Fejlkode: %M)"
- nla "Kan de directory niet veranderen naar '%-.192s' (Errcode: %M)"
eng "Can't change dir to '%-.192s' (errno: %M)"
est "Ei suuda siseneda kataloogi '%-.192s' (veakood: %M)"
fre "Ne peut changer le répertoire pour '%-.192s' (Errcode: %M)"
@@ -442,6 +458,7 @@ ER_CANT_SET_WD
ita "Impossibile cambiare la directory in '%-.192s' (errno: %M)"
jpn "ディレクトリ '%-.192s' ã«ç§»å‹•ã§ãã¾ã›ã‚“。(エラー番å·: %M)"
kor "'%-.192s'디렉토리로 ì´ë™í•  수 없었습니다. (ì—러번호: %M)"
+ nla "Kan de directory niet veranderen naar '%-.192s' (Errcode: %M)"
nor "Kan ikke skifte katalog til '%-.192s' (Feilkode: %M)"
norwegian-ny "Kan ikkje skifte katalog til '%-.192s' (Feilkode: %M)"
pol "Nie można zmienić katalogu na '%-.192s' (Kod błędu: %M)"
@@ -454,9 +471,9 @@ ER_CANT_SET_WD
swe "Kan inte byta till '%-.192s' (Felkod: %M)"
ukr "Ðе можу перейти у теку '%-.192s' (помилка: %M)"
ER_CHECKREAD
+ chi "这个表自上次读åŽæ•°æ®æœ‰å˜åŒ–'%-.192s'"
cze "Záznam byl zmÄ›nÄ›n od posledního Ätení v tabulce '%-.192s'"
dan "Posten er ændret siden sidste læsning '%-.192s'"
- nla "Record is veranderd sinds de laatste lees activiteit in de tabel '%-.192s'"
eng "Record has changed since last read in table '%-.192s'"
est "Kirje tabelis '%-.192s' on muutunud viimasest lugemisest saadik"
fre "Enregistrement modifié depuis sa dernière lecture dans la table '%-.192s'"
@@ -467,6 +484,7 @@ ER_CHECKREAD
ita "Il record e` cambiato dall'ultima lettura della tabella '%-.192s'"
jpn "表 '%-.192s' ã®æœ€å¾Œã®èª­ã¿è¾¼ã¿æ™‚点ã‹ã‚‰ã€ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒå¤‰åŒ–ã—ã¾ã—ãŸã€‚"
kor "í…Œì´ë¸” '%-.192s'ì—ì„œ 마지막으로 ì½ì€ 후 Recordê°€ 변경ë˜ì—ˆìŠµë‹ˆë‹¤."
+ nla "Record is veranderd sinds de laatste lees activiteit in de tabel '%-.192s'"
nor "Posten har blitt endret siden den ble lest '%-.192s'"
norwegian-ny "Posten har vorte endra sidan den sist vart lesen '%-.192s'"
pol "Rekord został zmieniony od ostaniego odczytania z tabeli '%-.192s'"
@@ -479,9 +497,9 @@ ER_CHECKREAD
swe "Posten har förändrats sedan den lästes i register '%-.192s'"
ukr "Ð—Ð°Ð¿Ð¸Ñ Ð±ÑƒÐ»Ð¾ змінено з чаÑу оÑтаннього Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· таблиці '%-.192s'"
ER_DISK_FULL
+ chi "ç£ç›˜å·²æ»¡(%s);等待释放一些空间...(错误å·ç ï¼š%M)"
cze "Disk je plný (%s), Äekám na uvolnÄ›ní nÄ›jakého místa ... (chybový kód: %M)"
dan "Ikke mere diskplads (%s). Venter på at få frigjort plads... (Fejlkode: %M)"
- nla "Schijf vol (%s). Aan het wachten totdat er ruimte vrij wordt gemaakt... (Errcode: %M)"
eng "Disk full (%s); waiting for someone to free some space... (errno: %M)"
est "Ketas täis (%s). Ootame kuni tekib vaba ruumi... (veakood: %M)"
fre "Disque plein (%s). J'attend que quelqu'un libère de l'espace... (Errcode: %M)"
@@ -492,6 +510,7 @@ ER_DISK_FULL
ita "Disco pieno (%s). In attesa che qualcuno liberi un po' di spazio... (errno: %M)"
jpn "ディスク領域ä¸è¶³ã§ã™(%s)。(エラー番å·: %M)"
kor "Disk full (%s). 다른 ì‚¬ëžŒì´ ì§€ìš¸ë•Œê¹Œì§€ 기다립니다... (ì—러번호: %M)"
+ nla "Schijf vol (%s). Aan het wachten totdat er ruimte vrij wordt gemaakt... (Errcode: %M)"
nor "Ikke mer diskplass (%s). Venter på å få frigjort plass... (Feilkode: %M)"
norwegian-ny "Ikkje meir diskplass (%s). Ventar på å få frigjort plass... (Feilkode: %M)"
pol "Dysk pełny (%s). Oczekiwanie na zwolnienie miejsca... (Kod błędu: %M)"
@@ -504,9 +523,9 @@ ER_DISK_FULL
swe "Disken är full (%s). Väntar tills det finns ledigt utrymme... (Felkod: %M)"
ukr "ДиÑк заповнений (%s). Вичикую, доки звільнитьÑÑ Ñ‚Ñ€Ð¾Ñ…Ð¸ міÑцÑ... (помилка: %M)"
ER_DUP_KEY 23000
+ chi "ä¸èƒ½å†™;表'%-.192s'中有é‡å¤ç´¢å¼•"
cze "Nemohu zapsat, zdvojený klÃ­Ä v tabulce '%-.192s'"
dan "Kan ikke skrive, flere ens nøgler i tabellen '%-.192s'"
- nla "Kan niet schrijven, dubbele zoeksleutel in tabel '%-.192s'"
eng "Can't write; duplicate key in table '%-.192s'"
est "Ei saa kirjutada, korduv võti tabelis '%-.192s'"
fre "Ecriture impossible, doublon dans une clé de la table '%-.192s'"
@@ -517,6 +536,7 @@ ER_DUP_KEY 23000
ita "Scrittura impossibile: chiave duplicata nella tabella '%-.192s'"
jpn "書ãè¾¼ã‚ã¾ã›ã‚“。表 '%-.192s' ã«é‡è¤‡ã™ã‚‹ã‚­ãƒ¼ãŒã‚ã‚Šã¾ã™ã€‚"
kor "기ë¡í•  수 없습니다., í…Œì´ë¸” '%-.192s'ì—ì„œ 중복 키"
+ nla "Kan niet schrijven, dubbele zoeksleutel in tabel '%-.192s'"
nor "Kan ikke skrive, flere like nøkler i tabellen '%-.192s'"
norwegian-ny "Kan ikkje skrive, flere like nyklar i tabellen '%-.192s'"
pol "Nie można zapisać, powtórzone klucze w tabeli '%-.192s'"
@@ -529,9 +549,9 @@ ER_DUP_KEY 23000
swe "Kan inte skriva, dubbel söknyckel i register '%-.192s'"
ukr "Ðе можу запиÑати, дублюючийÑÑ ÐºÐ»ÑŽÑ‡ в таблиці '%-.192s'"
ER_ERROR_ON_CLOSE
- cze "Chyba při zavírání '%-.192s' (chybový kód: %M)"
+ chi "'%-.192s'关闭时出错(错误å·ç ï¼š%M)"
+ cze "Chyba při zavírání '%-.192s' (chybový kód: %M)"
dan "Fejl ved lukning af '%-.192s' (Fejlkode: %M)"
- nla "Fout bij het sluiten van '%-.192s' (Errcode: %M)"
eng "Error on close of '%-.192s' (errno: %M)"
est "Viga faili '%-.192s' sulgemisel (veakood: %M)"
fre "Erreur a la fermeture de '%-.192s' (Errcode: %M)"
@@ -542,6 +562,7 @@ ER_ERROR_ON_CLOSE
ita "Errore durante la chiusura di '%-.192s' (errno: %M)"
jpn "'%-.192s' ã®ã‚¯ãƒ­ãƒ¼ã‚ºæ™‚エラー (エラー番å·: %M)"
kor "'%-.192s'닫는 중 ì—러 (ì—러번호: %M)"
+ nla "Fout bij het sluiten van '%-.192s' (Errcode: %M)"
nor "Feil ved lukking av '%-.192s' (Feilkode: %M)"
norwegian-ny "Feil ved lukking av '%-.192s' (Feilkode: %M)"
pol "Bł?d podczas zamykania '%-.192s' (Kod błędu: %M)"
@@ -554,9 +575,9 @@ ER_ERROR_ON_CLOSE
swe "Fick fel vid stängning av '%-.192s' (Felkod: %M)"
ukr "Ðе можу закрити '%-.192s' (помилка: %M)"
ER_ERROR_ON_READ
+ chi "读å–文件'%-.200s'错误(错误å·ç ï¼š%M)"
cze "Chyba pÅ™i Ätení souboru '%-.200s' (chybový kód: %M)"
dan "Fejl ved læsning af '%-.200s' (Fejlkode: %M)"
- nla "Fout bij het lezen van file '%-.200s' (Errcode: %M)"
eng "Error reading file '%-.200s' (errno: %M)"
est "Viga faili '%-.200s' lugemisel (veakood: %M)"
fre "Erreur en lecture du fichier '%-.200s' (Errcode: %M)"
@@ -567,6 +588,7 @@ ER_ERROR_ON_READ
ita "Errore durante la lettura del file '%-.200s' (errno: %M)"
jpn "ファイル '%-.200s' ã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ (エラー番å·: %M)"
kor "'%-.200s'í™”ì¼ ì½ê¸° ì—러 (ì—러번호: %M)"
+ nla "Fout bij het lezen van file '%-.200s' (Errcode: %M)"
nor "Feil ved lesing av '%-.200s' (Feilkode: %M)"
norwegian-ny "Feil ved lesing av '%-.200s' (Feilkode: %M)"
pol "Bł?d podczas odczytu pliku '%-.200s' (Kod błędu: %M)"
@@ -579,9 +601,9 @@ ER_ERROR_ON_READ
swe "Fick fel vid läsning av '%-.200s' (Felkod %M)"
ukr "Ðе можу прочитати файл '%-.200s' (помилка: %M)"
ER_ERROR_ON_RENAME
+ chi "é‡å‘½å'%-.210s'到'%-.210s'错误(错误å·ç ï¼š%M)"
cze "Chyba při přejmenování '%-.210s' na '%-.210s' (chybový kód: %M)"
dan "Fejl ved omdøbning af '%-.210s' til '%-.210s' (Fejlkode: %M)"
- nla "Fout bij het hernoemen van '%-.210s' naar '%-.210s' (Errcode: %M)"
eng "Error on rename of '%-.210s' to '%-.210s' (errno: %M)"
est "Viga faili '%-.210s' ümbernimetamisel '%-.210s'-ks (veakood: %M)"
fre "Erreur en renommant '%-.210s' en '%-.210s' (Errcode: %M)"
@@ -592,6 +614,7 @@ ER_ERROR_ON_RENAME
ita "Errore durante la rinominazione da '%-.210s' a '%-.210s' (errno: %M)"
jpn "'%-.210s' ã®åå‰ã‚’ '%-.210s' ã«å¤‰æ›´ã§ãã¾ã›ã‚“ (エラー番å·: %M)"
kor "'%-.210s'를 '%-.210s'ë¡œ ì´ë¦„ 변경중 ì—러 (ì—러번호: %M)"
+ nla "Fout bij het hernoemen van '%-.210s' naar '%-.210s' (Errcode: %M)"
nor "Feil ved omdøping av '%-.210s' til '%-.210s' (Feilkode: %M)"
norwegian-ny "Feil ved omdøyping av '%-.210s' til '%-.210s' (Feilkode: %M)"
pol "Bł?d podczas zmieniania nazwy '%-.210s' na '%-.210s' (Kod błędu: %M)"
@@ -604,9 +627,9 @@ ER_ERROR_ON_RENAME
swe "Kan inte byta namn från '%-.210s' till '%-.210s' (Felkod: %M)"
ukr "Ðе можу перейменувати '%-.210s' у '%-.210s' (помилка: %M)"
ER_ERROR_ON_WRITE
- cze "Chyba při zápisu do souboru '%-.200s' (chybový kód: %M)"
+ chi "写文件'%-.200s'错误(错误å·ç ï¼š%M)"
+ cze "Chyba při zápisu do souboru '%-.200s' (chybový kód: %M)"
dan "Fejl ved skriving av filen '%-.200s' (Fejlkode: %M)"
- nla "Fout bij het wegschrijven van file '%-.200s' (Errcode: %M)"
eng "Error writing file '%-.200s' (errno: %M)"
est "Viga faili '%-.200s' kirjutamisel (veakood: %M)"
fre "Erreur d'écriture du fichier '%-.200s' (Errcode: %M)"
@@ -617,6 +640,7 @@ ER_ERROR_ON_WRITE
ita "Errore durante la scrittura del file '%-.200s' (errno: %M)"
jpn "ファイル '%-.200s' ã®æ›¸ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼ (エラー番å·: %M)"
kor "'%-.200s'í™”ì¼ ê¸°ë¡ ì¤‘ ì—러 (ì—러번호: %M)"
+ nla "Fout bij het wegschrijven van file '%-.200s' (Errcode: %M)"
nor "Feil ved skriving av fila '%-.200s' (Feilkode: %M)"
norwegian-ny "Feil ved skriving av fila '%-.200s' (Feilkode: %M)"
pol "Bł?d podczas zapisywania pliku '%-.200s' (Kod błędu: %M)"
@@ -629,9 +653,9 @@ ER_ERROR_ON_WRITE
swe "Fick fel vid skrivning till '%-.200s' (Felkod %M)"
ukr "Ðе можу запиÑати файл '%-.200s' (помилка: %M)"
ER_FILE_USED
+ chi "'%-.192s'被é”定,ä¸èƒ½æ”¹å˜"
cze "'%-.192s' je zamÄen proti zmÄ›nám"
dan "'%-.192s' er låst mod opdateringer"
- nla "'%-.192s' is geblokeerd tegen veranderingen"
eng "'%-.192s' is locked against change"
est "'%-.192s' on lukustatud muudatuste vastu"
fre "'%-.192s' est verrouillé contre les modifications"
@@ -642,6 +666,7 @@ ER_FILE_USED
ita "'%-.192s' e` soggetto a lock contro i cambiamenti"
jpn "'%-.192s' ã¯ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚"
kor "'%-.192s'ê°€ 변경할 수 ì—†ë„ë¡ ìž ê²¨ìžˆìŠµë‹ˆë‹¤."
+ nla "'%-.192s' is geblokeerd tegen veranderingen"
nor "'%-.192s' er låst mot oppdateringer"
norwegian-ny "'%-.192s' er låst mot oppdateringar"
pol "'%-.192s' jest zablokowany na wypadek zmian"
@@ -654,9 +679,9 @@ ER_FILE_USED
swe "'%-.192s' är låst mot användning"
ukr "'%-.192s' заблокований на внеÑÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½"
ER_FILSORT_ABORT
+ chi "排åºä¸­æ­¢"
cze "Třídění přerušeno"
dan "Sortering afbrudt"
- nla "Sorteren afgebroken"
eng "Sort aborted"
est "Sorteerimine katkestatud"
fre "Tri alphabétique abandonné"
@@ -667,6 +692,7 @@ ER_FILSORT_ABORT
ita "Operazione di ordinamento abbandonata"
jpn "ソート処ç†ã‚’中断ã—ã¾ã—ãŸã€‚"
kor "소트가 중단ë˜ì—ˆìŠµë‹ˆë‹¤."
+ nla "Sorteren afgebroken"
nor "Sortering avbrutt"
norwegian-ny "Sortering avbrote"
pol "Sortowanie przerwane"
@@ -679,9 +705,9 @@ ER_FILSORT_ABORT
swe "Sorteringen avbruten"
ukr "Ð¡Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾"
ER_FORM_NOT_FOUND
+ chi "视图'%-.192s'ä¸å­˜åœ¨'%-.192s'"
cze "Pohled '%-.192s' pro '%-.192s' neexistuje"
dan "View '%-.192s' eksisterer ikke for '%-.192s'"
- nla "View '%-.192s' bestaat niet voor '%-.192s'"
eng "View '%-.192s' doesn't exist for '%-.192s'"
est "Vaade '%-.192s' ei eksisteeri '%-.192s' jaoks"
fre "La vue (View) '%-.192s' n'existe pas pour '%-.192s'"
@@ -692,6 +718,7 @@ ER_FORM_NOT_FOUND
ita "La view '%-.192s' non esiste per '%-.192s'"
jpn "ビュー '%-.192s' 㯠'%-.192s' ã«å­˜åœ¨ã—ã¾ã›ã‚“。"
kor "ë·° '%-.192s'ê°€ '%-.192s'ì—서는 존재하지 않습니다."
+ nla "View '%-.192s' bestaat niet voor '%-.192s'"
nor "View '%-.192s' eksisterer ikke for '%-.192s'"
norwegian-ny "View '%-.192s' eksisterar ikkje for '%-.192s'"
pol "Widok '%-.192s' nie istnieje dla '%-.192s'"
@@ -704,13 +731,14 @@ ER_FORM_NOT_FOUND
swe "Formulär '%-.192s' finns inte i '%-.192s'"
ukr "ВиглÑд '%-.192s' не Ñ–Ñнує Ð´Ð»Ñ '%-.192s'"
ER_GET_ERRNO
- nla "Fout %M van tabel handler %s"
+ chi "错误 %M, æ¥è‡ªå­˜å‚¨å¼•æ“Ž %s"
eng "Got error %M from storage engine %s"
fre "Reçu l'erreur %M du handler de la table %s"
ger "Fehler %M von Speicher-Engine %s"
greek "Ελήφθη μήνυμα λάθους %M από τον χειÏιστή πίνακα (table handler) %s"
hindi "%M तà¥à¤°à¥à¤Ÿà¤¿ %s सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन से"
ita "Rilevato l'errore %M dal gestore delle tabelle %s"
+ nla "Fout %M van tabel handler %s"
nor "Mottok feil %M fra tabell håndterer %s"
norwegian-ny "Mottok feil %M fra tabell handterar %s"
pol "Otrzymano bł?d %M z obsługi tabeli %s"
@@ -721,6 +749,7 @@ ER_GET_ERRNO
swe "Fick felkod %M från databashanteraren %s"
ukr "Отримано помилку %M від деÑкриптора таблиці %s"
ER_ILLEGAL_HA
+ chi "存储引擎%s %`s.%`s 表没有该选项"
eng "Storage engine %s of the table %`s.%`s doesn't have this option"
ger "Diese Option gibt es nicht in Speicher-Engine %s für %`s.%`s"
hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s में यह विकलà¥à¤ª उपलबà¥à¤§ नहीं है (टेबल: %`s.%`s)"
@@ -728,9 +757,9 @@ ER_ILLEGAL_HA
spa "El motor de almacenaje %s de la tabla %`s.%`s no contiene esta opción"
ukr "ДеÑкриптор %s таблиці %`s.%`s не має цієї влаÑтивоÑÑ‚Ñ–"
ER_KEY_NOT_FOUND
+ chi "无法在'%-.192s'中找到记录"
cze "Nemohu najít záznam v '%-.192s'"
dan "Kan ikke finde posten i '%-.192s'"
- nla "Kan record niet vinden in '%-.192s'"
eng "Can't find record in '%-.192s'"
est "Ei suuda leida kirjet '%-.192s'-s"
fre "Ne peut trouver l'enregistrement dans '%-.192s'"
@@ -741,6 +770,7 @@ ER_KEY_NOT_FOUND
ita "Impossibile trovare il record in '%-.192s'"
jpn "'%-.192s' ã«ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
kor "'%-.192s'ì—ì„œ 레코드를 ì°¾ì„ ìˆ˜ 없습니다."
+ nla "Kan record niet vinden in '%-.192s'"
nor "Kan ikke finne posten i '%-.192s'"
norwegian-ny "Kan ikkje finne posten i '%-.192s'"
pol "Nie można znaleĽć rekordu w '%-.192s'"
@@ -750,12 +780,12 @@ ER_KEY_NOT_FOUND
serbian "Ne mogu da pronađem slog u '%-.192s'"
slo "Nemôžem nájsť záznam v '%-.192s'"
spa "No puedo encontrar el registro en '%-.192s'"
- swe "Hittar inte posten '%-.192s'"
+ swe "Hittar inte posten '%-.192s'"
ukr "Ðе можу запиÑати у '%-.192s'"
ER_NOT_FORM_FILE
+ chi "文件中的信æ¯ä¸æ­£ç¡®ï¼š'%-.200s'"
cze "Nesprávná informace v souboru '%-.200s'"
dan "Forkert indhold i: '%-.200s'"
- nla "Verkeerde info in file: '%-.200s'"
eng "Incorrect information in file: '%-.200s'"
est "Vigane informatsioon failis '%-.200s'"
fre "Information erronnée dans le fichier: '%-.200s'"
@@ -766,6 +796,7 @@ ER_NOT_FORM_FILE
ita "Informazione errata nel file: '%-.200s'"
jpn "ファイル '%-.200s' 内ã®æƒ…å ±ãŒä¸æ­£ã§ã™ã€‚"
kor "í™”ì¼ì˜ 부정확한 ì •ë³´: '%-.200s'"
+ nla "Verkeerde info in file: '%-.200s'"
nor "Feil informasjon i filen: '%-.200s'"
norwegian-ny "Feil informasjon i fila: '%-.200s'"
pol "Niewła?ciwa informacja w pliku: '%-.200s'"
@@ -778,9 +809,9 @@ ER_NOT_FORM_FILE
swe "Felaktig fil: '%-.200s'"
ukr "Хибна Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ñƒ файлі: '%-.200s'"
ER_NOT_KEYFILE
+ chi "表'%-.200s'的索引æŸå;试ç€ä¿®å¤"
cze "Nesprávný klÃ­Ä pro tabulku '%-.200s'; pokuste se ho opravit"
dan "Fejl i indeksfilen til tabellen '%-.200s'; prøv at reparere den"
- nla "Verkeerde zoeksleutel file voor tabel: '%-.200s'; probeer het te repareren"
eng "Index for table '%-.200s' is corrupt; try to repair it"
est "Tabeli '%-.200s' võtmefail on vigane; proovi seda parandada"
fre "Index corrompu dans la table: '%-.200s'; essayez de le réparer"
@@ -791,6 +822,7 @@ ER_NOT_KEYFILE
ita "File chiave errato per la tabella : '%-.200s'; prova a riparalo"
jpn "表 '%-.200s' ã®ç´¢å¼•ãƒ•ã‚¡ã‚¤ãƒ«(key file)ã®å†…容ãŒä¸æ­£ã§ã™ã€‚修復を試行ã—ã¦ãã ã•ã„。"
kor "'%-.200s' í…Œì´ë¸”ì˜ ë¶€ì •í™•í•œ 키 존재. 수정하시오!"
+ nla "Verkeerde zoeksleutel file voor tabel: '%-.200s'; probeer het te repareren"
nor "Tabellen '%-.200s' har feil i nøkkelfilen; forsøk å reparer den"
norwegian-ny "Tabellen '%-.200s' har feil i nykkelfila; prøv å reparere den"
pol "Niewła?ciwy plik kluczy dla tabeli: '%-.200s'; spróbuj go naprawić"
@@ -803,9 +835,9 @@ ER_NOT_KEYFILE
swe "Fatalt fel vid hantering av register '%-.200s'; kör en reparation"
ukr "Хибний файл ключей Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ–: '%-.200s'; Спробуйте його відновити"
ER_OLD_KEYFILE
+ chi "表'%-.192s'çš„è€ç´¢å¼•æ–‡ä»¶æŸå; ä¿®å¤!"
cze "Starý klíÄový soubor pro '%-.192s'; opravte ho"
dan "Gammel indeksfil for tabellen '%-.192s'; reparer den"
- nla "Oude zoeksleutel file voor tabel '%-.192s'; repareer het!"
eng "Old key file for table '%-.192s'; repair it!"
est "Tabeli '%-.192s' võtmefail on aegunud; paranda see!"
fre "Vieux fichier d'index pour la table '%-.192s'; réparez le!"
@@ -816,6 +848,7 @@ ER_OLD_KEYFILE
ita "File chiave vecchio per la tabella '%-.192s'; riparalo!"
jpn "表 '%-.192s' ã®ç´¢å¼•ãƒ•ã‚¡ã‚¤ãƒ«(key file)ã¯å¤ã„å½¢å¼ã§ã™ã€‚修復ã—ã¦ãã ã•ã„。"
kor "'%-.192s' í…Œì´ë¸”ì˜ ì´ì „ë²„ì ¼ì˜ í‚¤ 존재. 수정하시오!"
+ nla "Oude zoeksleutel file voor tabel '%-.192s'; repareer het!"
nor "Gammel nøkkelfil for tabellen '%-.192s'; reparer den!"
norwegian-ny "Gammel nykkelfil for tabellen '%-.192s'; reparer den!"
pol "Plik kluczy dla tabeli '%-.192s' jest starego typu; napraw go!"
@@ -828,9 +861,9 @@ ER_OLD_KEYFILE
swe "Gammal nyckelfil '%-.192s'; reparera registret"
ukr "Старий файл ключей Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– '%-.192s'; Відновіть його!"
ER_OPEN_AS_READONLY
+ chi "表'%-.192s'åªå¯è¯»"
cze "'%-.192s' je jen pro Ätení"
dan "'%-.192s' er skrivebeskyttet"
- nla "'%-.192s' is alleen leesbaar"
eng "Table '%-.192s' is read only"
est "Tabel '%-.192s' on ainult lugemiseks"
fre "'%-.192s' est en lecture seulement"
@@ -841,6 +874,7 @@ ER_OPEN_AS_READONLY
ita "'%-.192s' e` di sola lettura"
jpn "表 '%-.192s' ã¯èª­ã¿è¾¼ã¿å°‚用ã§ã™ã€‚"
kor "í…Œì´ë¸” '%-.192s'는 ì½ê¸°ì „ìš© 입니다."
+ nla "'%-.192s' is alleen leesbaar"
nor "'%-.192s' er skrivebeskyttet"
norwegian-ny "'%-.192s' er skrivetryggja"
pol "'%-.192s' jest tylko do odczytu"
@@ -853,9 +887,9 @@ ER_OPEN_AS_READONLY
swe "'%-.192s' är skyddad mot förändring"
ukr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ '%-.192s' тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ"
ER_OUTOFMEMORY HY001 S1001
+ chi "内存ä¸è¶³; é‡å¯åŽé‡è¯•(éœ€è¦ %d bytes)"
cze "Málo paměti. Přestartujte daemona a zkuste znovu (je potřeba %d bytů)"
dan "Ikke mere hukommelse. Genstart serveren og prøv igen (mangler %d bytes)"
- nla "Geen geheugen meer. Herstart server en probeer opnieuw (%d bytes nodig)"
eng "Out of memory; restart server and try again (needed %d bytes)"
est "Mälu sai otsa. Proovi MariaDB uuesti käivitada (puudu jäi %d baiti)"
fre "Manque de mémoire. Redémarrez le démon et ré-essayez (%d octets nécessaires)"
@@ -865,6 +899,7 @@ ER_OUTOFMEMORY HY001 S1001
ita "Memoria esaurita. Fai ripartire il demone e riprova (richiesti %d bytes)"
jpn "メモリãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚サーãƒãƒ¼ã‚’å†èµ·å‹•ã—ã¦ã¿ã¦ãã ã•ã„。(%d ãƒã‚¤ãƒˆã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—)"
kor "Out of memory. ë°ëª¬ì„ 재 실행 후 다시 시작하시오 (needed %d bytes)"
+ nla "Geen geheugen meer. Herstart server en probeer opnieuw (%d bytes nodig)"
nor "Ikke mer minne. Star på nytt tjenesten og prøv igjen (trengte %d byter)"
norwegian-ny "Ikkje meir minne. Start på nytt tenesten og prøv igjen (trengte %d bytar)"
pol "Zbyt mało pamięci. Uruchom ponownie demona i spróbuj ponownie (potrzeba %d bajtów)"
@@ -877,9 +912,9 @@ ER_OUTOFMEMORY HY001 S1001
swe "Oväntat slut på minnet, starta om programmet och försök på nytt (Behövde %d bytes)"
ukr "Брак пам'ÑÑ‚Ñ–. РеÑтартуйте Ñервер та Ñпробуйте знову (потрібно %d байтів)"
ER_OUT_OF_SORTMEMORY HY001 S1001
+ chi "排åºå†…å­˜ä¸è¶³ï¼Œå¯ä»¥è€ƒè™‘增加实例排åºç¼“å­˜é‡"
cze "Málo paměti pro třídění. Zvyšte velikost třídícího bufferu"
dan "Ikke mere sorteringshukommelse. Øg sorteringshukommelse (sort buffer size) for serveren"
- nla "Geen geheugen om te sorteren. Verhoog de server sort buffer size"
eng "Out of sort memory, consider increasing server sort buffer size"
est "Mälu sai sorteerimisel otsa. Suurenda MariaDB-i sorteerimispuhvrit"
fre "Manque de mémoire pour le tri. Augmentez-la"
@@ -889,6 +924,7 @@ ER_OUT_OF_SORTMEMORY HY001 S1001
ita "Memoria per gli ordinamenti esaurita. Incrementare il 'sort_buffer' al demone"
jpn "ソートメモリãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚ソートãƒãƒƒãƒ•ã‚¡ã‚µã‚¤ã‚º(sort buffer size)ã®å¢—加を検討ã—ã¦ãã ã•ã„。"
kor "Out of sort memory. daemon sort bufferì˜ í¬ê¸°ë¥¼ ì¦ê°€ì‹œí‚¤ì„¸ìš”"
+ nla "Geen geheugen om te sorteren. Verhoog de server sort buffer size"
nor "Ikke mer sorteringsminne. Vurder å øke sorteringsminnet (sort buffer size) for tjenesten"
norwegian-ny "Ikkje meir sorteringsminne. Vurder å auke sorteringsminnet (sorteringsbuffer storleik) for tenesten"
pol "Zbyt mało pamięci dla sortowania. Zwiększ wielko?ć bufora demona dla sortowania"
@@ -901,9 +937,9 @@ ER_OUT_OF_SORTMEMORY HY001 S1001
swe "Sorteringsbufferten räcker inte till. Kontrollera startparametrarna"
ukr "Брак пам'ÑÑ‚Ñ– Ð´Ð»Ñ ÑортуваннÑ. Треба збільшити розмір буфера ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ Ñервера"
ER_UNEXPECTED_EOF
- cze "NeoÄekávaný konec souboru pÅ™i Ätení '%-.192s' (chybový kód: %M)"
+ chi "阅读文件'%-.192s'时出现æ„外的EOF(错误å·ç ï¼š%M)"
+ cze "NeoÄekávaný konec souboru pÅ™i Ätení '%-.192s' (chybový kód: %M)"
dan "Uventet afslutning på fil (eof) ved læsning af filen '%-.192s' (Fejlkode: %M)"
- nla "Onverwachte eof gevonden tijdens het lezen van file '%-.192s' (Errcode: %M)"
eng "Unexpected EOF found when reading file '%-.192s' (errno: %M)"
est "Ootamatu faililõpumärgend faili '%-.192s' lugemisel (veakood: %M)"
fre "Fin de fichier inattendue en lisant '%-.192s' (Errcode: %M)"
@@ -913,6 +949,7 @@ ER_UNEXPECTED_EOF
ita "Fine del file inaspettata durante la lettura del file '%-.192s' (errno: %M)"
jpn "ファイル '%-.192s' を読ã¿è¾¼ã¿ä¸­ã«äºˆæœŸã›ãšãƒ•ã‚¡ã‚¤ãƒ«ã®çµ‚端ã«é”ã—ã¾ã—ãŸã€‚(エラー番å·: %M)"
kor "'%-.192s' í™”ì¼ì„ ì½ëŠ” ë„중 ìž˜ëª»ëœ eofì„ ë°œê²¬ (ì—러번호: %M)"
+ nla "Onverwachte eof gevonden tijdens het lezen van file '%-.192s' (Errcode: %M)"
nor "Uventet slutt på fil (eof) ved lesing av filen '%-.192s' (Feilkode: %M)"
norwegian-ny "Uventa slutt på fil (eof) ved lesing av fila '%-.192s' (Feilkode: %M)"
pol "Nieoczekiwany 'eof' napotkany podczas czytania z pliku '%-.192s' (Kod błędu: %M)"
@@ -925,9 +962,9 @@ ER_UNEXPECTED_EOF
swe "Oväntat filslut vid läsning från '%-.192s' (Felkod: %M)"
ukr "Хибний кінець файлу '%-.192s' (помилка: %M)"
ER_CON_COUNT_ERROR 08004
+ chi "太多连接"
cze "Příliš mnoho spojení"
dan "For mange forbindelser (connections)"
- nla "Te veel verbindingen"
eng "Too many connections"
est "Liiga palju samaaegseid ühendusi"
fre "Trop de connexions"
@@ -938,6 +975,7 @@ ER_CON_COUNT_ERROR 08004
ita "Troppe connessioni"
jpn "接続ãŒå¤šã™ãŽã¾ã™ã€‚"
kor "너무 ë§Žì€ ì—°ê²°... max_connectionì„ ì¦ê°€ 시키시오..."
+ nla "Te veel verbindingen"
nor "For mange tilkoblinger (connections)"
norwegian-ny "For mange tilkoplingar (connections)"
pol "Zbyt wiele poł?czeń"
@@ -950,9 +988,9 @@ ER_CON_COUNT_ERROR 08004
swe "För många anslutningar"
ukr "Забагато з'єднань"
ER_OUT_OF_RESOURCES
+ chi "内存ä¸è¶³."
cze "Málo prostoru/paměti pro thread"
dan "Udgået for tråde/hukommelse"
- nla "Geen thread geheugen meer; controleer of mariadbd of andere processen al het beschikbare geheugen gebruikt. Zo niet, dan moet u wellicht 'ulimit' gebruiken om mariadbd toe te laten meer geheugen te benutten, of u kunt extra swap ruimte toevoegen"
eng "Out of memory."
est "Mälu sai otsa. Võimalik, et aitab swap-i lisamine või käsu 'ulimit' abil MariaDB-le rohkema mälu kasutamise lubamine"
fre "Manque de 'threads'/mémoire"
@@ -962,6 +1000,7 @@ ER_OUT_OF_RESOURCES
ita "Fine dello spazio/memoria per i thread"
jpn "メモリãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚mariadbd ã‚„ãã®ä»–ã®ãƒ—ロセスãŒãƒ¡ãƒ¢ãƒªãƒ¼ã‚’使ã„切ã£ã¦ã„ãªã„ã‹ç¢ºèªã—ã¦ä¸‹ã•ã„。メモリーを使ã„切ã£ã¦ã„ãªã„å ´åˆã€'ulimit'ã®è¨­å®šç­‰ã§ mariadbd ã®ãƒ¡ãƒ¢ãƒªãƒ¼ä½¿ç”¨æœ€å¤§é‡ã‚’多ãã™ã‚‹ã‹ã€ã‚¹ãƒ¯ãƒƒãƒ—領域を増やã™å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。"
# This message failed to convert from euc-kr, skipped
+ nla "Geen thread geheugen meer; controleer of mariadbd of andere processen al het beschikbare geheugen gebruikt. Zo niet, dan moet u wellicht 'ulimit' gebruiken om mariadbd toe te laten meer geheugen te benutten, of u kunt extra swap ruimte toevoegen"
nor "Tomt for tråd plass/minne"
norwegian-ny "Tomt for tråd plass/minne"
pol "Zbyt mało miejsca/pamięci dla w?tku"
@@ -974,9 +1013,9 @@ ER_OUT_OF_RESOURCES
swe "Fick slut på minnet."
ukr "Брак пам'ÑÑ‚Ñ–."
ER_BAD_HOST_ERROR 08S01
+ chi "ä¸èƒ½ä»Žä½ çš„地å€èŽ·å–主机å称"
cze "Nemohu zjistit jméno stroje pro Vaši adresu"
dan "Kan ikke få værtsnavn for din adresse"
- nla "Kan de hostname niet krijgen van uw adres"
eng "Can't get hostname for your address"
est "Ei suuda lahendada IP aadressi masina nimeks"
fre "Ne peut obtenir de hostname pour votre adresse"
@@ -987,6 +1026,7 @@ ER_BAD_HOST_ERROR 08S01
ita "Impossibile risalire al nome dell'host dall'indirizzo (risoluzione inversa)"
jpn "IPアドレスã‹ã‚‰ãƒ›ã‚¹ãƒˆåを解決ã§ãã¾ã›ã‚“。"
kor "ë‹¹ì‹ ì˜ ì»´í“¨í„°ì˜ í˜¸ìŠ¤íŠ¸ì´ë¦„ì„ ì–»ì„ ìˆ˜ 없습니다."
+ nla "Kan de hostname niet krijgen van uw adres"
nor "Kan ikke få tak i vertsnavn for din adresse"
norwegian-ny "Kan ikkje få tak i vertsnavn for di adresse"
pol "Nie można otrzymać nazwy hosta dla twojego adresu"
@@ -999,9 +1039,9 @@ ER_BAD_HOST_ERROR 08S01
swe "Kan inte hitta 'hostname' för din adress"
ukr "Ðе можу визначити ім'Ñ Ñ…Ð¾Ñту Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ñ— адреÑи"
ER_HANDSHAKE_ERROR 08S01
+ chi "åæ¡æ‰‹"
cze "Chyba při ustavování spojení"
dan "Forkert håndtryk (handshake)"
- nla "Verkeerde handshake"
eng "Bad handshake"
est "Väär handshake"
fre "Mauvais 'handshake'"
@@ -1011,6 +1051,7 @@ ER_HANDSHAKE_ERROR 08S01
hun "A kapcsolatfelvetel nem sikerult (Bad handshake)"
ita "Negoziazione impossibile"
jpn "ãƒãƒ³ãƒ‰ã‚·ã‚§ã‚¤ã‚¯ã‚¨ãƒ©ãƒ¼"
+ nla "Verkeerde handshake"
nor "Feil håndtrykk (handshake)"
norwegian-ny "Feil handtrykk (handshake)"
pol "ZÅ‚y uchwyt(handshake)"
@@ -1023,20 +1064,20 @@ ER_HANDSHAKE_ERROR 08S01
swe "Fel vid initiering av kommunikationen med klienten"
ukr "Ðевірна уÑтановка зв'Ñзку"
ER_DBACCESS_DENIED_ERROR 42000
+ chi "用户'%s'@'%s'æ— æƒè®¿é—®æ•°æ®åº“'%-.192s'"
cze "Přístup pro uživatele '%s'@'%s' k databázi '%-.192s' není povolen"
dan "Adgang nægtet bruger: '%s'@'%s' til databasen '%-.192s'"
- nla "Toegang geweigerd voor gebruiker: '%s'@'%s' naar database '%-.192s'"
eng "Access denied for user '%s'@'%s' to database '%-.192s'"
- jps "ユーザー '%s'@'%s' ã® '%-.192s' データベースã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ã¾ã™",
est "Ligipääs keelatud kasutajale '%s'@'%s' andmebaasile '%-.192s'"
fre "Accès refusé pour l'utilisateur: '%s'@'%s'. Base '%-.192s'"
ger "Benutzer '%s'@'%s' hat keine Zugriffsberechtigung für Datenbank '%-.192s'"
greek "Δεν επιτέÏεται η Ï€Ïόσβαση στο χÏήστη: '%s'@'%s' στη βάση δεδομένων '%-.192s'"
- hun "A(z) '%s'@'%s' felhasznalo szamara tiltott eleres az '%-.192s' adabazishoz"
hindi "यूज़र '%s'@'%s' को डेटाबेस '%-.192s' की अनà¥à¤®à¤¤à¤¿ नहीं है"
+ hun "A(z) '%s'@'%s' felhasznalo szamara tiltott eleres az '%-.192s' adabazishoz"
ita "Accesso non consentito per l'utente: '%s'@'%s' al database '%-.192s'"
jpn "ユーザー '%s'@'%s' ã® '%-.192s' データベースã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ã¾ã™"
kor "'%s'@'%s' 사용ìžëŠ” '%-.192s' ë°ì´íƒ€ë² ì´ìŠ¤ì— ì ‘ê·¼ì´ ê±°ë¶€ ë˜ì—ˆìŠµë‹ˆë‹¤."
+ nla "Toegang geweigerd voor gebruiker: '%s'@'%s' naar database '%-.192s'"
nor "Tilgang nektet for bruker: '%s'@'%s' til databasen '%-.192s' nektet"
norwegian-ny "Tilgang ikkje tillate for brukar: '%s'@'%s' til databasen '%-.192s' nekta"
por "Acesso negado para o usuário '%s'@'%s' ao banco de dados '%-.192s'"
@@ -1048,11 +1089,10 @@ ER_DBACCESS_DENIED_ERROR 42000
swe "Användare '%s'@'%s' är ej berättigad att använda databasen %-.192s"
ukr "ДоÑтуп заборонено Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача: '%s'@'%s' до бази данних '%-.192s'"
ER_ACCESS_DENIED_ERROR 28000
+ chi "'%s'@'%s' 用户无æƒè®¿é—® (使用密ç : %s)"
cze "Přístup pro uživatele '%s'@'%s' (s heslem %s)"
dan "Adgang nægtet bruger: '%s'@'%s' (Bruger adgangskode: %s)"
- nla "Toegang geweigerd voor gebruiker: '%s'@'%s' (Wachtwoord gebruikt: %s)"
eng "Access denied for user '%s'@'%s' (using password: %s)"
- jps "ユーザー '%s'@'%s' ã‚’æ‹’å¦ã—ã¾ã™.uUsing password: %s)",
est "Ligipääs keelatud kasutajale '%s'@'%s' (kasutab parooli: %s)"
fre "Accès refusé pour l'utilisateur: '%s'@'%s' (mot de passe: %s)"
ger "Benutzer '%s'@'%s' hat keine Zugriffsberechtigung (verwendetes Passwort: %s)"
@@ -1062,6 +1102,7 @@ ER_ACCESS_DENIED_ERROR 28000
ita "Accesso non consentito per l'utente: '%s'@'%s' (Password: %s)"
jpn "ユーザー '%s'@'%s' ã‚’æ‹’å¦ã—ã¾ã™.uUsing password: %s)"
kor "'%s'@'%s' 사용ìžëŠ” ì ‘ê·¼ì´ ê±°ë¶€ ë˜ì—ˆìŠµë‹ˆë‹¤. (using password: %s)"
+ nla "Toegang geweigerd voor gebruiker: '%s'@'%s' (Wachtwoord gebruikt: %s)"
nor "Tilgang nektet for bruker: '%s'@'%s' (Bruker passord: %s)"
norwegian-ny "Tilgang ikke tillate for brukar: '%s'@'%s' (Brukar passord: %s)"
por "Acesso negado para o usuário '%s'@'%s' (senha usada: %s)"
@@ -1073,9 +1114,9 @@ ER_ACCESS_DENIED_ERROR 28000
swe "Användare '%s'@'%s' är ej berättigad att logga in (Använder lösen: %s)"
ukr "ДоÑтуп заборонено Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача: '%s'@'%s' (ВикориÑтано пароль: %s)"
ER_NO_DB_ERROR 3D000
+ chi "没有选择数æ®åº“"
cze "Nebyla vybrána žádná databáze"
dan "Ingen database valgt"
- nla "Geen database geselecteerd"
eng "No database selected"
est "Andmebaasi ei ole valitud"
fre "Aucune base n'a été sélectionnée"
@@ -1086,6 +1127,7 @@ ER_NO_DB_ERROR 3D000
ita "Nessun database selezionato"
jpn "データベースãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“。"
kor "ì„ íƒëœ ë°ì´íƒ€ë² ì´ìŠ¤ê°€ 없습니다."
+ nla "Geen database geselecteerd"
nor "Ingen database valgt"
norwegian-ny "Ingen database vald"
pol "Nie wybrano żadnej bazy danych"
@@ -1098,9 +1140,9 @@ ER_NO_DB_ERROR 3D000
swe "Ingen databas i användning"
ukr "Базу данних не вибрано"
ER_UNKNOWN_COM_ERROR 08S01
+ chi "未知的命令"
cze "Neznámý příkaz"
dan "Ukendt kommando"
- nla "Onbekend commando"
eng "Unknown command"
est "Tundmatu käsk"
fre "Commande inconnue"
@@ -1111,6 +1153,7 @@ ER_UNKNOWN_COM_ERROR 08S01
ita "Comando sconosciuto"
jpn "ä¸æ˜Žãªã‚³ãƒžãƒ³ãƒ‰ã§ã™ã€‚"
kor "명령어가 뭔지 모르겠어요..."
+ nla "Onbekend commando"
nor "Ukjent kommando"
norwegian-ny "Ukjent kommando"
pol "Nieznana komenda"
@@ -1123,9 +1166,9 @@ ER_UNKNOWN_COM_ERROR 08S01
swe "Okänt kommando"
ukr "Ðевідома команда"
ER_BAD_NULL_ERROR 23000
+ chi "列'%-.192s'ä¸èƒ½ä¸ºNULL"
cze "Sloupec '%-.192s' nemůže být null"
dan "Kolonne '%-.192s' kan ikke være NULL"
- nla "Kolom '%-.192s' kan niet null zijn"
eng "Column '%-.192s' cannot be null"
est "Tulp '%-.192s' ei saa omada nullväärtust"
fre "Le champ '%-.192s' ne peut être vide (null)"
@@ -1136,6 +1179,7 @@ ER_BAD_NULL_ERROR 23000
ita "La colonna '%-.192s' non puo` essere nulla"
jpn "列 '%-.192s' 㯠null ã«ã§ãã¾ã›ã‚“。"
kor "칼럼 '%-.192s'는 ë„(Null)ì´ ë˜ë©´ 안ë©ë‹ˆë‹¤. "
+ nla "Kolom '%-.192s' kan niet null zijn"
nor "Kolonne '%-.192s' kan ikke vere null"
norwegian-ny "Kolonne '%-.192s' kan ikkje vere null"
pol "Kolumna '%-.192s' nie może być null"
@@ -1148,9 +1192,9 @@ ER_BAD_NULL_ERROR 23000
swe "Kolumn '%-.192s' får inte vara NULL"
ukr "Стовбець '%-.192s' не може бути нульовим"
ER_BAD_DB_ERROR 42000
+ chi "未知数æ®åº“'%-.192s'"
cze "Neznámá databáze '%-.192s'"
dan "Ukendt database '%-.192s'"
- nla "Onbekende database '%-.192s'"
eng "Unknown database '%-.192s'"
est "Tundmatu andmebaas '%-.192s'"
fre "Base '%-.192s' inconnue"
@@ -1161,6 +1205,7 @@ ER_BAD_DB_ERROR 42000
ita "Database '%-.192s' sconosciuto"
jpn "'%-.192s' ã¯ä¸æ˜Žãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã§ã™ã€‚"
kor "ë°ì´íƒ€ë² ì´ìŠ¤ '%-.192s'는 알수 ì—†ìŒ"
+ nla "Onbekende database '%-.192s'"
nor "Ukjent database '%-.192s'"
norwegian-ny "Ukjent database '%-.192s'"
pol "Nieznana baza danych '%-.192s'"
@@ -1173,9 +1218,9 @@ ER_BAD_DB_ERROR 42000
swe "Okänd databas: '%-.192s'"
ukr "Ðевідома база данних '%-.192s'"
ER_TABLE_EXISTS_ERROR 42S01
+ chi "表'%-.192s'å·²ç»å­˜åœ¨"
cze "Tabulka '%-.192s' již existuje"
dan "Tabellen '%-.192s' findes allerede"
- nla "Tabel '%-.192s' bestaat al"
eng "Table '%-.192s' already exists"
est "Tabel '%-.192s' juba eksisteerib"
fre "La table '%-.192s' existe déjà"
@@ -1186,6 +1231,7 @@ ER_TABLE_EXISTS_ERROR 42S01
ita "La tabella '%-.192s' esiste gia`"
jpn "表 '%-.192s' ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
kor "í…Œì´ë¸” '%-.192s'는 ì´ë¯¸ 존재함"
+ nla "Tabel '%-.192s' bestaat al"
nor "Tabellen '%-.192s' eksisterer allerede"
norwegian-ny "Tabellen '%-.192s' eksisterar allereide"
pol "Tabela '%-.192s' już istnieje"
@@ -1198,9 +1244,9 @@ ER_TABLE_EXISTS_ERROR 42S01
swe "Tabellen '%-.192s' finns redan"
ukr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ '%-.192s' вже Ñ–Ñнує"
ER_BAD_TABLE_ERROR 42S02
+ chi "未知表'%-.100T'"
cze "Neznámá tabulka '%-.100T'"
dan "Ukendt tabel '%-.100T'"
- nla "Onbekende tabel '%-.100T'"
eng "Unknown table '%-.100T'"
est "Tundmatu tabel '%-.100T'"
fre "Table '%-.100T' inconnue"
@@ -1211,6 +1257,7 @@ ER_BAD_TABLE_ERROR 42S02
ita "Tabella '%-.100T' sconosciuta"
jpn "'%-.100T' ã¯ä¸æ˜Žãªè¡¨ã§ã™ã€‚"
kor "í…Œì´ë¸” '%-.100T'는 알수 ì—†ìŒ"
+ nla "Onbekende tabel '%-.100T'"
nor "Ukjent tabell '%-.100T'"
norwegian-ny "Ukjent tabell '%-.100T'"
pol "Nieznana tabela '%-.100T'"
@@ -1223,9 +1270,9 @@ ER_BAD_TABLE_ERROR 42S02
swe "Okänd tabell '%-.100T'"
ukr "Ðевідома Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ '%-.100T'"
ER_NON_UNIQ_ERROR 23000
+ chi "列å '%-.192s' 在 %-.192s 定义模糊"
cze "Sloupec '%-.192s' v %-.192s není zcela jasný"
dan "Felt: '%-.192s' i tabel %-.192s er ikke entydigt"
- nla "Kolom: '%-.192s' in %-.192s is niet eenduidig"
eng "Column '%-.192s' in %-.192s is ambiguous"
est "Väli '%-.192s' %-.192s-s ei ole ühene"
fre "Champ: '%-.192s' dans %-.192s est ambigu"
@@ -1236,6 +1283,7 @@ ER_NON_UNIQ_ERROR 23000
ita "Colonna: '%-.192s' di %-.192s e` ambigua"
jpn "列 '%-.192s' 㯠%-.192s 内ã§æ›–昧ã§ã™ã€‚"
kor "칼럼: '%-.192s' in '%-.192s' ì´ ëª¨í˜¸í•¨"
+ nla "Kolom: '%-.192s' in %-.192s is niet eenduidig"
nor "Felt: '%-.192s' i tabell %-.192s er ikke entydig"
norwegian-ny "Kolonne: '%-.192s' i tabell %-.192s er ikkje eintydig"
pol "Kolumna: '%-.192s' w %-.192s jest dwuznaczna"
@@ -1248,9 +1296,9 @@ ER_NON_UNIQ_ERROR 23000
swe "Kolumn '%-.192s' i %-.192s är inte unik"
ukr "Стовбець '%-.192s' у %-.192s визначений неоднозначно"
ER_SERVER_SHUTDOWN 08S01
+ chi "æœåŠ¡å™¨æ­£åœ¨å…³é—­"
cze "Probíhá ukonÄování práce serveru"
dan "Database nedlukning er i gang"
- nla "Bezig met het stoppen van de server"
eng "Server shutdown in progress"
est "Serveri seiskamine käib"
fre "Arrêt du serveur en cours"
@@ -1261,6 +1309,7 @@ ER_SERVER_SHUTDOWN 08S01
ita "Shutdown del server in corso"
jpn "サーãƒãƒ¼ã‚’シャットダウン中ã§ã™ã€‚"
kor "Server가 셧다운 중입니다."
+ nla "Bezig met het stoppen van de server"
nor "Database nedkobling er i gang"
norwegian-ny "Tenar nedkopling er i gang"
pol "Trwa kończenie działania serwera"
@@ -1273,9 +1322,9 @@ ER_SERVER_SHUTDOWN 08S01
swe "Servern går nu ned"
ukr "ЗавершуєтьÑÑ Ñ€Ð°Ð±Ð¾Ñ‚Ð° Ñервера"
ER_BAD_FIELD_ERROR 42S22 S0022
+ chi "未知列'%-.192s'在'%-.192s'"
cze "Neznámý sloupec '%-.192s' v %-.192s"
dan "Ukendt kolonne '%-.192s' i tabel %-.192s"
- nla "Onbekende kolom '%-.192s' in %-.192s"
eng "Unknown column '%-.192s' in '%-.192s'"
est "Tundmatu tulp '%-.192s' '%-.192s'-s"
fre "Champ '%-.192s' inconnu dans %-.192s"
@@ -1286,6 +1335,7 @@ ER_BAD_FIELD_ERROR 42S22 S0022
ita "Colonna sconosciuta '%-.192s' in '%-.192s'"
jpn "列 '%-.192s' 㯠'%-.192s' ã«ã¯ã‚ã‚Šã¾ã›ã‚“。"
kor "Unknown 칼럼 '%-.192s' in '%-.192s'"
+ nla "Onbekende kolom '%-.192s' in %-.192s"
nor "Ukjent kolonne '%-.192s' i tabell %-.192s"
norwegian-ny "Ukjent felt '%-.192s' i tabell %-.192s"
pol "Nieznana kolumna '%-.192s' w %-.192s"
@@ -1298,9 +1348,9 @@ ER_BAD_FIELD_ERROR 42S22 S0022
swe "Okänd kolumn '%-.192s' i %-.192s"
ukr "Ðевідомий Ñтовбець '%-.192s' у '%-.192s'"
ER_WRONG_FIELD_WITH_GROUP 42000 S1009
+ chi "'%-.192s' ä¸åœ¨ GROUP BY"
cze "Použité '%-.192s' nebylo v group by"
dan "Brugte '%-.192s' som ikke var i group by"
- nla "Opdracht gebruikt '%-.192s' dat niet in de GROUP BY voorkomt"
eng "'%-.192s' isn't in GROUP BY"
est "'%-.192s' puudub GROUP BY klauslis"
fre "'%-.192s' n'est pas dans 'group by'"
@@ -1311,6 +1361,7 @@ ER_WRONG_FIELD_WITH_GROUP 42000 S1009
ita "Usato '%-.192s' che non e` nel GROUP BY"
jpn "'%-.192s' ã¯GROUP BYå¥ã§æŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。"
kor "'%-.192s'ì€ GROUP BYì†ì— ì—†ìŒ"
+ nla "Opdracht gebruikt '%-.192s' dat niet in de GROUP BY voorkomt"
nor "Brukte '%-.192s' som ikke var i group by"
norwegian-ny "Brukte '%-.192s' som ikkje var i group by"
pol "Użyto '%-.192s' bez umieszczenia w group by"
@@ -1323,9 +1374,9 @@ ER_WRONG_FIELD_WITH_GROUP 42000 S1009
swe "'%-.192s' finns inte i GROUP BY"
ukr "'%-.192s' не є у GROUP BY"
ER_WRONG_GROUP_FIELD 42000 S1009
+ chi "ä¸èƒ½åœ¨'%-.192s'上分组"
cze "Nemohu použít group na '%-.192s'"
dan "Kan ikke gruppere på '%-.192s'"
- nla "Kan '%-.192s' niet groeperen"
eng "Can't group on '%-.192s'"
est "Ei saa grupeerida '%-.192s' järgi"
fre "Ne peut regrouper '%-.192s'"
@@ -1336,6 +1387,7 @@ ER_WRONG_GROUP_FIELD 42000 S1009
ita "Impossibile raggruppare per '%-.192s'"
jpn "'%-.192s' ã§ã®ã‚°ãƒ«ãƒ¼ãƒ—化ã¯ã§ãã¾ã›ã‚“。"
kor "'%-.192s'를 그룹할 수 ì—†ìŒ"
+ nla "Kan '%-.192s' niet groeperen"
nor "Kan ikke gruppere på '%-.192s'"
norwegian-ny "Kan ikkje gruppere på '%-.192s'"
pol "Nie można grupować po '%-.192s'"
@@ -1348,9 +1400,9 @@ ER_WRONG_GROUP_FIELD 42000 S1009
swe "Kan inte använda GROUP BY med '%-.192s'"
ukr "Ðе можу групувати по '%-.192s'"
ER_WRONG_SUM_SELECT 42000 S1009
+ chi "语å¥åœ¨åŒä¸€è¯­å¥é‡Œæœ‰æ±‚和函数和列"
cze "Příkaz obsahuje zároveň funkci sum a sloupce"
dan "Udtrykket har summer (sum) funktioner og kolonner i samme udtryk"
- nla "Opdracht heeft totaliseer functies en kolommen in dezelfde opdracht"
eng "Statement has sum functions and columns in same statement"
est "Lauses on korraga nii tulbad kui summeerimisfunktsioonid"
fre "Vous demandez la fonction sum() et des champs dans la même commande"
@@ -1359,6 +1411,7 @@ ER_WRONG_SUM_SELECT 42000 S1009
ita "Il comando ha una funzione SUM e una colonna non specificata nella GROUP BY"
jpn "集計関数ã¨é€šå¸¸ã®åˆ—ãŒåŒæ™‚ã«æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚"
kor "Statement ê°€ sumê¸°ëŠ¥ì„ ë™ìž‘중ì´ê³  ì¹¼ëŸ¼ë„ ë™ì¼í•œ statement입니다."
+ nla "Opdracht heeft totaliseer functies en kolommen in dezelfde opdracht"
nor "Uttrykket har summer (sum) funksjoner og kolonner i samme uttrykk"
norwegian-ny "Uttrykket har summer (sum) funksjoner og kolonner i same uttrykk"
pol "Zapytanie ma funkcje sumuj?ce i kolumny w tym samym zapytaniu"
@@ -1371,9 +1424,9 @@ ER_WRONG_SUM_SELECT 42000 S1009
swe "Kommandot har både sum functions och enkla funktioner"
ukr "У виразі викориÑтано підÑумовуючі функції порÑд з іменами Ñтовбців"
ER_WRONG_VALUE_COUNT 21S01
+ chi "列数与值数ä¸åŒ¹é…"
cze "PoÄet sloupců neodpovídá zadané hodnotÄ›"
dan "Kolonne tæller stemmer ikke med antallet af værdier"
- nla "Het aantal kolommen komt niet overeen met het aantal opgegeven waardes"
eng "Column count doesn't match value count"
est "Tulpade arv erineb väärtuste arvust"
ger "Die Anzahl der Spalten entspricht nicht der Anzahl der Werte"
@@ -1383,6 +1436,7 @@ ER_WRONG_VALUE_COUNT 21S01
ita "Il numero delle colonne non e` uguale al numero dei valori"
jpn "列数ãŒå€¤ã®å€‹æ•°ã¨ä¸€è‡´ã—ã¾ã›ã‚“。"
kor "ì¹¼ëŸ¼ì˜ ì¹´ìš´íŠ¸ê°€ ê°’ì˜ ì¹´ìš´íŠ¸ì™€ ì¼ì¹˜í•˜ì§€ 않습니다."
+ nla "Het aantal kolommen komt niet overeen met het aantal opgegeven waardes"
nor "Felt telling stemmer verdi telling"
norwegian-ny "Kolonne telling stemmer verdi telling"
pol "Liczba kolumn nie odpowiada liczbie warto?ci"
@@ -1395,9 +1449,9 @@ ER_WRONG_VALUE_COUNT 21S01
swe "Antalet kolumner motsvarar inte antalet värden"
ukr "КількіÑÑ‚ÑŒ Ñтовбців не Ñпівпадає з кількіÑÑ‚ÑŽ значень"
ER_TOO_LONG_IDENT 42000 S1009
+ chi "标识符'%-.100T'太长"
cze "Jméno identifikátoru '%-.100T' je příliš dlouhé"
dan "Navnet '%-.100T' er for langt"
- nla "Naam voor herkenning '%-.100T' is te lang"
eng "Identifier name '%-.100T' is too long"
est "Identifikaatori '%-.100T' nimi on liiga pikk"
fre "Le nom de l'identificateur '%-.100T' est trop long"
@@ -1408,6 +1462,7 @@ ER_TOO_LONG_IDENT 42000 S1009
ita "Il nome dell'identificatore '%-.100T' e` troppo lungo"
jpn "識別å­å '%-.100T' ã¯é•·ã™ãŽã¾ã™ã€‚"
kor "Identifier '%-.100T'는 너무 길군요."
+ nla "Naam voor herkenning '%-.100T' is te lang"
nor "Identifikator '%-.100T' er for lang"
norwegian-ny "Identifikator '%-.100T' er for lang"
pol "Nazwa identyfikatora '%-.100T' jest zbyt długa"
@@ -1420,9 +1475,9 @@ ER_TOO_LONG_IDENT 42000 S1009
swe "Kolumnnamn '%-.100T' är för långt"
ukr "Ім'Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð° '%-.100T' задовге"
ER_DUP_FIELDNAME 42S21 S1009
+ chi "列åé‡å¤ '%-.192s'"
cze "Zdvojené jméno sloupce '%-.192s'"
dan "Feltnavnet '%-.192s' findes allerede"
- nla "Dubbele kolom naam '%-.192s'"
eng "Duplicate column name '%-.192s'"
est "Kattuv tulba nimi '%-.192s'"
fre "Nom du champ '%-.192s' déjà utilisé"
@@ -1433,6 +1488,7 @@ ER_DUP_FIELDNAME 42S21 S1009
ita "Nome colonna duplicato '%-.192s'"
jpn "列å '%-.192s' ã¯é‡è¤‡ã—ã¦ã¾ã™ã€‚"
kor "ì¤‘ë³µëœ ì¹¼ëŸ¼ ì´ë¦„: '%-.192s'"
+ nla "Dubbele kolom naam '%-.192s'"
nor "Feltnavnet '%-.192s' eksisterte fra før"
norwegian-ny "Feltnamnet '%-.192s' eksisterte frå før"
pol "Powtórzona nazwa kolumny '%-.192s'"
@@ -1445,9 +1501,9 @@ ER_DUP_FIELDNAME 42S21 S1009
swe "Kolumnnamn '%-.192s finns flera gånger"
ukr "Дублююче ім'Ñ ÑÑ‚Ð¾Ð²Ð±Ñ†Ñ '%-.192s'"
ER_DUP_KEYNAME 42000 S1009
+ chi "索引åé‡å¤ '%-.192s'"
cze "Zdvojené jméno klíÄe '%-.192s'"
dan "Indeksnavnet '%-.192s' findes allerede"
- nla "Dubbele zoeksleutel naam '%-.192s'"
eng "Duplicate key name '%-.192s'"
est "Kattuv võtme nimi '%-.192s'"
fre "Nom de clef '%-.192s' déjà utilisé"
@@ -1458,6 +1514,7 @@ ER_DUP_KEYNAME 42000 S1009
ita "Nome chiave duplicato '%-.192s'"
jpn "索引å '%-.192s' ã¯é‡è¤‡ã—ã¦ã„ã¾ã™ã€‚"
kor "ì¤‘ë³µëœ í‚¤ ì´ë¦„ : '%-.192s'"
+ nla "Dubbele zoeksleutel naam '%-.192s'"
nor "Nøkkelnavnet '%-.192s' eksisterte fra før"
norwegian-ny "Nøkkelnamnet '%-.192s' eksisterte frå før"
pol "Powtórzony nazwa klucza '%-.192s'"
@@ -1472,34 +1529,35 @@ ER_DUP_KEYNAME 42000 S1009
# When using this error code, please use ER(ER_DUP_ENTRY_WITH_KEY_NAME)
# for the message string. See, for example, code in handler.cc.
ER_DUP_ENTRY 23000 S1009
- cze "Zdvojený klÃ­Ä '%-.192T' (Äíslo klíÄe %d)"
- dan "Ens værdier '%-.192T' for indeks %d"
- nla "Dubbele ingang '%-.192T' voor zoeksleutel %d"
- eng "Duplicate entry '%-.192T' for key %d"
- est "Kattuv väärtus '%-.192T' võtmele %d"
- fre "Duplicata du champ '%-.192T' pour la clef %d"
- ger "Doppelter Eintrag '%-.192T' für Schlüssel %d"
- greek "Διπλή εγγÏαφή '%-.192T' για το κλειδί %d"
- hindi "सामान पà¥à¤°à¤µà¥‡à¤¶ '%-.192T' KEY %d के लिà¤"
- hun "Duplikalt bejegyzes '%-.192T' a %d kulcs szerint"
- ita "Valore duplicato '%-.192T' per la chiave %d"
- jpn "'%-.192T' ã¯ç´¢å¼• %d ã§é‡è¤‡ã—ã¦ã„ã¾ã™ã€‚"
- kor "ì¤‘ë³µëœ ìž…ë ¥ ê°’ '%-.192T': key %d"
- nor "Like verdier '%-.192T' for nøkkel %d"
- norwegian-ny "Like verdiar '%-.192T' for nykkel %d"
- pol "Powtórzone wystąpienie '%-.192T' dla klucza %d"
- por "Entrada '%-.192T' duplicada para a chave %d"
- rum "Cimpul '%-.192T' e duplicat pentru cheia %d"
- rus "ДублирующаÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ '%-.192T' по ключу %d"
- serbian "Dupliran unos '%-.192T' za kljuÄ '%d'"
- slo "Opakovaný kÄ¾ÃºÄ '%-.192T' (Äíslo kľúÄa %d)"
- spa "Entrada duplicada '%-.192T' para la clave %d"
- swe "Dublett '%-.192T' för nyckel %d"
- ukr "Дублюючий Ð·Ð°Ð¿Ð¸Ñ '%-.192T' Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° %d"
+ chi "é‡å¤æ¡ç›®'%-.192T'在索引%d"
+ cze "Zdvojený klÃ­Ä '%-.192T' (Äíslo klíÄe %d)"
+ dan "Ens værdier '%-.192T' for indeks %d"
+ eng "Duplicate entry '%-.192T' for key %d"
+ est "Kattuv väärtus '%-.192T' võtmele %d"
+ fre "Duplicata du champ '%-.192T' pour la clef %d"
+ ger "Doppelter Eintrag '%-.192T' für Schlüssel %d"
+ greek "Διπλή εγγÏαφή '%-.192T' για το κλειδί %d"
+ hindi "सामान पà¥à¤°à¤µà¥‡à¤¶ '%-.192T' KEY %d के लिà¤"
+ hun "Duplikalt bejegyzes '%-.192T' a %d kulcs szerint"
+ ita "Valore duplicato '%-.192T' per la chiave %d"
+ jpn "'%-.192T' ã¯ç´¢å¼• %d ã§é‡è¤‡ã—ã¦ã„ã¾ã™ã€‚"
+ kor "ì¤‘ë³µëœ ìž…ë ¥ ê°’ '%-.192T': key %d"
+ nla "Dubbele ingang '%-.192T' voor zoeksleutel %d"
+ nor "Like verdier '%-.192T' for nøkkel %d"
+ norwegian-ny "Like verdiar '%-.192T' for nykkel %d"
+ pol "Powtórzone wystąpienie '%-.192T' dla klucza %d"
+ por "Entrada '%-.192T' duplicada para a chave %d"
+ rum "Cimpul '%-.192T' e duplicat pentru cheia %d"
+ rus "ДублирующаÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ '%-.192T' по ключу %d"
+ serbian "Dupliran unos '%-.192T' za kljuÄ '%d'"
+ slo "Opakovaný kÄ¾ÃºÄ '%-.192T' (Äíslo kľúÄa %d)"
+ spa "Entrada duplicada '%-.192T' para la clave %d"
+ swe "Dublett '%-.192T' för nyckel %d"
+ ukr "Дублюючий Ð·Ð°Ð¿Ð¸Ñ '%-.192T' Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° %d"
ER_WRONG_FIELD_SPEC 42000 S1009
+ chi "列的说明符ä¸å¯¹ '%-.192s'"
cze "Chybná specifikace sloupce '%-.192s'"
dan "Forkert kolonnespecifikaton for felt '%-.192s'"
- nla "Verkeerde kolom specificatie voor kolom '%-.192s'"
eng "Incorrect column specifier for column '%-.192s'"
est "Vigane tulba kirjeldus tulbale '%-.192s'"
fre "Mauvais paramètre de champ pour le champ '%-.192s'"
@@ -1510,6 +1568,7 @@ ER_WRONG_FIELD_SPEC 42000 S1009
ita "Specifica errata per la colonna '%-.192s'"
jpn "列 '%-.192s' ã®å®šç¾©ãŒä¸æ­£ã§ã™ã€‚"
kor "칼럼 '%-.192s'ì˜ ë¶€ì •í™•í•œ 칼럼 ì •ì˜ìž"
+ nla "Verkeerde kolom specificatie voor kolom '%-.192s'"
nor "Feil kolonne spesifikator for felt '%-.192s'"
norwegian-ny "Feil kolonne spesifikator for kolonne '%-.192s'"
pol "Błędna specyfikacja kolumny dla kolumny '%-.192s'"
@@ -1522,9 +1581,9 @@ ER_WRONG_FIELD_SPEC 42000 S1009
swe "Felaktigt kolumntyp för kolumn '%-.192s'"
ukr "Ðевірний Ñпецифікатор ÑÑ‚Ð¾Ð²Ð±Ñ†Ñ '%-.192s'"
ER_PARSE_ERROR 42000 s1009
+ chi "%s 附近'%-.80T'在第%d行"
cze "%s blízko '%-.80T' na řádku %d"
dan "%s nær '%-.80T' på linje %d"
- nla "%s bij '%-.80T' in regel %d"
eng "%s near '%-.80T' at line %d"
est "%s '%-.80T' ligidal real %d"
fre "%s près de '%-.80T' à la ligne %d"
@@ -1535,6 +1594,7 @@ ER_PARSE_ERROR 42000 s1009
ita "%s vicino a '%-.80T' linea %d"
jpn "%s : '%-.80T' 付近 %d 行目"
kor "'%s' ì—러 같습니다. ('%-.80T' 명령어 ë¼ì¸ %d)"
+ nla "%s bij '%-.80T' in regel %d"
nor "%s nær '%-.80T' på linje %d"
norwegian-ny "%s attmed '%-.80T' på line %d"
pol "%s obok '%-.80T' w linii %d"
@@ -1547,9 +1607,9 @@ ER_PARSE_ERROR 42000 s1009
swe "%s nära '%-.80T' på rad %d"
ukr "%s Ð±Ñ–Ð»Ñ '%-.80T' в Ñтроці %d"
ER_EMPTY_QUERY 42000
+ chi "查询为空"
cze "Výsledek dotazu je prázdný"
dan "Forespørgsel var tom"
- nla "Query was leeg"
eng "Query was empty"
est "Tühi päring"
fre "Query est vide"
@@ -1560,6 +1620,7 @@ ER_EMPTY_QUERY 42000
ita "La query e` vuota"
jpn "クエリãŒç©ºã§ã™ã€‚"
kor "쿼리결과가 없습니다."
+ nla "Query was leeg"
nor "Forespørsel var tom"
norwegian-ny "Førespurnad var tom"
pol "Zapytanie było puste"
@@ -1572,9 +1633,9 @@ ER_EMPTY_QUERY 42000
swe "Frågan var tom"
ukr "ПуÑтий запит"
ER_NONUNIQ_TABLE 42000 S1009
+ chi "表或别åä¸å”¯ä¸€:'%-.192s'"
cze "NejednoznaÄná tabulka/alias: '%-.192s'"
dan "Tabellen/aliaset: '%-.192s' er ikke unikt"
- nla "Niet unieke waarde tabel/alias: '%-.192s'"
eng "Not unique table/alias: '%-.192s'"
est "Ei ole unikaalne tabel/alias '%-.192s'"
fre "Table/alias: '%-.192s' non unique"
@@ -1585,6 +1646,7 @@ ER_NONUNIQ_TABLE 42000 S1009
ita "Tabella/alias non unico: '%-.192s'"
jpn "表åï¼åˆ¥å '%-.192s' ã¯ä¸€æ„ã§ã¯ã‚ã‚Šã¾ã›ã‚“。"
kor "Unique 하지 ì•Šì€ í…Œì´ë¸”/alias: '%-.192s'"
+ nla "Niet unieke waarde tabel/alias: '%-.192s'"
nor "Ikke unikt tabell/alias: '%-.192s'"
norwegian-ny "Ikkje unikt tabell/alias: '%-.192s'"
pol "Tabela/alias nie s? unikalne: '%-.192s'"
@@ -1597,9 +1659,9 @@ ER_NONUNIQ_TABLE 42000 S1009
swe "Icke unikt tabell/alias: '%-.192s'"
ukr "Ðеунікальна таблицÑ/пÑевдонім: '%-.192s'"
ER_INVALID_DEFAULT 42000 S1009
+ chi "'%-.192s'的默认值无效"
cze "Chybná defaultní hodnota pro '%-.192s'"
dan "Ugyldig standardværdi for '%-.192s'"
- nla "Foutieve standaard waarde voor '%-.192s'"
eng "Invalid default value for '%-.192s'"
est "Vigane vaikeväärtus '%-.192s' jaoks"
fre "Valeur par défaut invalide pour '%-.192s'"
@@ -1610,6 +1672,7 @@ ER_INVALID_DEFAULT 42000 S1009
ita "Valore di default non valido per '%-.192s'"
jpn "'%-.192s' ã¸ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒç„¡åŠ¹ã§ã™ã€‚"
kor "'%-.192s'ì˜ ìœ íš¨í•˜ì§€ 못한 ë””í´íŠ¸ ê°’ì„ ì‚¬ìš©í•˜ì…¨ìŠµë‹ˆë‹¤."
+ nla "Foutieve standaard waarde voor '%-.192s'"
nor "Ugyldig standardverdi for '%-.192s'"
norwegian-ny "Ugyldig standardverdi for '%-.192s'"
pol "Niewła?ciwa warto?ć domy?lna dla '%-.192s'"
@@ -1622,9 +1685,9 @@ ER_INVALID_DEFAULT 42000 S1009
swe "Ogiltigt DEFAULT värde för '%-.192s'"
ukr "Ðевірне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾ замовчуванню Ð´Ð»Ñ '%-.192s'"
ER_MULTIPLE_PRI_KEY 42000 S1009
+ chi "定义了多个主键"
cze "Definováno více primárních klíÄů"
dan "Flere primærnøgler specificeret"
- nla "Meerdere primaire zoeksleutels gedefinieerd"
eng "Multiple primary key defined"
est "Mitut primaarset võtit ei saa olla"
fre "Plusieurs clefs primaires définies"
@@ -1635,6 +1698,7 @@ ER_MULTIPLE_PRI_KEY 42000 S1009
ita "Definite piu` chiave primarie"
jpn "PRIMARY KEY ãŒè¤‡æ•°å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ã€‚"
kor "Multiple primary keyê°€ ì •ì˜ë˜ì–´ 있슴"
+ nla "Meerdere primaire zoeksleutels gedefinieerd"
nor "Fleire primærnøkle spesifisert"
norwegian-ny "Fleire primærnyklar spesifisert"
pol "Zdefiniowano wiele kluczy podstawowych"
@@ -1647,19 +1711,20 @@ ER_MULTIPLE_PRI_KEY 42000 S1009
swe "Flera PRIMARY KEY använda"
ukr "Первинного ключа визначено неодноразово"
ER_TOO_MANY_KEYS 42000 S1009
+ chi "定义的索引太多; 最多å…许%d 个索引"
cze "Zadáno příliÅ¡ mnoho klíÄů, je povoleno nejvíce %d klíÄů"
dan "For mange nøgler specificeret. Kun %d nøgler må bruges"
- nla "Teveel zoeksleutels gedefinieerd. Maximaal zijn %d zoeksleutels toegestaan"
eng "Too many keys specified; max %d keys allowed"
est "Liiga palju võtmeid. Maksimaalselt võib olla %d võtit"
fre "Trop de clefs sont définies. Maximum de %d clefs alloué"
ger "Zu viele Schlüssel definiert. Maximal %d Schlüssel erlaubt"
greek "ΠάÏα πολλά key οÏίσθηκαν. Το Ï€Î¿Î»Ï %d επιτÏέπονται"
- hun "Tul sok kulcs. Maximum %d kulcs engedelyezett"
hindi "बहà¥à¤¤ सारी KEYS निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ हैं; अधिकतम %d KEYS की अनà¥à¤®à¤¤à¤¿ है"
+ hun "Tul sok kulcs. Maximum %d kulcs engedelyezett"
ita "Troppe chiavi. Sono ammesse max %d chiavi"
jpn "索引ã®æ•°ãŒå¤šã™ãŽã¾ã™ã€‚最大 %d 個ã¾ã§ã§ã™ã€‚"
kor "너무 ë§Žì€ í‚¤ê°€ ì •ì˜ë˜ì–´ 있습니다.. 최대 %dì˜ í‚¤ê°€ 가능함"
+ nla "Teveel zoeksleutels gedefinieerd. Maximaal zijn %d zoeksleutels toegestaan"
nor "For mange nøkler spesifisert. Maks %d nøkler tillatt"
norwegian-ny "For mange nykler spesifisert. Maks %d nyklar tillatt"
pol "Okre?lono zbyt wiele kluczy. Dostępnych jest maksymalnie %d kluczy"
@@ -1672,9 +1737,9 @@ ER_TOO_MANY_KEYS 42000 S1009
swe "För många nycklar använda. Man får ha högst %d nycklar"
ukr "Забагато ключів зазначено. Дозволено не більше %d ключів"
ER_TOO_MANY_KEY_PARTS 42000 S1009
+ chi "指定的索引部分过多; 最多å…许%d个部分"
cze "Zadáno příliÅ¡ mnoho Äást klíÄů, je povoleno nejvíce %d Äástí"
dan "For mange nøgledele specificeret. Kun %d dele må bruges"
- nla "Teveel zoeksleutel onderdelen gespecificeerd. Maximaal %d onderdelen toegestaan"
eng "Too many key parts specified; max %d parts allowed"
est "Võti koosneb liiga paljudest osadest. Maksimaalselt võib olla %d osa"
fre "Trop de parties specifiées dans la clef. Maximum de %d parties"
@@ -1685,6 +1750,7 @@ ER_TOO_MANY_KEY_PARTS 42000 S1009
ita "Troppe parti di chiave specificate. Sono ammesse max %d parti"
jpn "索引ã®ã‚­ãƒ¼åˆ—指定ãŒå¤šã™ãŽã¾ã™ã€‚最大 %d 個ã¾ã§ã§ã™ã€‚"
kor "너무 ë§Žì€ í‚¤ 부분(parts)ë“¤ì´ ì •ì˜ë˜ì–´ 있습니다.. 최대 %d ë¶€ë¶„ì´ ê°€ëŠ¥í•¨"
+ nla "Teveel zoeksleutel onderdelen gespecificeerd. Maximaal %d onderdelen toegestaan"
nor "For mange nøkkeldeler spesifisert. Maks %d deler tillatt"
norwegian-ny "For mange nykkeldelar spesifisert. Maks %d delar tillatt"
pol "Okre?lono zbyt wiele czę?ci klucza. Dostępnych jest maksymalnie %d czę?ci"
@@ -1697,9 +1763,9 @@ ER_TOO_MANY_KEY_PARTS 42000 S1009
swe "För många nyckeldelar använda. Man får ha högst %d nyckeldelar"
ukr "Забагато чаÑтин ключа зазначено. Дозволено не більше %d чаÑтин"
ER_TOO_LONG_KEY 42000 S1009
+ chi "指定索引太长; 最大索引长度是 %d字节"
cze "Zadaný klÃ­Ä byl příliÅ¡ dlouhý, nejvÄ›tší délka klíÄe je %d"
dan "Specificeret nøgle var for lang. Maksimal nøglelængde er %d"
- nla "Gespecificeerde zoeksleutel was te lang. De maximale lengte is %d"
eng "Specified key was too long; max key length is %d bytes"
est "Võti on liiga pikk. Maksimaalne võtmepikkus on %d"
fre "La clé est trop longue. Longueur maximale: %d"
@@ -1710,6 +1776,7 @@ ER_TOO_LONG_KEY 42000 S1009
ita "La chiave specificata e` troppo lunga. La max lunghezza della chiave e` %d"
jpn "索引ã®ã‚­ãƒ¼ãŒé•·ã™ãŽã¾ã™ã€‚最大 %d ãƒã‚¤ãƒˆã¾ã§ã§ã™ã€‚"
kor "ì •ì˜ëœ 키가 너무 ê¹ë‹ˆë‹¤. 최대 í‚¤ì˜ ê¸¸ì´ëŠ” %d입니다."
+ nla "Gespecificeerde zoeksleutel was te lang. De maximale lengte is %d"
nor "Spesifisert nøkkel var for lang. Maks nøkkellengde er is %d"
norwegian-ny "Spesifisert nykkel var for lang. Maks nykkellengde er %d"
pol "Zdefinowany klucz jest zbyt długi. Maksymaln? długo?ci? klucza jest %d"
@@ -1722,9 +1789,9 @@ ER_TOO_LONG_KEY 42000 S1009
swe "För lång nyckel. Högsta tillåtna nyckellängd är %d"
ukr "Зазначений ключ задовгий. Ðайбільша довжина ключа %d байтів"
ER_KEY_COLUMN_DOES_NOT_EXIST 42000 S1009
+ chi "索引列'%-.192s'ä¸åœ¨è¡¨é‡Œ"
cze "KlíÄový sloupec '%-.192s' v tabulce neexistuje"
dan "Nøglefeltet '%-.192s' eksisterer ikke i tabellen"
- nla "Zoeksleutel kolom '%-.192s' bestaat niet in tabel"
eng "Key column '%-.192s' doesn't exist in table"
est "Võtme tulp '%-.192s' puudub tabelis"
fre "La clé '%-.192s' n'existe pas dans la table"
@@ -1735,6 +1802,7 @@ ER_KEY_COLUMN_DOES_NOT_EXIST 42000 S1009
ita "La colonna chiave '%-.192s' non esiste nella tabella"
jpn "キー列 '%-.192s' ã¯è¡¨ã«ã‚ã‚Šã¾ã›ã‚“。"
kor "Key 칼럼 '%-.192s'는 í…Œì´ë¸”ì— ì¡´ìž¬í•˜ì§€ 않습니다."
+ nla "Zoeksleutel kolom '%-.192s' bestaat niet in tabel"
nor "Nøkkel felt '%-.192s' eksiterer ikke i tabellen"
norwegian-ny "Nykkel kolonne '%-.192s' eksiterar ikkje i tabellen"
pol "Kolumna '%-.192s' zdefiniowana w kluczu nie istnieje w tabeli"
@@ -1747,6 +1815,7 @@ ER_KEY_COLUMN_DOES_NOT_EXIST 42000 S1009
swe "Nyckelkolumn '%-.192s' finns inte"
ukr "Ключовий Ñтовбець '%-.192s' не Ñ–Ñнує у таблиці"
ER_BLOB_USED_AS_KEY 42000 S1009
+ chi "索引里ä¸èƒ½å«æœ‰BLOB列%`s表%s"
eng "BLOB column %`s can't be used in key specification in the %s table"
ger "BLOB-Feld %`s kann beim %s Tabellen nicht als Schlüssel verwendet werden"
hindi "BLOB कॉलम %`s टेबल %s में KEY विनिरà¥à¤¦à¥‡à¤¶ में इसà¥à¤¤à¥‡à¤®à¤¾à¤² नहीं किया जा सकता"
@@ -1754,9 +1823,9 @@ ER_BLOB_USED_AS_KEY 42000 S1009
spa "La columna BLOB %`s no se puede usar en la especificación de clave en la tabla %s"
ukr "BLOB Ñтовбець %`s не може бути викориÑтаний у визначенні ключа в %s таблиці"
ER_TOO_BIG_FIELDLENGTH 42000 S1009
+ chi "æ•°æ®å¤ªé•¿è¶…è¿‡åˆ—å®¹é‡ '%-.192s' (最长 = %lu); 用 BLOB 或 TEXT 替代"
cze "Příliš velká délka sloupce '%-.192s' (nejvíce %lu). Použijte BLOB"
dan "For stor feltlængde for kolonne '%-.192s' (maks = %lu). Brug BLOB i stedet"
- nla "Te grote kolomlengte voor '%-.192s' (max = %lu). Maak hiervoor gebruik van het type BLOB"
eng "Column length too big for column '%-.192s' (max = %lu); use BLOB or TEXT instead"
est "Tulba '%-.192s' pikkus on liiga pikk (maksimaalne pikkus: %lu). Kasuta BLOB väljatüüpi"
fre "Champ '%-.192s' trop long (max = %lu). Utilisez un BLOB"
@@ -1767,6 +1836,7 @@ ER_TOO_BIG_FIELDLENGTH 42000 S1009
ita "La colonna '%-.192s' e` troppo grande (max=%lu). Utilizza un BLOB"
jpn "列 '%-.192s' ã®ã‚µã‚¤ã‚ºå®šç¾©ãŒå¤§ãã™ãŽã¾ã™ (最大 %lu ã¾ã§)。代ã‚ã‚Šã« BLOB ã¾ãŸã¯ TEXT を使用ã—ã¦ãã ã•ã„。"
kor "칼럼 '%-.192s'ì˜ ì¹¼ëŸ¼ 길ì´ê°€ 너무 ê¹ë‹ˆë‹¤ (최대 = %lu). ëŒ€ì‹ ì— BLOB를 사용하세요."
+ nla "Te grote kolomlengte voor '%-.192s' (max = %lu). Maak hiervoor gebruik van het type BLOB"
nor "For stor nøkkellengde for kolonne '%-.192s' (maks = %lu). Bruk BLOB istedenfor"
norwegian-ny "For stor nykkellengde for felt '%-.192s' (maks = %lu). Bruk BLOB istadenfor"
pol "Zbyt duża długo?ć kolumny '%-.192s' (maks. = %lu). W zamian użyj typu BLOB"
@@ -1779,9 +1849,9 @@ ER_TOO_BIG_FIELDLENGTH 42000 S1009
swe "För stor kolumnlängd angiven för '%-.192s' (max= %lu). Använd en BLOB instället"
ukr "Задовга довжина ÑÑ‚Ð¾Ð²Ð±Ñ†Ñ '%-.192s' (max = %lu). ВикориÑтайте тип BLOB"
ER_WRONG_AUTO_KEY 42000 S1009
+ chi "表定义ä¸æ­£ç¡®ï¼›åªèƒ½æœ‰ä¸€ä¸ªè‡ªåŠ¨åˆ—,并且必须将其定义为索引"
cze "Můžete mít pouze jedno AUTO pole a to musí být definováno jako klíÄ"
dan "Der kan kun specificeres eet AUTO_INCREMENT-felt, og det skal være indekseret"
- nla "Er kan slechts 1 autofield zijn en deze moet als zoeksleutel worden gedefinieerd"
eng "Incorrect table definition; there can be only one auto column and it must be defined as a key"
est "Vigane tabelikirjeldus; Tabelis tohib olla üks auto_increment tüüpi tulp ning see peab olema defineeritud võtmena"
fre "Un seul champ automatique est permis et il doit être indexé"
@@ -1792,6 +1862,7 @@ ER_WRONG_AUTO_KEY 42000 S1009
ita "Puo` esserci solo un campo AUTO e deve essere definito come chiave"
jpn "ä¸æ­£ãªè¡¨å®šç¾©ã§ã™ã€‚AUTO_INCREMENT列ã¯ï¼‘個ã¾ã§ã§ã€ç´¢å¼•ã‚’定義ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
kor "부정확한 í…Œì´ë¸” ì •ì˜; í…Œì´ë¸”ì€ í•˜ë‚˜ì˜ auto ì¹¼ëŸ¼ì´ ì¡´ìž¬í•˜ê³  키로 ì •ì˜ë˜ì–´ì ¸ì•¼ 합니다."
+ nla "Er kan slechts 1 autofield zijn en deze moet als zoeksleutel worden gedefinieerd"
nor "Bare ett auto felt kan være definert som nøkkel"
norwegian-ny "Bare eitt auto felt kan være definert som nøkkel"
pol "W tabeli może być tylko jedno pole auto i musi ono być zdefiniowane jako klucz"
@@ -1804,13 +1875,14 @@ ER_WRONG_AUTO_KEY 42000 S1009
swe "Det får finnas endast ett AUTO_INCREMENT-fält och detta måste vara en nyckel"
ukr "Хибне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ–; Може бути лише один автоматичний Ñтовбець, що повинен бути визначений Ñк ключ"
ER_BINLOG_CANT_DELETE_GTID_DOMAIN
- eng "Could not delete gtid domain. Reason: %s."
- spa "No pude borrar el dominio gtid. Motivo: %s."
+ chi "无法删除gtid域. 原因: %s."
+ eng "Could not delete gtid domain. Reason: %s."
+ spa "No pude borrar el dominio gtid. Motivo: %s."
ukr "Ðе можу видалити домен gtid. Причина: %s."
ER_NORMAL_SHUTDOWN
+ chi "%s(%s):正常关闭"
cze "%s (%s): normální ukonÄení"
dan "%s (%s): Normal nedlukning"
- nla "%s (%s): Normaal afgesloten "
eng "%s (initiated by: %s): Normal shutdown"
est "%s (%s): MariaDB lõpetas"
fre "%s (%s): Arrêt normal du serveur"
@@ -1821,6 +1893,7 @@ ER_NORMAL_SHUTDOWN
ita "%s (%s): Shutdown normale"
jpn "%s (%s): 通常シャットダウン"
kor "%s (%s): ì •ìƒì ì¸ shutdown"
+ nla "%s (%s): Normaal afgesloten "
nor "%s (%s): Normal avslutning"
norwegian-ny "%s (%s): Normal nedkopling"
pol "%s (%s): Standardowe zakończenie działania"
@@ -1833,9 +1906,9 @@ ER_NORMAL_SHUTDOWN
swe "%s (%s): Normal avslutning"
ukr "%s (%s): Ðормальне завершеннÑ"
ER_GOT_SIGNAL
+ chi "%s: æ”¶åˆ°ä¿¡å· %d. 强行中止!\n"
cze "%s: pÅ™ijat signal %d, konÄím\n"
dan "%s: Fangede signal %d. Afslutter!!\n"
- nla "%s: Signaal %d. Systeem breekt af!\n"
eng "%s: Got signal %d. Aborting!\n"
est "%s: sain signaali %d. Lõpetan!\n"
fre "%s: Reçu le signal %d. Abandonne!\n"
@@ -1846,6 +1919,7 @@ ER_GOT_SIGNAL
ita "%s: Ricevuto segnale %d. Interruzione!\n"
jpn "%s: シグナル %d ã‚’å—ä¿¡ã—ã¾ã—ãŸã€‚強制終了ã—ã¾ã™ï¼\n"
kor "%s: %d 신호가 들어왔ìŒ. 중지!\n"
+ nla "%s: Signaal %d. Systeem breekt af!\n"
nor "%s: Oppdaget signal %d. Avslutter!\n"
norwegian-ny "%s: Oppdaga signal %d. Avsluttar!\n"
pol "%s: Otrzymano sygnał %d. Kończenie działania!\n"
@@ -1858,9 +1932,9 @@ ER_GOT_SIGNAL
swe "%s: Fick signal %d. Avslutar!\n"
ukr "%s: Отримано Ñигнал %d. ПерериваюÑÑŒ!\n"
ER_SHUTDOWN_COMPLETE
+ chi "%s:关闭完æˆ\n"
cze "%s: ukonÄení práce hotovo\n"
dan "%s: Server lukket\n"
- nla "%s: Afsluiten afgerond\n"
eng "%s: Shutdown complete\n"
est "%s: Lõpp\n"
fre "%s: Arrêt du serveur terminé\n"
@@ -1871,6 +1945,7 @@ ER_SHUTDOWN_COMPLETE
ita "%s: Shutdown completato\n"
jpn "%s: シャットダウン完了\n"
kor "%s: Shutdown ì´ ì™„ë£Œë¨!\n"
+ nla "%s: Afsluiten afgerond\n"
nor "%s: Avslutning komplett\n"
norwegian-ny "%s: Nedkopling komplett\n"
pol "%s: Zakończenie działania wykonane\n"
@@ -1883,9 +1958,9 @@ ER_SHUTDOWN_COMPLETE
swe "%s: Avslutning klar\n"
ukr "%s: Роботу завершено\n"
ER_FORCING_CLOSE 08S01
+ chi "%s: 强行关闭线程 %ld 用户: '%-.48s'\n"
cze "%s: násilné uzavření threadu %ld uživatele '%-.48s'\n"
dan "%s: Forceret nedlukning af tråd: %ld bruger: '%-.48s'\n"
- nla "%s: Afsluiten afgedwongen van thread %ld gebruiker: '%-.48s'\n"
eng "%s: Forcing close of thread %ld user: '%-.48s'\n"
est "%s: Sulgen jõuga lõime %ld kasutaja: '%-.48s'\n"
fre "%s: Arrêt forcé de la tâche (thread) %ld utilisateur: '%-.48s'\n"
@@ -1896,6 +1971,7 @@ ER_FORCING_CLOSE 08S01
ita "%s: Forzata la chiusura del thread %ld utente: '%-.48s'\n"
jpn "%s: スレッド %ld を強制終了ã—ã¾ã™ (ユーザー: '%-.48s')\n"
kor "%s: thread %ldì˜ ê°•ì œ 종료 user: '%-.48s'\n"
+ nla "%s: Afsluiten afgedwongen van thread %ld gebruiker: '%-.48s'\n"
nor "%s: Påtvinget avslutning av tråd %ld bruker: '%-.48s'\n"
norwegian-ny "%s: Påtvinga avslutning av tråd %ld brukar: '%-.48s'\n"
pol "%s: Wymuszenie zamknięcia w?tku %ld użytkownik: '%-.48s'\n"
@@ -1908,9 +1984,9 @@ ER_FORCING_CLOSE 08S01
swe "%s: Stänger av tråd %ld; användare: '%-.48s'\n"
ukr "%s: ПриÑкорюю Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð³Ñ–Ð»ÐºÐ¸ %ld кориÑтувача: '%-.48s'\n"
ER_IPSOCK_ERROR 08S01
+ chi "无法创建IPæ’å£"
cze "Nemohu vytvořit IP socket"
dan "Kan ikke oprette IP socket"
- nla "Kan IP-socket niet openen"
eng "Can't create IP socket"
est "Ei suuda luua IP socketit"
fre "Ne peut créer la connexion IP (socket)"
@@ -1921,6 +1997,7 @@ ER_IPSOCK_ERROR 08S01
ita "Impossibile creare il socket IP"
jpn "IPソケットを作æˆã§ãã¾ã›ã‚“。"
kor "IP ì†Œì¼“ì„ ë§Œë“¤ì§€ 못했습니다."
+ nla "Kan IP-socket niet openen"
nor "Kan ikke opprette IP socket"
norwegian-ny "Kan ikkje opprette IP socket"
pol "Nie można stworzyć socket'u IP"
@@ -1933,9 +2010,9 @@ ER_IPSOCK_ERROR 08S01
swe "Kan inte skapa IP-socket"
ukr "Ðе можу Ñтворити IP роз'єм"
ER_NO_SUCH_INDEX 42S12 S1009
+ chi "表 '%-.192s' æ²¡æœ‰åƒ CREATE INDEX 中使用的索引;é‡æ–°åˆ›å»ºè¡¨"
cze "Tabulka '%-.192s' nemá index odpovídající CREATE INDEX. Vytvořte tabulku znovu"
dan "Tabellen '%-.192s' har ikke den nøgle, som blev brugt i CREATE INDEX. Genopret tabellen"
- nla "Tabel '%-.192s' heeft geen INDEX zoals deze gemaakt worden met CREATE INDEX. Maak de tabel opnieuw"
eng "Table '%-.192s' has no index like the one used in CREATE INDEX; recreate the table"
est "Tabelil '%-.192s' puuduvad võtmed. Loo tabel uuesti"
fre "La table '%-.192s' n'a pas d'index comme celle utilisée dans CREATE INDEX. Recréez la table"
@@ -1946,6 +2023,7 @@ ER_NO_SUCH_INDEX 42S12 S1009
ita "La tabella '%-.192s' non ha nessun indice come quello specificatato dalla CREATE INDEX. Ricrea la tabella"
jpn "表 '%-.192s' ã«ä»¥å‰CREATE INDEXã§ä½œæˆã•ã‚ŒãŸç´¢å¼•ãŒã‚ã‚Šã¾ã›ã‚“。表を作り直ã—ã¦ãã ã•ã„。"
kor "í…Œì´ë¸” '%-.192s'는 ì¸ë±ìŠ¤ë¥¼ 만들지 않았습니다. alter í…Œì´ë¸”ëª…ë ¹ì„ ì´ìš©í•˜ì—¬ í…Œì´ë¸”ì„ ìˆ˜ì •í•˜ì„¸ìš”..."
+ nla "Tabel '%-.192s' heeft geen INDEX zoals deze gemaakt worden met CREATE INDEX. Maak de tabel opnieuw"
nor "Tabellen '%-.192s' har ingen index som den som er brukt i CREATE INDEX. Gjenopprett tabellen"
norwegian-ny "Tabellen '%-.192s' har ingen index som den som er brukt i CREATE INDEX. Oprett tabellen på nytt"
pol "Tabela '%-.192s' nie ma indeksu takiego jak w CREATE INDEX. Stwórz tabelę"
@@ -1958,9 +2036,9 @@ ER_NO_SUCH_INDEX 42S12 S1009
swe "Tabellen '%-.192s' har inget index som motsvarar det angivna i CREATE INDEX. Skapa om tabellen"
ukr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ '%-.192s' має індекÑ, що не Ñпівпадає з вказанним у CREATE INDEX. Створіть таблицю знову"
ER_WRONG_FIELD_TERMINATORS 42000 S1009
+ chi "字段分隔符å‚æ•°ä¸åˆé¢„期;查看文档"
cze "Argument separátoru položek nebyl oÄekáván. PÅ™eÄtÄ›te si manuál"
dan "Felt adskiller er ikke som forventet, se dokumentationen"
- nla "De argumenten om velden te scheiden zijn anders dan verwacht. Raadpleeg de handleiding"
eng "Field separator argument is not what is expected; check the manual"
est "Väljade eraldaja erineb oodatust. Tutvu kasutajajuhendiga"
fre "Séparateur de champs inconnu. Vérifiez dans le manuel"
@@ -1971,6 +2049,7 @@ ER_WRONG_FIELD_TERMINATORS 42000 S1009
ita "L'argomento 'Field separator' non e` quello atteso. Controlla il manuale"
jpn "フィールド区切り文字ãŒäºˆæœŸã›ã¬ä½¿ã‚れ方をã—ã¦ã„ã¾ã™ã€‚マニュアルを確èªã—ã¦ä¸‹ã•ã„。"
kor "í•„ë“œ êµ¬ë¶„ìž ì¸ìˆ˜ë“¤ì´ 완전하지 않습니다. ë©”ë‰´ì–¼ì„ ì°¾ì•„ 보세요."
+ nla "De argumenten om velden te scheiden zijn anders dan verwacht. Raadpleeg de handleiding"
nor "Felt skiller argumentene er ikke som forventet, se dokumentasjonen"
norwegian-ny "Felt skiljer argumenta er ikkje som venta, sjå dokumentasjonen"
pol "Nie oczekiwano separatora. SprawdĽ podręcznik"
@@ -1983,9 +2062,9 @@ ER_WRONG_FIELD_TERMINATORS 42000 S1009
swe "Fältseparatorerna är vad som förväntades. Kontrollera mot manualen"
ukr "Хибний розділювач полів. Почитайте документацію"
ER_BLOBS_AND_NO_TERMINATED 42000 S1009
+ chi "您ä¸èƒ½å¯¹ BLOB 使用固定的行长度;请使用 'fields terminated by'"
cze "Není možné použít pevný rowlength s BLOBem. Použijte 'fields terminated by'"
dan "Man kan ikke bruge faste feltlængder med BLOB. Brug i stedet 'fields terminated by'"
- nla "Bij het gebruik van BLOBs is het niet mogelijk om vaste rijlengte te gebruiken. Maak s.v.p. gebruik van 'fields terminated by'"
eng "You can't use fixed rowlength with BLOBs; please use 'fields terminated by'"
est "BLOB-tüüpi väljade olemasolul ei saa kasutada fikseeritud väljapikkust. Vajalik 'fields terminated by' määrang"
fre "Vous ne pouvez utiliser des lignes de longueur fixe avec des BLOBs. Utiliser 'fields terminated by'"
@@ -1996,6 +2075,7 @@ ER_BLOBS_AND_NO_TERMINATED 42000 S1009
ita "Non possono essere usate righe a lunghezza fissa con i BLOB. Usa 'FIELDS TERMINATED BY'"
jpn "BLOBã«ã¯å›ºå®šé•·ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒä½¿ç”¨ã§ãã¾ã›ã‚“。'FIELDS TERMINATED BY'å¥ã‚’使用ã—ã¦ä¸‹ã•ã„。"
kor "BLOB로는 고정길ì´ì˜ lowlength를 사용할 수 없습니다. 'fields terminated by'를 사용하세요."
+ nla "Bij het gebruik van BLOBs is het niet mogelijk om vaste rijlengte te gebruiken. Maak s.v.p. gebruik van 'fields terminated by'"
nor "En kan ikke bruke faste feltlengder med BLOB. Vennlisgt bruk 'fields terminated by'"
norwegian-ny "Ein kan ikkje bruke faste feltlengder med BLOB. Vennlisgt bruk 'fields terminated by'"
pol "Nie można użyć stałej długo?ci wiersza z polami typu BLOB. Użyj 'fields terminated by'"
@@ -2008,9 +2088,9 @@ ER_BLOBS_AND_NO_TERMINATED 42000 S1009
swe "Man kan inte använda fast radlängd med blobs. Använd 'fields terminated by'"
ukr "Ðе можна викориÑтовувати Ñталу довжину Ñтроки з BLOB. ЗкориÑтайтеÑÑ 'fields terminated by'"
ER_TEXTFILE_NOT_READABLE
+ chi "文件'%-.128s'å¿…é¡»ä½äºŽæ•°æ®åº“目录中,或所有人都å¯ä»¥è¯»å–"
cze "Soubor '%-.128s' musí být v adresáři databáze nebo Äitelný pro vÅ¡echny"
dan "Filen '%-.128s' skal være i database-folderen, eller kunne læses af alle"
- nla "Het bestand '%-.128s' dient in de database directory voor the komen of leesbaar voor iedereen te zijn"
eng "The file '%-.128s' must be in the database directory or be readable by all"
est "Fail '%-.128s' peab asuma andmebaasi kataloogis või olema kõigile loetav"
fre "Le fichier '%-.128s' doit être dans le répertoire de la base et lisible par tous"
@@ -2021,6 +2101,7 @@ ER_TEXTFILE_NOT_READABLE
ita "Il file '%-.128s' deve essere nella directory del database e deve essere leggibile da tutti"
jpn "ファイル '%-.128s' ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã‚ã‚‹ã‹ã€å…¨ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰èª­ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
kor "'%-.128s' í™”ì¼ëŠ” ë°ì´íƒ€ë² ì´ìŠ¤ ë””ë ‰í† ë¦¬ì— ì¡´ìž¬í•˜ê±°ë‚˜ 모ë‘ì—게 ì½ê¸° 가능하여야 합니다."
+ nla "Het bestand '%-.128s' dient in de database directory voor the komen of leesbaar voor iedereen te zijn"
nor "Filen '%-.128s' må være i database-katalogen for å være lesbar for alle"
norwegian-ny "Filen '%-.128s' må være i database-katalogen for å være lesbar for alle"
pol "Plik '%-.128s' musi znajdować sie w katalogu bazy danych lub mieć prawa czytania przez wszystkich"
@@ -2033,9 +2114,9 @@ ER_TEXTFILE_NOT_READABLE
swe "Textfilen '%-.128s' måste finnas i databasbiblioteket eller vara läsbar för alla"
ukr "Файл '%-.128s' повинен бути у теці бази данних або мати вÑтановлене право на Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð»Ñ ÑƒÑÑ–Ñ…"
ER_FILE_EXISTS_ERROR
+ chi "文件'%-.200s'å·²ç»å­˜åœ¨"
cze "Soubor '%-.200s' již existuje"
dan "Filen '%-.200s' eksisterer allerede"
- nla "Het bestand '%-.200s' bestaat reeds"
eng "File '%-.200s' already exists"
est "Fail '%-.200s' juba eksisteerib"
fre "Le fichier '%-.200s' existe déjà"
@@ -2046,6 +2127,7 @@ ER_FILE_EXISTS_ERROR
ita "Il file '%-.200s' esiste gia`"
jpn "ファイル '%-.200s' ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
kor "'%-.200s' í™”ì¼ì€ ì´ë¯¸ 존재합니다."
+ nla "Het bestand '%-.200s' bestaat reeds"
nor "Filen '%-.200s' eksisterte allerede"
norwegian-ny "Filen '%-.200s' eksisterte allereide"
pol "Plik '%-.200s' już istnieje"
@@ -2058,9 +2140,9 @@ ER_FILE_EXISTS_ERROR
swe "Filen '%-.200s' existerar redan"
ukr "Файл '%-.200s' вже Ñ–Ñнує"
ER_LOAD_INFO
+ chi "记录:%ld删除:%ld跳过:%ld警告:%ld"
cze "Záznamů: %ld Vymazáno: %ld PÅ™eskoÄeno: %ld Varování: %ld"
dan "Poster: %ld Fjernet: %ld Sprunget over: %ld Advarsler: %ld"
- nla "Records: %ld Verwijderd: %ld Overgeslagen: %ld Waarschuwingen: %ld"
eng "Records: %ld Deleted: %ld Skipped: %ld Warnings: %ld"
est "Kirjeid: %ld Kustutatud: %ld Vahele jäetud: %ld Hoiatusi: %ld"
fre "Enregistrements: %ld Effacés: %ld Non traités: %ld Avertissements: %ld"
@@ -2071,6 +2153,7 @@ ER_LOAD_INFO
ita "Records: %ld Cancellati: %ld Saltati: %ld Avvertimenti: %ld"
jpn "レコード数: %ld 削除: %ld スキップ: %ld 警告: %ld"
kor "레코드: %ld개 삭제: %ld개 스킵: %ld개 경고: %ld개"
+ nla "Records: %ld Verwijderd: %ld Overgeslagen: %ld Waarschuwingen: %ld"
nor "Poster: %ld Fjernet: %ld Hoppet over: %ld Advarsler: %ld"
norwegian-ny "Poster: %ld Fjerna: %ld Hoppa over: %ld Ã…tvaringar: %ld"
pol "Recordów: %ld Usuniętych: %ld Pominiętych: %ld Ostrzeżeń: %ld"
@@ -2083,9 +2166,9 @@ ER_LOAD_INFO
swe "Rader: %ld Bortagna: %ld Dubletter: %ld Varningar: %ld"
ukr "ЗапиÑів: %ld Видалено: %ld Пропущено: %ld ЗаÑтережень: %ld"
ER_ALTER_INFO
+ chi "记录: %ld é‡å¤: %ld"
cze "Záznamů: %ld Zdvojených: %ld"
dan "Poster: %ld Ens: %ld"
- nla "Records: %ld Dubbel: %ld"
eng "Records: %ld Duplicates: %ld"
est "Kirjeid: %ld Kattuvaid: %ld"
fre "Enregistrements: %ld Doublons: %ld"
@@ -2096,6 +2179,7 @@ ER_ALTER_INFO
ita "Records: %ld Duplicati: %ld"
jpn "レコード数: %ld é‡è¤‡: %ld"
kor "레코드: %ld개 중복: %ld개"
+ nla "Records: %ld Dubbel: %ld"
nor "Poster: %ld Like: %ld"
norwegian-ny "Poster: %ld Like: %ld"
pol "Rekordów: %ld Duplikatów: %ld"
@@ -2108,9 +2192,9 @@ ER_ALTER_INFO
swe "Rader: %ld Dubletter: %ld"
ukr "ЗапиÑів: %ld Дублікатів: %ld"
ER_WRONG_SUB_KEY
+ chi "å‰ç¼€ç´¢å¼•ä¸æ­£ç¡®ï¼›ä½¿ç”¨çš„索引部分ä¸æ˜¯å­—符串,使用的长度比索引部分长,或者存储引擎ä¸æ”¯æŒç‹¬ç‰¹å‰ç¼€ç´¢å¼•"
cze "Chybná podÄást klíÄe -- není to Å™etÄ›zec nebo je delší než délka Äásti klíÄe"
dan "Forkert indeksdel. Den anvendte nøgledel er ikke en streng eller længden er større end nøglelængden"
- nla "Foutief sub-gedeelte van de zoeksleutel. De gebruikte zoeksleutel is geen onderdeel van een string of of de gebruikte lengte is langer dan de zoeksleutel"
eng "Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys"
est "Vigane võtme osa. Kasutatud võtmeosa ei ole string tüüpi, määratud pikkus on pikem kui võtmeosa või tabelihandler ei toeta seda tüüpi võtmeid"
fre "Mauvaise sous-clef. Ce n'est pas un 'string' ou la longueur dépasse celle définie dans la clef"
@@ -2120,6 +2204,7 @@ ER_WRONG_SUB_KEY
ita "Sotto-parte della chiave errata. La parte di chiave utilizzata non e` una stringa o la lunghezza e` maggiore della parte di chiave"
jpn "キーã®ãƒ—レフィックスãŒä¸æ­£ã§ã™ã€‚キーãŒæ–‡å­—列ã§ã¯ãªã„ã‹ã€ãƒ—レフィックス長ãŒã‚­ãƒ¼ã‚ˆã‚Šã‚‚é•·ã„ã‹ã€ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚¨ãƒ³ã‚¸ãƒ³ãŒä¸€æ„索引ã®ãƒ—レフィックス指定をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。"
kor "부정확한 서버 파트 키. ì‚¬ìš©ëœ í‚¤ 파트가 스트ë§ì´ 아니거나 키 íŒŒíŠ¸ì˜ ê¸¸ì´ê°€ 너무 ê¹ë‹ˆë‹¤."
+ nla "Foutief sub-gedeelte van de zoeksleutel. De gebruikte zoeksleutel is geen onderdeel van een string of of de gebruikte lengte is langer dan de zoeksleutel"
nor "Feil delnøkkel. Den brukte delnøkkelen er ikke en streng eller den oppgitte lengde er lengre enn nøkkel lengden"
norwegian-ny "Feil delnykkel. Den brukte delnykkelen er ikkje ein streng eller den oppgitte lengda er lengre enn nykkellengden"
pol "Błędna podczę?ć klucza. Użyta czę?ć klucza nie jest łańcuchem lub użyta długo?ć jest większa niż czę?ć klucza"
@@ -2132,9 +2217,9 @@ ER_WRONG_SUB_KEY
swe "Felaktig delnyckel. Nyckeldelen är inte en sträng eller den angivna längden är längre än kolumnlängden"
ukr "Ðевірна чаÑтина ключа. ВикориÑтана чаÑтина ключа не Ñ” Ñтрокою, задовга або вказівник таблиці не підтримує унікальних чаÑтин ключей"
ER_CANT_REMOVE_ALL_FIELDS 42000
+ chi "您ä¸èƒ½ä½¿ç”¨ ALTER TABLE 删除所有列;改用 DROP TABLE"
cze "Není možné vymazat všechny položky s ALTER TABLE. Použijte DROP TABLE"
dan "Man kan ikke slette alle felter med ALTER TABLE. Brug DROP TABLE i stedet"
- nla "Het is niet mogelijk alle velden te verwijderen met ALTER TABLE. Gebruik a.u.b. DROP TABLE hiervoor!"
eng "You can't delete all columns with ALTER TABLE; use DROP TABLE instead"
est "ALTER TABLE kasutades ei saa kustutada kõiki tulpasid. Kustuta tabel DROP TABLE abil"
fre "Vous ne pouvez effacer tous les champs avec ALTER TABLE. Utilisez DROP TABLE"
@@ -2145,6 +2230,7 @@ ER_CANT_REMOVE_ALL_FIELDS 42000
ita "Non si possono cancellare tutti i campi con una ALTER TABLE. Utilizzare DROP TABLE"
jpn "ALTER TABLE ã§ã¯å…¨ã¦ã®åˆ—ã®å‰Šé™¤ã¯ã§ãã¾ã›ã‚“。DROP TABLE を使用ã—ã¦ãã ã•ã„。"
kor "ALTER TABLE 명령으로는 모든 ì¹¼ëŸ¼ì„ ì§€ìš¸ 수 없습니다. DROP TABLE ëª…ë ¹ì„ ì´ìš©í•˜ì„¸ìš”."
+ nla "Het is niet mogelijk alle velden te verwijderen met ALTER TABLE. Gebruik a.u.b. DROP TABLE hiervoor!"
nor "En kan ikke slette alle felt med ALTER TABLE. Bruk DROP TABLE isteden"
norwegian-ny "Ein kan ikkje slette alle felt med ALTER TABLE. Bruk DROP TABLE istadenfor"
pol "Nie można usun?ć wszystkich pól wykorzystuj?c ALTER TABLE. W zamian użyj DROP TABLE"
@@ -2157,9 +2243,9 @@ ER_CANT_REMOVE_ALL_FIELDS 42000
swe "Man kan inte radera alla fält med ALTER TABLE. Använd DROP TABLE istället"
ukr "Ðе можливо видалити вÑÑ– Ñтовбці за допомогою ALTER TABLE. Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ ÑкориÑтайтеÑÑ DROP TABLE"
ER_CANT_DROP_FIELD_OR_KEY 42000
+ chi "ä¸èƒ½ DROP %s %`-.192s; 检查它是å¦å­˜åœ¨"
cze "Nemohu zruÅ¡it (DROP %s) %`-.192s. Zkontrolujte, zda neexistují záznamy/klíÄe"
dan "Kan ikke udføre DROP %s %`-.192s. Undersøg om feltet/nøglen eksisterer"
- nla "DROP %s: Kan %`-.192s niet weggooien. Controleer of het veld of de zoeksleutel daadwerkelijk bestaat"
eng "Can't DROP %s %`-.192s; check that it exists"
est "Ei suuda kustutada (DROP %s) %`-.192s. Kontrolli kas tulp/võti eksisteerib"
fre "Ne peut effacer (DROP %s) %`-.192s. Vérifiez s'il existe"
@@ -2168,6 +2254,7 @@ ER_CANT_DROP_FIELD_OR_KEY 42000
hindi "%s %`-.192s को डà¥à¤°à¥‰à¤ª नहीं कर सकते हैं; कृपया जाà¤à¤š करें कि यह मौजूद है"
hun "A DROP %s %`-.192s nem lehetseges. Ellenorizze, hogy a mezo/kulcs letezik-e"
ita "Impossibile cancellare (DROP %s) %`-.192s. Controllare che il campo chiave esista"
+ nla "DROP %s: Kan %`-.192s niet weggooien. Controleer of het veld of de zoeksleutel daadwerkelijk bestaat"
nor "Kan ikke DROP %s %`-.192s. Undersøk om felt/nøkkel eksisterer"
norwegian-ny "Kan ikkje DROP %s %`-.192s. Undersøk om felt/nøkkel eksisterar"
pol "Nie można wykonać operacji DROP %s %`-.192s. SprawdĽ, czy to pole/klucz istnieje"
@@ -2180,9 +2267,9 @@ ER_CANT_DROP_FIELD_OR_KEY 42000
swe "Kan inte ta bort (DROP %s) %`-.192s. Kontrollera att begränsningen/fältet/nyckel finns"
ukr "Ðе можу DROP %s %`-.192s. Перевірте, чи він Ñ–Ñнує"
ER_INSERT_INFO
+ chi "记录: %ld é‡å¤: %ld 警告: %ld"
cze "Záznamů: %ld Zdvojených: %ld Varování: %ld"
dan "Poster: %ld Ens: %ld Advarsler: %ld"
- nla "Records: %ld Dubbel: %ld Waarschuwing: %ld"
eng "Records: %ld Duplicates: %ld Warnings: %ld"
est "Kirjeid: %ld Kattuvaid: %ld Hoiatusi: %ld"
fre "Enregistrements: %ld Doublons: %ld Avertissements: %ld"
@@ -2193,6 +2280,7 @@ ER_INSERT_INFO
ita "Records: %ld Duplicati: %ld Avvertimenti: %ld"
jpn "レコード数: %ld é‡è¤‡æ•°: %ld 警告: %ld"
kor "레코드: %ld개 중복: %ld개 경고: %ld개"
+ nla "Records: %ld Dubbel: %ld Waarschuwing: %ld"
nor "Poster: %ld Like: %ld Advarsler: %ld"
norwegian-ny "Postar: %ld Like: %ld Ã…tvaringar: %ld"
pol "Rekordów: %ld Duplikatów: %ld Ostrzeżeń: %ld"
@@ -2205,13 +2293,14 @@ ER_INSERT_INFO
swe "Rader: %ld Dubletter: %ld Varningar: %ld"
ukr "ЗапиÑів: %ld Дублікатів: %ld ЗаÑтережень: %ld"
ER_UPDATE_TABLE_USED
+ chi "表 '%-.192s' 被指定了两次, å³ä½œä¸º '%s' 的目标,åˆä½œä¸ºæ•°æ®çš„独立æº"
eng "Table '%-.192s' is specified twice, both as a target for '%s' and as a separate source for data"
swe "Table '%-.192s' är använd två gånger. Både för '%s' och för att hämta data"
ukr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ '%-.192s' вказуєтьÑÑ Ð´Ð²Ñ–Ñ‡Ñ–, Ñк цільова Ð´Ð»Ñ '%s', так Ñ– Ñк окреме джерело даних"
ER_NO_SUCH_THREAD
+ chi "未知线程ID:%lu"
cze "Neznámá identifikace threadu: %lu"
dan "Ukendt tråd id: %lu"
- nla "Onbekend thread id: %lu"
eng "Unknown thread id: %lu"
est "Tundmatu lõim: %lu"
fre "Numéro de tâche inconnu: %lu"
@@ -2222,6 +2311,7 @@ ER_NO_SUCH_THREAD
ita "Thread id: %lu sconosciuto"
jpn "ä¸æ˜Žãªã‚¹ãƒ¬ãƒƒãƒ‰IDã§ã™: %lu"
kor "알수 없는 쓰레드 id: %lu"
+ nla "Onbekend thread id: %lu"
nor "Ukjent tråd id: %lu"
norwegian-ny "Ukjent tråd id: %lu"
pol "Nieznany identyfikator w?tku: %lu"
@@ -2234,9 +2324,9 @@ ER_NO_SUCH_THREAD
swe "Finns ingen tråd med id %lu"
ukr "Ðевідомий ідентифікатор гілки: %lu"
ER_KILL_DENIED_ERROR
+ chi "ä½ ä¸æ˜¯çº¿ç¨‹%lld的所有者"
cze "Nejste vlastníkem threadu %lld"
dan "Du er ikke ejer af tråden %lld"
- nla "U bent geen bezitter van thread %lld"
eng "You are not owner of thread %lld"
est "Ei ole lõime %lld omanik"
fre "Vous n'êtes pas propriétaire de la tâche no: %lld"
@@ -2247,6 +2337,7 @@ ER_KILL_DENIED_ERROR
ita "Utente non proprietario del thread %lld"
jpn "スレッド %lld ã®ã‚ªãƒ¼ãƒŠãƒ¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“。"
kor "쓰레드(Thread) %lldì˜ ì†Œìœ ìžê°€ 아닙니다."
+ nla "U bent geen bezitter van thread %lld"
nor "Du er ikke eier av tråden %lld"
norwegian-ny "Du er ikkje eigar av tråd %lld"
pol "Nie jeste? wła?cicielem w?tku %lld"
@@ -2259,9 +2350,9 @@ ER_KILL_DENIED_ERROR
swe "Du är inte ägare till tråd %lld"
ukr "Ви не володар гілки %lld"
ER_NO_TABLES_USED
+ chi "没有使用表"
cze "Nejsou použity žádné tabulky"
dan "Ingen tabeller i brug"
- nla "Geen tabellen gebruikt"
eng "No tables used"
est "Ãœhtegi tabelit pole kasutusel"
fre "Aucune table utilisée"
@@ -2272,6 +2363,7 @@ ER_NO_TABLES_USED
ita "Nessuna tabella usata"
jpn "表ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。"
kor "ì–´ë–¤ í…Œì´ë¸”ë„ ì‚¬ìš©ë˜ì§€ 않았습니다."
+ nla "Geen tabellen gebruikt"
nor "Ingen tabeller i bruk"
norwegian-ny "Ingen tabellar i bruk"
pol "Nie ma żadej użytej tabeli"
@@ -2284,9 +2376,9 @@ ER_NO_TABLES_USED
swe "Inga tabeller angivna"
ukr "Ðе викориÑтано таблиць"
ER_TOO_BIG_SET
+ chi "列 %-.192s 和SET的字符串过多"
cze "Příliš mnoho řetězců pro sloupec %-.192s a SET"
dan "For mange tekststrenge til specifikationen af SET i kolonne %-.192s"
- nla "Teveel strings voor kolom %-.192s en SET"
eng "Too many strings for column %-.192s and SET"
est "Liiga palju string tulbale %-.192s tüübile SET"
fre "Trop de chaînes dans la colonne %-.192s avec SET"
@@ -2296,6 +2388,7 @@ ER_TOO_BIG_SET
ita "Troppe stringhe per la colonna %-.192s e la SET"
jpn "SETåž‹ã®åˆ— '%-.192s' ã®ãƒ¡ãƒ³ãƒãƒ¼ã®æ•°ãŒå¤šã™ãŽã¾ã™ã€‚"
kor "칼럼 %-.192s와 SETì—ì„œ 스트ë§ì´ 너무 많습니다."
+ nla "Teveel strings voor kolom %-.192s en SET"
nor "For mange tekststrenger kolonne %-.192s og SET"
norwegian-ny "For mange tekststrengar felt %-.192s og SET"
pol "Zbyt wiele łańcuchów dla kolumny %-.192s i polecenia SET"
@@ -2308,9 +2401,9 @@ ER_TOO_BIG_SET
swe "För många alternativ till kolumn %-.192s för SET"
ukr "Забагато Ñтрок Ð´Ð»Ñ ÑÑ‚Ð¾Ð²Ð±Ñ†Ñ %-.192s та SET"
ER_NO_UNIQUE_LOGFILE
+ chi "无法生æˆå”¯ä¸€çš„log-filename%-.200s.(1-999)\ n"
cze "Nemohu vytvoÅ™it jednoznaÄné jméno logovacího souboru %-.200s.(1-999)\n"
dan "Kan ikke lave unikt log-filnavn %-.200s.(1-999)\n"
- nla "Het is niet mogelijk een unieke naam te maken voor de logfile %-.200s.(1-999)\n"
eng "Can't generate a unique log-filename %-.200s.(1-999)\n"
est "Ei suuda luua unikaalset logifaili nime %-.200s.(1-999)\n"
fre "Ne peut générer un unique nom de journal %-.200s.(1-999)\n"
@@ -2321,6 +2414,7 @@ ER_NO_UNIQUE_LOGFILE
ita "Impossibile generare un nome del file log unico %-.200s.(1-999)\n"
jpn "一æ„ãªãƒ­ã‚°ãƒ•ã‚¡ã‚¤ãƒ«å %-.200s.(1-999) を生æˆã§ãã¾ã›ã‚“。\n"
kor "Unique ë¡œê·¸í™”ì¼ '%-.200s'를 만들수 없습니다.(1-999)\n"
+ nla "Het is niet mogelijk een unieke naam te maken voor de logfile %-.200s.(1-999)\n"
nor "Kan ikke lage unikt loggfilnavn %-.200s.(1-999)\n"
norwegian-ny "Kan ikkje lage unikt loggfilnavn %-.200s.(1-999)\n"
pol "Nie można stworzyć unikalnej nazwy pliku z logiem %-.200s.(1-999)\n"
@@ -2333,9 +2427,9 @@ ER_NO_UNIQUE_LOGFILE
swe "Kan inte generera ett unikt filnamn %-.200s.(1-999)\n"
ukr "Ðе можу згенерувати унікальне ім'Ñ log-файлу %-.200s.(1-999)\n"
ER_TABLE_NOT_LOCKED_FOR_WRITE
+ chi "表 '%-.192s' 有 READ é”,无法更新"
cze "Tabulka '%-.192s' byla zamÄena s READ a nemůže být zmÄ›nÄ›na"
dan "Tabellen '%-.192s' var låst med READ lås og kan ikke opdateres"
- nla "Tabel '%-.192s' was gelocked met een lock om te lezen. Derhalve kunnen geen wijzigingen worden opgeslagen"
eng "Table '%-.192s' was locked with a READ lock and can't be updated"
est "Tabel '%-.192s' on lukustatud READ lukuga ning ei ole muudetav"
fre "Table '%-.192s' verrouillée lecture (READ): modification impossible"
@@ -2346,6 +2440,7 @@ ER_TABLE_NOT_LOCKED_FOR_WRITE
ita "La tabella '%-.192s' e` soggetta a lock in lettura e non puo` essere aggiornata"
jpn "表 '%-.192s' ã¯READロックã•ã‚Œã¦ã„ã¦ã€æ›´æ–°ã§ãã¾ã›ã‚“。"
kor "í…Œì´ë¸” '%-.192s'는 READ ë½ì´ 잠겨있어서 갱신할 수 없습니다."
+ nla "Tabel '%-.192s' was gelocked met een lock om te lezen. Derhalve kunnen geen wijzigingen worden opgeslagen"
nor "Tabellen '%-.192s' var låst med READ lås og kan ikke oppdateres"
norwegian-ny "Tabellen '%-.192s' var låst med READ lås og kan ikkje oppdaterast"
pol "Tabela '%-.192s' została zablokowana przez READ i nie może zostać zaktualizowana"
@@ -2358,9 +2453,9 @@ ER_TABLE_NOT_LOCKED_FOR_WRITE
swe "Tabell '%-.192s' kan inte uppdateras emedan den är låst för läsning"
ukr "Таблицю '%-.192s' заблоковано тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ, тому Ñ—Ñ— не можна оновити"
ER_TABLE_NOT_LOCKED
+ chi "表 '%-.192s' 未使用 LOCK TABLES é”定"
cze "Tabulka '%-.192s' nebyla zamÄena s LOCK TABLES"
dan "Tabellen '%-.192s' var ikke låst med LOCK TABLES"
- nla "Tabel '%-.192s' was niet gelocked met LOCK TABLES"
eng "Table '%-.192s' was not locked with LOCK TABLES"
est "Tabel '%-.192s' ei ole lukustatud käsuga LOCK TABLES"
fre "Table '%-.192s' non verrouillée: utilisez LOCK TABLES"
@@ -2371,6 +2466,7 @@ ER_TABLE_NOT_LOCKED
ita "Non e` stato impostato il lock per la tabella '%-.192s' con LOCK TABLES"
jpn "表 '%-.192s' 㯠LOCK TABLES ã§ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
kor "í…Œì´ë¸” '%-.192s'는 LOCK TABLES 명령으로 잠기지 않았습니다."
+ nla "Tabel '%-.192s' was niet gelocked met LOCK TABLES"
nor "Tabellen '%-.192s' var ikke låst med LOCK TABLES"
norwegian-ny "Tabellen '%-.192s' var ikkje låst med LOCK TABLES"
pol "Tabela '%-.192s' nie została zablokowana poleceniem LOCK TABLES"
@@ -2383,12 +2479,13 @@ ER_TABLE_NOT_LOCKED
swe "Tabell '%-.192s' är inte låst med LOCK TABLES"
ukr "Таблицю '%-.192s' не було блоковано з LOCK TABLES"
ER_UNUSED_17
+ chi "你永远ä¸åº”该看到它"
eng "You should never see it"
spa "Nunca debería vd de ver esto"
ER_WRONG_DB_NAME 42000
+ chi "æ•°æ®åº“å称ä¸æ­£ç¡®'%-.100T'"
cze "Nepřípustné jméno databáze '%-.100T'"
dan "Ugyldigt database navn '%-.100T'"
- nla "Databasenaam '%-.100T' is niet getoegestaan"
eng "Incorrect database name '%-.100T'"
est "Vigane andmebaasi nimi '%-.100T'"
fre "Nom de base de donnée illégal: '%-.100T'"
@@ -2399,6 +2496,7 @@ ER_WRONG_DB_NAME 42000
ita "Nome database errato '%-.100T'"
jpn "データベースå '%-.100T' ã¯ä¸æ­£ã§ã™ã€‚"
kor "'%-.100T' ë°ì´íƒ€ë² ì´ìŠ¤ì˜ ì´ë¦„ì´ ë¶€ì •í™•í•©ë‹ˆë‹¤."
+ nla "Databasenaam '%-.100T' is niet getoegestaan"
nor "Ugyldig database navn '%-.100T'"
norwegian-ny "Ugyldig database namn '%-.100T'"
pol "Niedozwolona nazwa bazy danych '%-.100T'"
@@ -2411,9 +2509,9 @@ ER_WRONG_DB_NAME 42000
swe "Felaktigt databasnamn '%-.100T'"
ukr "Ðевірне ім'Ñ Ð±Ð°Ð·Ð¸ данних '%-.100T'"
ER_WRONG_TABLE_NAME 42000
+ chi "表åä¸æ­£ç¡®'%-.100s'"
cze "Nepřípustné jméno tabulky '%-.100s'"
dan "Ugyldigt tabel navn '%-.100s'"
- nla "Niet toegestane tabelnaam '%-.100s'"
eng "Incorrect table name '%-.100s'"
est "Vigane tabeli nimi '%-.100s'"
fre "Nom de table illégal: '%-.100s'"
@@ -2424,6 +2522,7 @@ ER_WRONG_TABLE_NAME 42000
ita "Nome tabella errato '%-.100s'"
jpn "表å '%-.100s' ã¯ä¸æ­£ã§ã™ã€‚"
kor "'%-.100s' í…Œì´ë¸” ì´ë¦„ì´ ë¶€ì •í™•í•©ë‹ˆë‹¤."
+ nla "Niet toegestane tabelnaam '%-.100s'"
nor "Ugyldig tabell navn '%-.100s'"
norwegian-ny "Ugyldig tabell namn '%-.100s'"
pol "Niedozwolona nazwa tabeli '%-.100s'..."
@@ -2436,19 +2535,20 @@ ER_WRONG_TABLE_NAME 42000
swe "Felaktigt tabellnamn '%-.100s'"
ukr "Ðевірне ім'Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– '%-.100s'"
ER_TOO_BIG_SELECT 42000
+ chi "SELECT 将检查超过 MAX_JOIN_SIZE 行;检查您的 WHERE 并使用 SET SQL_BIG_SELECTS=1 或 SET MAX_JOIN_SIZE=# 如果 SELECT 没问题"
cze "Zadaný SELECT by procházel příliš mnoho záznamů a trval velmi dlouho. Zkontrolujte tvar WHERE a je-li SELECT v pořádku, použijte SET SQL_BIG_SELECTS=1"
dan "SELECT ville undersøge for mange poster og ville sandsynligvis tage meget lang tid. Undersøg WHERE delen og brug SET SQL_BIG_SELECTS=1 hvis udtrykket er korrekt"
- nla "Het SELECT-statement zou te veel records analyseren en dus veel tijd in beslagnemen. Kijk het WHERE-gedeelte van de query na en kies SET SQL_BIG_SELECTS=1 als het stament in orde is"
eng "The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay"
est "SELECT lause peab läbi vaatama suure hulga kirjeid ja võtaks tõenäoliselt liiga kaua aega. Tasub kontrollida WHERE klauslit ja vajadusel kasutada käsku SET SQL_BIG_SELECTS=1"
fre "SELECT va devoir examiner beaucoup d'enregistrements ce qui va prendre du temps. Vérifiez la clause WHERE et utilisez SET SQL_BIG_SELECTS=1 si SELECT se passe bien"
ger "Die Ausführung des SELECT würde zu viele Datensätze untersuchen und wahrscheinlich sehr lange dauern. Bitte WHERE-Klausel überprüfen und gegebenenfalls SET SQL_BIG_SELECTS=1 oder SET MAX_JOIN_SIZE=# verwenden"
greek "Το SELECT θα εξετάσει μεγάλο αÏιθμό εγγÏαφών και πιθανώς θα καθυστεÏήσει. ΠαÏακαλώ εξετάστε τις παÏαμέτÏους του WHERE και χÏησιμοποιείστε SET SQL_BIG_SELECTS=1 αν το SELECT είναι σωστό"
- hun "A SELECT tul sok rekordot fog megvizsgalni es nagyon sokaig fog tartani. Ellenorizze a WHERE-t es hasznalja a SET SQL_BIG_SELECTS=1 beallitast, ha a SELECT okay"
hindi "SELECT कमांड MAX_JOIN_SIZE पंकà¥à¤¤à¤¿à¤¯à¥‹à¤‚ से भी जà¥à¤¯à¤¾à¤¦à¤¾ की जांच करेगा; कृपया WHERE कà¥à¤²à¥‰à¥› को जाचें अथवा SET SQL_BIG_SELECTS=1 या SET MAX_JOIN_SIZE=# का इसà¥à¤¤à¥‡à¤®à¤¾à¤² करें"
+ hun "A SELECT tul sok rekordot fog megvizsgalni es nagyon sokaig fog tartani. Ellenorizze a WHERE-t es hasznalja a SET SQL_BIG_SELECTS=1 beallitast, ha a SELECT okay"
ita "La SELECT dovrebbe esaminare troppi record e usare troppo tempo. Controllare la WHERE e usa SET SQL_BIG_SELECTS=1 se e` tutto a posto"
jpn "SELECTãŒMAX_JOIN_SIZEを超ãˆã‚‹è¡Œæ•°ã‚’処ç†ã—ã¾ã—ãŸã€‚WHEREå¥ã‚’確èªã—ã€SELECTæ–‡ã«å•é¡ŒãŒãªã‘ã‚Œã°ã€ SET SQL_BIG_SELECTS=1 ã¾ãŸã¯ SET MAX_JOIN_SIZE=# を使用ã—ã¦ä¸‹ã•ã„。"
kor "SELECT 명령ì—ì„œ 너무 ë§Žì€ ë ˆì½”ë“œë¥¼ 찾기 ë•Œë¬¸ì— ë§Žì€ ì‹œê°„ì´ ì†Œìš”ë©ë‹ˆë‹¤. ë”°ë¼ì„œ WHERE ë¬¸ì„ ì ê²€í•˜ê±°ë‚˜, 만약 SELECTê°€ okë˜ë©´ SET SQL_BIG_SELECTS=1 ì˜µì…˜ì„ ì‚¬ìš©í•˜ì„¸ìš”."
+ nla "Het SELECT-statement zou te veel records analyseren en dus veel tijd in beslagnemen. Kijk het WHERE-gedeelte van de query na en kies SET SQL_BIG_SELECTS=1 als het stament in orde is"
nor "SELECT ville undersøke for mange poster og ville sannsynligvis ta veldig lang tid. Undersøk WHERE klausulen og bruk SET SQL_BIG_SELECTS=1 om SELECTen er korrekt"
norwegian-ny "SELECT ville undersøkje for mange postar og ville sannsynligvis ta veldig lang tid. Undersøk WHERE klausulen og bruk SET SQL_BIG_SELECTS=1 om SELECTen er korrekt"
pol "Operacja SELECT będzie dotyczyła zbyt wielu rekordów i prawdopodobnie zajmie bardzo dużo czasu. SprawdĽ warunek WHERE i użyj SQL_OPTION BIG_SELECTS=1 je?li operacja SELECT jest poprawna"
@@ -2461,9 +2561,9 @@ ER_TOO_BIG_SELECT 42000
swe "Den angivna frågan skulle läsa mer än MAX_JOIN_SIZE rader. Kontrollera din WHERE och använd SET SQL_BIG_SELECTS=1 eller SET MAX_JOIN_SIZE=# ifall du vill hantera stora joins"
ukr "Запиту SELECT потрібно обробити багато запиÑів, що, певне, займе дуже багато чаÑу. Перевірте ваше WHERE та викориÑтовуйте SET SQL_BIG_SELECTS=1, Ñкщо цей запит SELECT Ñ” вірним"
ER_UNKNOWN_ERROR
+ chi "未知错误"
cze "Neznámá chyba"
dan "Ukendt fejl"
- nla "Onbekende Fout"
eng "Unknown error"
est "Tundmatu viga"
fre "Erreur inconnue"
@@ -2474,6 +2574,7 @@ ER_UNKNOWN_ERROR
ita "Errore sconosciuto"
jpn "ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼"
kor "알수 없는 ì—러입니다."
+ nla "Onbekende Fout"
nor "Ukjent feil"
norwegian-ny "Ukjend feil"
por "Erro desconhecido"
@@ -2485,9 +2586,9 @@ ER_UNKNOWN_ERROR
swe "Okänt fel"
ukr "Ðевідома помилка"
ER_UNKNOWN_PROCEDURE 42000
+ chi "未知存储过程 '%-.192s'"
cze "Neznámá procedura %-.192s"
dan "Ukendt procedure %-.192s"
- nla "Onbekende procedure %-.192s"
eng "Unknown procedure '%-.192s'"
est "Tundmatu protseduur '%-.192s'"
fre "Procédure %-.192s inconnue"
@@ -2498,6 +2599,7 @@ ER_UNKNOWN_PROCEDURE 42000
ita "Procedura '%-.192s' sconosciuta"
jpn "'%-.192s' ã¯ä¸æ˜Žãªãƒ—ロシージャã§ã™ã€‚"
kor "알수 없는 수행문 : '%-.192s'"
+ nla "Onbekende procedure %-.192s"
nor "Ukjent prosedyre %-.192s"
norwegian-ny "Ukjend prosedyre %-.192s"
pol "Unkown procedure %-.192s"
@@ -2510,9 +2612,9 @@ ER_UNKNOWN_PROCEDURE 42000
swe "Okänd procedur: %-.192s"
ukr "Ðевідома процедура '%-.192s'"
ER_WRONG_PARAMCOUNT_TO_PROCEDURE 42000
+ chi "存储过程 '%-.192s' 需è¦çš„å‚æ•°å’Œæ供的å‚æ•°ä¸å»åˆ"
cze "Chybný poÄet parametrů procedury %-.192s"
dan "Forkert antal parametre til proceduren %-.192s"
- nla "Foutief aantal parameters doorgegeven aan procedure %-.192s"
eng "Incorrect parameter count to procedure '%-.192s'"
est "Vale parameetrite hulk protseduurile '%-.192s'"
fre "Mauvais nombre de paramètres pour la procedure %-.192s"
@@ -2523,6 +2625,7 @@ ER_WRONG_PARAMCOUNT_TO_PROCEDURE 42000
ita "Numero di parametri errato per la procedura '%-.192s'"
jpn "プロシージャ '%-.192s' ã¸ã®ãƒ‘ラメータ数ãŒä¸æ­£ã§ã™ã€‚"
kor "'%-.192s' ìˆ˜í–‰ë¬¸ì— ëŒ€í•œ 부정확한 파ë¼ë©”í„°"
+ nla "Foutief aantal parameters doorgegeven aan procedure %-.192s"
nor "Feil parameter antall til prosedyren %-.192s"
norwegian-ny "Feil parameter tal til prosedyra %-.192s"
pol "Incorrect parameter count to procedure %-.192s"
@@ -2535,9 +2638,9 @@ ER_WRONG_PARAMCOUNT_TO_PROCEDURE 42000
swe "Felaktigt antal parametrar till procedur %-.192s"
ukr "Хибна кількіÑÑ‚ÑŒ параметрів процедури '%-.192s'"
ER_WRONG_PARAMETERS_TO_PROCEDURE
+ chi "存储过程 '%-.192s' çš„å‚æ•°ä¸å¯¹"
cze "Chybné parametry procedury %-.192s"
dan "Forkert(e) parametre til proceduren %-.192s"
- nla "Foutieve parameters voor procedure %-.192s"
eng "Incorrect parameters to procedure '%-.192s'"
est "Vigased parameetrid protseduurile '%-.192s'"
fre "Paramètre erroné pour la procedure %-.192s"
@@ -2548,6 +2651,7 @@ ER_WRONG_PARAMETERS_TO_PROCEDURE
ita "Parametri errati per la procedura '%-.192s'"
jpn "プロシージャ '%-.192s' ã¸ã®ãƒ‘ラメータãŒä¸æ­£ã§ã™ã€‚"
kor "'%-.192s' ìˆ˜í–‰ë¬¸ì— ëŒ€í•œ 부정확한 파ë¼ë©”í„°"
+ nla "Foutieve parameters voor procedure %-.192s"
nor "Feil parametre til prosedyren %-.192s"
norwegian-ny "Feil parameter til prosedyra %-.192s"
pol "Incorrect parameters to procedure %-.192s"
@@ -2560,9 +2664,9 @@ ER_WRONG_PARAMETERS_TO_PROCEDURE
swe "Felaktiga parametrar till procedur %-.192s"
ukr "Хибний параметер процедури '%-.192s'"
ER_UNKNOWN_TABLE 42S02
+ chi "未知表å '%-.192s' 在 %-.32s"
cze "Neznámá tabulka '%-.192s' v %-.32s"
dan "Ukendt tabel '%-.192s' i %-.32s"
- nla "Onbekende tabel '%-.192s' in %-.32s"
eng "Unknown table '%-.192s' in %-.32s"
est "Tundmatu tabel '%-.192s' %-.32s-s"
fre "Table inconnue '%-.192s' dans %-.32s"
@@ -2573,6 +2677,7 @@ ER_UNKNOWN_TABLE 42S02
ita "Tabella '%-.192s' sconosciuta in %-.32s"
jpn "'%-.192s' 㯠%-.32s ã§ã¯ä¸æ˜Žãªè¡¨ã§ã™ã€‚"
kor "알수 없는 í…Œì´ë¸” '%-.192s' (ë°ì´íƒ€ë² ì´ìŠ¤ %-.32s)"
+ nla "Onbekende tabel '%-.192s' in %-.32s"
nor "Ukjent tabell '%-.192s' i %-.32s"
norwegian-ny "Ukjend tabell '%-.192s' i %-.32s"
pol "Unknown table '%-.192s' in %-.32s"
@@ -2585,9 +2690,9 @@ ER_UNKNOWN_TABLE 42S02
swe "Okänd tabell '%-.192s' i '%-.32s'"
ukr "Ðевідома Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ '%-.192s' у %-.32s"
ER_FIELD_SPECIFIED_TWICE 42000
+ chi "列 '%-.192s' 被指定了两次"
cze "Položka '%-.192s' je zadána dvakrát"
dan "Feltet '%-.192s' er anvendt to gange"
- nla "Veld '%-.192s' is dubbel gespecificeerd"
eng "Column '%-.192s' specified twice"
est "Tulp '%-.192s' on määratletud topelt"
fre "Champ '%-.192s' spécifié deux fois"
@@ -2598,6 +2703,7 @@ ER_FIELD_SPECIFIED_TWICE 42000
ita "Campo '%-.192s' specificato 2 volte"
jpn "列 '%-.192s' ã¯2回指定ã•ã‚Œã¦ã„ã¾ã™ã€‚"
kor "칼럼 '%-.192s'는 ë‘번 ì •ì˜ë˜ì–´ 있습니다."
+ nla "Veld '%-.192s' is dubbel gespecificeerd"
nor "Feltet '%-.192s' er spesifisert to ganger"
norwegian-ny "Feltet '%-.192s' er spesifisert to gangar"
pol "Field '%-.192s' specified twice"
@@ -2610,9 +2716,9 @@ ER_FIELD_SPECIFIED_TWICE 42000
swe "Fält '%-.192s' är redan använt"
ukr "Стовбець '%-.192s' зазначено двічі"
ER_INVALID_GROUP_FUNC_USE
+ chi "组函数使用无效"
cze "Nesprávné použití funkce group"
dan "Forkert brug af grupperings-funktion"
- nla "Ongeldig gebruik van GROUP-functie"
eng "Invalid use of group function"
est "Vigane grupeerimisfunktsiooni kasutus"
fre "Utilisation invalide de la clause GROUP"
@@ -2623,6 +2729,7 @@ ER_INVALID_GROUP_FUNC_USE
ita "Uso non valido di una funzione di raggruppamento"
jpn "集計関数ã®ä½¿ç”¨æ–¹æ³•ãŒä¸æ­£ã§ã™ã€‚"
kor "ìž˜ëª»ëœ ê·¸ë£¹ 함수를 사용하였습니다."
+ nla "Ongeldig gebruik van GROUP-functie"
por "Uso inválido de função de agrupamento (GROUP)"
rum "Folosire incorecta a functiei group"
rus "Ðеправильное иÑпользование групповых функций"
@@ -2632,9 +2739,9 @@ ER_INVALID_GROUP_FUNC_USE
swe "Felaktig användning av SQL grupp function"
ukr "Хибне викориÑÑ‚Ð°Ð½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— групуваннÑ"
ER_UNSUPPORTED_EXTENSION 42000
+ chi "表'%-.192s'使用此MariaDB版本ä¸å­˜åœ¨çš„扩展"
cze "Tabulka '%-.192s' používá rozšíření, které v této verzi MariaDB není"
dan "Tabellen '%-.192s' bruger et filtypenavn som ikke findes i denne MariaDB version"
- nla "Tabel '%-.192s' gebruikt een extensie, die niet in deze MariaDB-versie voorkomt"
eng "Table '%-.192s' uses an extension that doesn't exist in this MariaDB version"
est "Tabel '%-.192s' kasutab laiendust, mis ei eksisteeri antud MariaDB versioonis"
fre "Table '%-.192s' : utilise une extension invalide pour cette version de MariaDB"
@@ -2643,8 +2750,9 @@ ER_UNSUPPORTED_EXTENSION 42000
hindi "टेबल '%-.192s' जिस इकà¥à¤¸à¥à¤Ÿà¥‡à¤¨à¥à¤¶à¤¨ का उपयोग कर रहा है, वह इस MariaDB संसà¥à¤•à¤°à¤£ में उपलबà¥à¤§ नहीं है"
hun "A(z) '%-.192s' tabla olyan bovitest hasznal, amely nem letezik ebben a MariaDB versioban"
ita "La tabella '%-.192s' usa un'estensione che non esiste in questa versione di MariaDB"
- jpn "表 '%-.192s' ã¯ã€ã“ã®MariaDBãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¯ç„¡ã„機能を使用ã—ã¦ã„ã¾ã™ã€‚"
+ jpn "表 '%-.192s' ã¯ã€ã“ã®MariaDBãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¯ç„¡ã„機能を使用ã—ã¦ã„ã¾ã™ã€‚"
kor "í…Œì´ë¸” '%-.192s'는 í™•ìž¥ëª…ë ¹ì„ ì´ìš©í•˜ì§€ë§Œ í˜„ìž¬ì˜ MariaDB 버젼ì—서는 존재하지 않습니다."
+ nla "Tabel '%-.192s' gebruikt een extensie, die niet in deze MariaDB-versie voorkomt"
nor "Table '%-.192s' uses a extension that doesn't exist in this MariaDB version"
norwegian-ny "Table '%-.192s' uses a extension that doesn't exist in this MariaDB version"
pol "Table '%-.192s' uses a extension that doesn't exist in this MariaDB version"
@@ -2657,9 +2765,9 @@ ER_UNSUPPORTED_EXTENSION 42000
swe "Tabell '%-.192s' har en extension som inte finns i denna version av MariaDB"
ukr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ '%-.192s' викориÑтовує розширеннÑ, що не Ñ–Ñнує у цій верÑÑ–Ñ— MariaDB"
ER_TABLE_MUST_HAVE_COLUMNS 42000
+ chi "表必须至少有1列"
cze "Tabulka musí mít alespoň jeden sloupec"
dan "En tabel skal have mindst een kolonne"
- nla "Een tabel moet minstens 1 kolom bevatten"
eng "A table must have at least 1 column"
est "Tabelis peab olema vähemalt üks tulp"
fre "Une table doit comporter au moins une colonne"
@@ -2670,6 +2778,7 @@ ER_TABLE_MUST_HAVE_COLUMNS 42000
ita "Una tabella deve avere almeno 1 colonna"
jpn "表ã«ã¯æœ€ä½Žã§ã‚‚1個ã®åˆ—ãŒå¿…è¦ã§ã™ã€‚"
kor "í•˜ë‚˜ì˜ í…Œì´ë¸”ì—서는 ì ì–´ë„ í•˜ë‚˜ì˜ ì¹¼ëŸ¼ì´ ì¡´ìž¬í•˜ì—¬ì•¼ 합니다."
+ nla "Een tabel moet minstens 1 kolom bevatten"
por "Uma tabela tem que ter pelo menos uma (1) coluna"
rum "O tabela trebuie sa aiba cel putin o coloana"
rus "Ð’ таблице должен быть как минимум один Ñтолбец"
@@ -2679,9 +2788,9 @@ ER_TABLE_MUST_HAVE_COLUMNS 42000
swe "Tabeller måste ha minst 1 kolumn"
ukr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ð° мати хочаб один Ñтовбець"
ER_RECORD_FILE_FULL
+ chi "表'%-.192s'已满"
cze "Tabulka '%-.192s' je plná"
dan "Tabellen '%-.192s' er fuld"
- nla "De tabel '%-.192s' is vol"
eng "The table '%-.192s' is full"
est "Tabel '%-.192s' on täis"
fre "La table '%-.192s' est pleine"
@@ -2692,6 +2801,7 @@ ER_RECORD_FILE_FULL
ita "La tabella '%-.192s' e` piena"
jpn "表 '%-.192s' ã¯æº€æ¯ã§ã™ã€‚"
kor "í…Œì´ë¸” '%-.192s'ê°€ full났습니다. "
+ nla "De tabel '%-.192s' is vol"
por "Tabela '%-.192s' está cheia"
rum "Tabela '%-.192s' e plina"
rus "Таблица '%-.192s' переполнена"
@@ -2701,9 +2811,9 @@ ER_RECORD_FILE_FULL
swe "Tabellen '%-.192s' är full"
ukr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ '%-.192s' заповнена"
ER_UNKNOWN_CHARACTER_SET 42000
+ chi "未知字符集:'%-.64s'"
cze "Neznámá znaková sada: '%-.64s'"
dan "Ukendt tegnsæt: '%-.64s'"
- nla "Onbekende character set: '%-.64s'"
eng "Unknown character set: '%-.64s'"
est "Vigane kooditabel '%-.64s'"
fre "Jeu de caractères inconnu: '%-.64s'"
@@ -2714,6 +2824,7 @@ ER_UNKNOWN_CHARACTER_SET 42000
ita "Set di caratteri '%-.64s' sconosciuto"
jpn "ä¸æ˜Žãªæ–‡å­—コードセット: '%-.64s'"
kor "알수없는 언어 Set: '%-.64s'"
+ nla "Onbekende character set: '%-.64s'"
por "Conjunto de caracteres '%-.64s' desconhecido"
rum "Set de caractere invalid: '%-.64s'"
rus "ÐеизвеÑÑ‚Ð½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° '%-.64s'"
@@ -2723,9 +2834,9 @@ ER_UNKNOWN_CHARACTER_SET 42000
swe "Okänd teckenuppsättning: '%-.64s'"
ukr "Ðевідома кодова таблицÑ: '%-.64s'"
ER_TOO_MANY_TABLES
+ chi "表太多; MariaDB åªèƒ½åœ¨join中使用 %d 个表"
cze "Příliš mnoho tabulek, MariaDB jich může mít v joinu jen %d"
dan "For mange tabeller. MariaDB kan kun bruge %d tabeller i et join"
- nla "Teveel tabellen. MariaDB kan slechts %d tabellen in een join bevatten"
eng "Too many tables; MariaDB can only use %d tables in a join"
est "Liiga palju tabeleid. MariaDB suudab JOINiga ühendada kuni %d tabelit"
fre "Trop de tables. MariaDB ne peut utiliser que %d tables dans un JOIN"
@@ -2736,6 +2847,7 @@ ER_TOO_MANY_TABLES
ita "Troppe tabelle. MariaDB puo` usare solo %d tabelle in una join"
jpn "表ãŒå¤šã™ãŽã¾ã™ã€‚MariaDBãŒJOINã§ãる表㯠%d 個ã¾ã§ã§ã™ã€‚"
kor "너무 ë§Žì€ í…Œì´ë¸”ì´ Joinë˜ì—ˆìŠµë‹ˆë‹¤. MariaDBì—서는 JOINì‹œ %dê°œì˜ í…Œì´ë¸”만 사용할 수 있습니다."
+ nla "Teveel tabellen. MariaDB kan slechts %d tabellen in een join bevatten"
por "Tabelas demais. O MariaDB pode usar somente %d tabelas em uma junção (JOIN)"
rum "Prea multe tabele. MariaDB nu poate folosi mai mult de %d tabele intr-un join"
rus "Слишком много таблиц. MariaDB может иÑпользовать только %d таблиц в Ñоединении"
@@ -2745,9 +2857,9 @@ ER_TOO_MANY_TABLES
swe "För många tabeller. MariaDB can ha högst %d tabeller i en och samma join"
ukr "Забагато таблиць. MariaDB може викориÑтовувати лише %d таблиць у об'єднанні"
ER_TOO_MANY_FIELDS
+ chi "太多列"
cze "Příliš mnoho položek"
dan "For mange felter"
- nla "Te veel velden"
eng "Too many columns"
est "Liiga palju tulpasid"
fre "Trop de champs"
@@ -2758,6 +2870,7 @@ ER_TOO_MANY_FIELDS
ita "Troppi campi"
jpn "列ãŒå¤šã™ãŽã¾ã™ã€‚"
kor "ì¹¼ëŸ¼ì´ ë„ˆë¬´ 많습니다."
+ nla "Te veel velden"
por "Colunas demais"
rum "Prea multe coloane"
rus "Слишком много Ñтолбцов"
@@ -2767,9 +2880,9 @@ ER_TOO_MANY_FIELDS
swe "För många fält"
ukr "Забагато Ñтовбців"
ER_TOO_BIG_ROWSIZE 42000
+ chi "行尺寸太大. ä¸åŒ…括BLOB,表的最大的行大å°æ˜¯ %ld. 这包括存储开销,请查看文档。您必须将æŸäº›åˆ—更改为 TEXT 或 BLOB"
cze "Řádek je příliÅ¡ velký. Maximální velikost řádku, nepoÄítaje položky blob, je %ld. Musíte zmÄ›nit nÄ›které položky na blob"
dan "For store poster. Max post størrelse, uden BLOB's, er %ld. Du må lave nogle felter til BLOB's"
- nla "Rij-grootte is groter dan toegestaan. Maximale rij grootte, blobs niet meegeteld, is %ld. U dient sommige velden in blobs te veranderen"
eng "Row size too large. The maximum row size for the used table type, not counting BLOBs, is %ld. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs"
est "Liiga pikk kirje. Kirje maksimumpikkus arvestamata BLOB-tüüpi välju on %ld. Muuda mõned väljad BLOB-tüüpi väljadeks"
fre "Ligne trop grande. Le taille maximale d'une ligne, sauf les BLOBs, est %ld. Changez le type de quelques colonnes en BLOB"
@@ -2779,6 +2892,7 @@ ER_TOO_BIG_ROWSIZE 42000
ita "Riga troppo grande. La massima grandezza di una riga, non contando i BLOB, e` %ld. Devi cambiare alcuni campi in BLOB"
jpn "行サイズãŒå¤§ãã™ãŽã¾ã™ã€‚ã“ã®è¡¨ã®æœ€å¤§è¡Œã‚µã‚¤ã‚ºã¯ BLOB ã‚’å«ã¾ãšã« %ld ã§ã™ã€‚æ ¼ç´æ™‚ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ˜ãƒƒãƒ‰ã‚‚å«ã¾ã‚Œã¾ã™(マニュアルを確èªã—ã¦ãã ã•ã„)。列をTEXTã¾ãŸã¯BLOBã«å¤‰æ›´ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
kor "너무 í° row 사ì´ì¦ˆìž…니다. BLOB를 계산하지 ì•Šê³  최대 row 사ì´ì¦ˆëŠ” %ld입니다. ì¼ë¶€ì—´ì„ BLOB ë˜ëŠ” TEXTë¡œ 변경해야 합니다."
+ nla "Rij-grootte is groter dan toegestaan. Maximale rij grootte, blobs niet meegeteld, is %ld. U dient sommige velden in blobs te veranderen"
por "Tamanho de linha grande demais. O máximo tamanho de linha, não contando BLOBs, é %ld. Você tem que mudar alguns campos para BLOBs"
rum "Marimea liniei (row) prea mare. Marimea maxima a liniei, excluzind BLOB-urile este de %ld. Trebuie sa schimbati unele cimpuri in BLOB-uri"
rus "Слишком большой размер запиÑи. МакÑимальный размер Ñтроки, иÑÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ð¾Ð»Ñ BLOB, - %ld. Возможно, вам Ñледует изменить тип некоторых полей на BLOB"
@@ -2788,17 +2902,18 @@ ER_TOO_BIG_ROWSIZE 42000
swe "För stor total radlängd. Den högst tillåtna radlängden, förutom BLOBs, är %ld. Ändra några av dina fält till BLOB"
ukr "Задовга Ñтрока. Ðайбільшою довжиною Ñтроки, не рахуючи BLOB, Ñ” %ld. Вам потрібно привеÑти деÑкі Ñтовбці до типу BLOB"
ER_STACK_OVERRUN
+ chi "线程栈溢出: 已使用了: %ld 堆栈 %ld. 使用 'mariadbd --thread_stack=#' 指定更大的堆栈"
cze "PÅ™eteÄení zásobníku threadu: použito %ld z %ld. Použijte 'mariadbd --thread_stack=#' k zadání vÄ›tšího zásobníku"
dan "Thread stack brugt: Brugt: %ld af en %ld stak. Brug 'mariadbd --thread_stack=#' for at allokere en større stak om nødvendigt"
- nla "Thread stapel overrun: Gebruikte: %ld van een %ld stack. Gebruik 'mariadbd --thread_stack=#' om een grotere stapel te definieren (indien noodzakelijk)"
- eng "Thread stack overrun: Used: %ld of a %ld stack. Consider increasing the thread_stack system variable"
+ eng "Thread stack overrun: Used: %ld of a %ld stack. Use 'mariadbd --thread_stack=#' to specify a bigger stack if needed"
fre "Débordement de la pile des tâches (Thread stack). Utilisées: %ld pour une pile de %ld. Essayez 'mariadbd --thread_stack=#' pour indiquer une plus grande valeur"
ger "Thread-Stack-Überlauf. Benutzt: %ld von %ld Stack. 'mariadbd --thread_stack=#' verwenden, um bei Bedarf einen größeren Stack anzulegen"
greek "Stack overrun στο thread: Used: %ld of a %ld stack. ΠαÏακαλώ χÏησιμοποιείστε 'mariadbd --thread_stack=#' για να οÏίσετε ένα μεγαλÏτεÏο stack αν χÏειάζεται"
hun "Thread verem tullepes: Used: %ld of a %ld stack. Hasznalja a 'mariadbd --thread_stack=#' nagyobb verem definialasahoz"
- ita "Thread stack overrun: Usati: %ld di uno stack di %ld. Usa 'maridbd --thread_stack=#' per specificare uno stack piu` grande"
+ ita "Thread stack overrun: Usati: %ld di uno stack di %ld. Usa 'mariadbd --thread_stack=#' per specificare uno stack piu` grande"
jpn "スレッドスタックä¸è¶³ã§ã™(使用: %ld ; サイズ: %ld)。必è¦ã«å¿œã˜ã¦ã€ã‚ˆã‚Šå¤§ãã„値㧠'mariadbd --thread_stack=#' ã®æŒ‡å®šã‚’ã—ã¦ãã ã•ã„。"
kor "쓰레드 스íƒì´ 넘쳤습니다. 사용: %ldê°œ 스íƒ: %ldê°œ. 만약 필요시 ë”í° ìŠ¤íƒì„ ì›í• ë•Œì—는 'mariadbd --thread_stack=#' 를 ì •ì˜í•˜ì„¸ìš”"
+ nla "Thread stapel overrun: Gebruikte: %ld van een %ld stack. Gebruik 'mariadbd --thread_stack=#' om een grotere stapel te definieren (indien noodzakelijk)"
por "Estouro da pilha do 'thread'. Usados %ld de uma pilha de %ld. Use 'mariadbd --thread_stack=#' para especificar uma pilha maior, se necessário"
rum "Stack-ul thread-ului a fost depasit (prea mic): Folositi: %ld intr-un stack de %ld. Folositi 'mariadbd --thread_stack=#' ca sa specifici un stack mai mare"
rus "Стек потоков переполнен: иÑпользовано: %ld из %ld Ñтека. ПрименÑйте 'mariadbd --thread_stack=#' Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐµÐ³Ð¾ размера Ñтека, еÑли необходимо"
@@ -2808,9 +2923,9 @@ ER_STACK_OVERRUN
swe "Trådstacken tog slut: Har använt %ld av %ld bytes. Använd 'mariadbd --thread_stack=#' ifall du behöver en större stack"
ukr "Стек гілок переповнено: ВикориÑтано: %ld з %ld. ВикориÑтовуйте 'mariadbd --thread_stack=#' аби зазначити більший Ñтек, Ñкщо необхідно"
ER_WRONG_OUTER_JOIN 42000
+ chi "在 OUTER JOIN 中å‘现交å‰ä¾èµ–;检查您的 ON æ¡ä»¶"
cze "V OUTER JOIN byl nalezen křížový odkaz. Prověřte ON podmínky"
dan "Krydsreferencer fundet i OUTER JOIN; check dine ON conditions"
- nla "Gekruiste afhankelijkheid gevonden in OUTER JOIN. Controleer uw ON-conditions"
eng "Cross dependency found in OUTER JOIN; examine your ON conditions"
est "Ristsõltuvus OUTER JOIN klauslis. Kontrolli oma ON tingimusi"
fre "Dépendance croisée dans une clause OUTER JOIN. Vérifiez la condition ON"
@@ -2819,6 +2934,7 @@ ER_WRONG_OUTER_JOIN 42000
hun "Keresztfuggoseg van az OUTER JOIN-ban. Ellenorizze az ON felteteleket"
ita "Trovata una dipendenza incrociata nella OUTER JOIN. Controlla le condizioni ON"
jpn "OUTER JOINã«ç›¸äº’ä¾å­˜ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ONå¥ã®æ¡ä»¶ã‚’確èªã—ã¦ä¸‹ã•ã„。"
+ nla "Gekruiste afhankelijkheid gevonden in OUTER JOIN. Controleer uw ON-conditions"
por "Dependência cruzada encontrada em junção externa (OUTER JOIN); examine as condições utilizadas nas cláusulas 'ON'"
rum "Dependinta incrucisata (cross dependency) gasita in OUTER JOIN. Examinati conditiile ON"
rus "Ð’ OUTER JOIN обнаружена перекреÑÑ‚Ð½Ð°Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑ‚ÑŒ. Внимательно проанализируйте Ñвои уÑÐ»Ð¾Ð²Ð¸Ñ ON"
@@ -2828,14 +2944,15 @@ ER_WRONG_OUTER_JOIN 42000
swe "Felaktigt referens i OUTER JOIN. Kontrollera ON-uttrycket"
ukr "ПерехреÑна залежніÑÑ‚ÑŒ у OUTER JOIN. Перевірте умову ON"
ER_NULL_COLUMN_IN_INDEX 42000
+ chi "表处ç†ç¨‹åºä¸æ”¯æŒç»™å®šç´¢å¼•ä¸­çš„ NULL. 请将列 '%-.192s' 改为 NOT NULL 或使用其他处ç†ç¨‹åº"
eng "Table handler doesn't support NULL in given index. Please change column '%-.192s' to be NOT NULL or use another handler"
spa "El manejador de tabla no soporta NULL en índice suministrado. Por favor, cambie la columna '%-.192s' para que sea NOT NULL o utilice otro manejador"
swe "Tabell hanteraren kan inte indexera NULL kolumner för den givna index typen. Ändra '%-.192s' till NOT NULL eller använd en annan hanterare"
ukr "Вказівник таблиці не підтримує NULL у зазначенному індекÑÑ–. Будь лаÑка, зменіть Ñтовпчик '%-.192s' на NOT NULL або викориÑтайте інший вказівник таблиці."
ER_CANT_FIND_UDF
+ chi "无法加载函数'%-.192s'"
cze "Nemohu naÄíst funkci '%-.192s'"
dan "Kan ikke læse funktionen '%-.192s'"
- nla "Kan functie '%-.192s' niet laden"
eng "Can't load function '%-.192s'"
est "Ei suuda avada funktsiooni '%-.192s'"
fre "Imposible de charger la fonction '%-.192s'"
@@ -2846,6 +2963,7 @@ ER_CANT_FIND_UDF
ita "Impossibile caricare la funzione '%-.192s'"
jpn "関数 '%-.192s' をロードã§ãã¾ã›ã‚“。"
kor "'%-.192s' 함수를 로드하지 못했습니다."
+ nla "Kan functie '%-.192s' niet laden"
por "Não pode carregar a função '%-.192s'"
rum "Nu pot incarca functia '%-.192s'"
rus "Ðевозможно загрузить функцию '%-.192s'"
@@ -2855,9 +2973,9 @@ ER_CANT_FIND_UDF
swe "Kan inte ladda funktionen '%-.192s'"
ukr "Ðе можу завантажити функцію '%-.192s'"
ER_CANT_INITIALIZE_UDF
+ chi "无法åˆå§‹åŒ–函数 '%-.192s'; %-.80s"
cze "Nemohu inicializovat funkci '%-.192s'; %-.80s"
dan "Kan ikke starte funktionen '%-.192s'; %-.80s"
- nla "Kan functie '%-.192s' niet initialiseren; %-.80s"
eng "Can't initialize function '%-.192s'; %-.80s"
est "Ei suuda algväärtustada funktsiooni '%-.192s'; %-.80s"
fre "Impossible d'initialiser la fonction '%-.192s'; %-.80s"
@@ -2868,6 +2986,7 @@ ER_CANT_INITIALIZE_UDF
ita "Impossibile inizializzare la funzione '%-.192s'; %-.80s"
jpn "関数 '%-.192s' ã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“。; %-.80s"
kor "'%-.192s' 함수를 초기화 하지 못했습니다.; %-.80s"
+ nla "Kan functie '%-.192s' niet initialiseren; %-.80s"
por "Não pode inicializar a função '%-.192s' - '%-.80s'"
rum "Nu pot initializa functia '%-.192s'; %-.80s"
rus "Ðевозможно инициализировать функцию '%-.192s'; %-.80s"
@@ -2877,9 +2996,9 @@ ER_CANT_INITIALIZE_UDF
swe "Kan inte initialisera funktionen '%-.192s'; '%-.80s'"
ukr "Ðе можу ініціалізувати функцію '%-.192s'; %-.80s"
ER_UDF_NO_PATHS
+ chi "共享库ä¸å…许使用路径"
cze "Pro sdílenou knihovnu nejsou povoleny cesty"
dan "Angivelse af sti ikke tilladt for delt bibliotek"
- nla "Geen pad toegestaan voor shared library"
eng "No paths allowed for shared library"
est "Teegi nimes ei tohi olla kataloogi"
fre "Chemin interdit pour les bibliothèques partagées"
@@ -2889,6 +3008,7 @@ ER_UDF_NO_PATHS
ita "Non sono ammessi path per le librerie condivisa"
jpn "共有ライブラリã«ã¯ãƒ‘スを指定ã§ãã¾ã›ã‚“。"
kor "공유 ë¼ì´ë²„러리를 위한 패스가 ì •ì˜ë˜ì–´ 있지 않습니다."
+ nla "Geen pad toegestaan voor shared library"
por "Não há caminhos (paths) permitidos para biblioteca compartilhada"
rum "Nici un paths nu e permis pentru o librarie shared"
rus "ÐедопуÑтимо указывать пути Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑких библиотек"
@@ -2898,9 +3018,9 @@ ER_UDF_NO_PATHS
swe "Man får inte ange sökväg för dynamiska bibliotek"
ukr "Ðе дозволено викориÑтовувати путі Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŽÐ²Ð°Ð½Ð¸Ñ… бібліотек"
ER_UDF_EXISTS
+ chi "函数 '%-.192s' å·²ç»å­˜åœ¨"
cze "Funkce '%-.192s' již existuje"
dan "Funktionen '%-.192s' findes allerede"
- nla "Functie '%-.192s' bestaat reeds"
eng "Function '%-.192s' already exists"
est "Funktsioon '%-.192s' juba eksisteerib"
fre "La fonction '%-.192s' existe déjà"
@@ -2911,6 +3031,7 @@ ER_UDF_EXISTS
ita "La funzione '%-.192s' esiste gia`"
jpn "関数 '%-.192s' ã¯ã™ã§ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ã€‚"
kor "'%-.192s' 함수는 ì´ë¯¸ 존재합니다."
+ nla "Functie '%-.192s' bestaat reeds"
por "Função '%-.192s' já existe"
rum "Functia '%-.192s' exista deja"
rus "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ '%-.192s' уже ÑущеÑтвует"
@@ -2920,9 +3041,9 @@ ER_UDF_EXISTS
swe "Funktionen '%-.192s' finns redan"
ukr "Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ '%-.192s' вже Ñ–Ñнує"
ER_CANT_OPEN_LIBRARY
+ chi "ä¸èƒ½æ‰“开共享库 '%-.192s' (错误å·ç : %d, %-.128s)"
cze "Nemohu otevřít sdílenou knihovnu '%-.192s' (errno: %d, %-.128s)"
dan "Kan ikke åbne delt bibliotek '%-.192s' (errno: %d, %-.128s)"
- nla "Kan shared library '%-.192s' niet openen (Errcode: %d, %-.128s)"
eng "Can't open shared library '%-.192s' (errno: %d, %-.128s)"
est "Ei suuda avada jagatud teeki '%-.192s' (veakood: %d, %-.128s)"
fre "Impossible d'ouvrir la bibliothèque partagée '%-.192s' (errno: %d, %-.128s)"
@@ -2932,6 +3053,7 @@ ER_CANT_OPEN_LIBRARY
ita "Impossibile aprire la libreria condivisa '%-.192s' (errno: %d, %-.128s)"
jpn "共有ライブラリ '%-.192s' ã‚’é–‹ã事ãŒã§ãã¾ã›ã‚“。(エラー番å·: %d, %-.128s)"
kor "'%-.192s' 공유 ë¼ì´ë²„러리를 열수 없습니다.(ì—러번호: %d, %-.128s)"
+ nla "Kan shared library '%-.192s' niet openen (Errcode: %d, %-.128s)"
nor "Can't open shared library '%-.192s' (errno: %d, %-.128s)"
norwegian-ny "Can't open shared library '%-.192s' (errno: %d, %-.128s)"
pol "Can't open shared library '%-.192s' (errno: %d, %-.128s)"
@@ -2944,9 +3066,9 @@ ER_CANT_OPEN_LIBRARY
swe "Kan inte öppna det dynamiska biblioteket '%-.192s' (Felkod: %d, %-.128s)"
ukr "Ðе можу відкрити розділювану бібліотеку '%-.192s' (помилка: %d, %-.128s)"
ER_CANT_FIND_DL_ENTRY
+ chi "在库中找ä¸åˆ°ç¬¦å· '%-.128s'"
cze "Nemohu najít funkci '%-.128s' v knihovně"
dan "Kan ikke finde funktionen '%-.128s' i bibliotek"
- nla "Kan functie '%-.128s' niet in library vinden"
eng "Can't find symbol '%-.128s' in library"
est "Ei leia funktsiooni '%-.128s' antud teegis"
fre "Impossible de trouver la fonction '%-.128s' dans la bibliothèque"
@@ -2956,6 +3078,7 @@ ER_CANT_FIND_DL_ENTRY
ita "Impossibile trovare la funzione '%-.128s' nella libreria"
jpn "関数 '%-.128s' ã¯å…±æœ‰ãƒ©ã‚¤ãƒ–ラリー中ã«ã‚ã‚Šã¾ã›ã‚“。"
kor "ë¼ì´ë²„러리ì—ì„œ '%-.128s' 함수를 ì°¾ì„ ìˆ˜ 없습니다."
+ nla "Kan functie '%-.128s' niet in library vinden"
por "Não pode encontrar a função '%-.128s' na biblioteca"
rum "Nu pot gasi functia '%-.128s' in libraria"
rus "Ðевозможно отыÑкать Ñимвол '%-.128s' в библиотеке"
@@ -2965,9 +3088,9 @@ ER_CANT_FIND_DL_ENTRY
swe "Hittar inte funktionen '%-.128s' in det dynamiska biblioteket"
ukr "Ðе можу знайти функцію '%-.128s' у бібліотеці"
ER_FUNCTION_NOT_DEFINED
+ chi "未定义函数 '%-.192s'"
cze "Funkce '%-.192s' není definována"
dan "Funktionen '%-.192s' er ikke defineret"
- nla "Functie '%-.192s' is niet gedefinieerd"
eng "Function '%-.192s' is not defined"
est "Funktsioon '%-.192s' ei ole defineeritud"
fre "La fonction '%-.192s' n'est pas définie"
@@ -2978,6 +3101,7 @@ ER_FUNCTION_NOT_DEFINED
ita "La funzione '%-.192s' non e` definita"
jpn "関数 '%-.192s' ã¯å®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
kor "'%-.192s' 함수가 ì •ì˜ë˜ì–´ 있지 않습니다."
+ nla "Functie '%-.192s' is niet gedefinieerd"
por "Função '%-.192s' não está definida"
rum "Functia '%-.192s' nu e definita"
rus "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ '%-.192s' не определена"
@@ -2987,9 +3111,9 @@ ER_FUNCTION_NOT_DEFINED
swe "Funktionen '%-.192s' är inte definierad"
ukr "Функцію '%-.192s' не визначено"
ER_HOST_IS_BLOCKED
+ chi "主机 '%-.64s' 由于许多连接错误而被阻止;使用 'mariadb-admin flush-hosts' 解除阻塞"
cze "Stroj '%-.64s' je zablokován kvůli mnoha chybám při připojování. Odblokujete použitím 'mariadb-admin flush-hosts'"
dan "Værten '%-.64s' er blokeret på grund af mange fejlforespørgsler. Lås op med 'mariadb-admin flush-hosts'"
- nla "Host '%-.64s' is geblokkeeerd vanwege te veel verbindings fouten. Deblokkeer met 'mariadb-admin flush-hosts'"
eng "Host '%-.64s' is blocked because of many connection errors; unblock with 'mariadb-admin flush-hosts'"
est "Masin '%-.64s' on blokeeritud hulgaliste ühendusvigade tõttu. Blokeeringu saab tühistada 'mariadb-admin flush-hosts' käsuga"
fre "L'hôte '%-.64s' est bloqué à cause d'un trop grand nombre d'erreur de connexion. Débloquer le par 'mariadb-admin flush-hosts'"
@@ -3000,6 +3124,7 @@ ER_HOST_IS_BLOCKED
ita "Sistema '%-.64s' bloccato a causa di troppi errori di connessione. Per sbloccarlo: 'mariadb-admin flush-hosts'"
jpn "接続エラーãŒå¤šã„ãŸã‚ã€ãƒ›ã‚¹ãƒˆ '%-.64s' ã¯æ‹’å¦ã•ã‚Œã¾ã—ãŸã€‚'mariadb-admin flush-hosts' ã§è§£é™¤ã§ãã¾ã™ã€‚"
kor "너무 ë§Žì€ ì—°ê²°ì˜¤ë¥˜ë¡œ ì¸í•˜ì—¬ 호스트 '%-.64s'는 블ë½ë˜ì—ˆìŠµë‹ˆë‹¤. 'mariadb-admin flush-hosts'를 ì´ìš©í•˜ì—¬ 블ë½ì„ 해제하세요"
+ nla "Host '%-.64s' is geblokkeeerd vanwege te veel verbindings fouten. Deblokkeer met 'mariadb-admin flush-hosts'"
por "'Host' '%-.64s' está bloqueado devido a muitos erros de conexão. Desbloqueie com 'mariadb-admin flush-hosts'"
rum "Host-ul '%-.64s' e blocat din cauza multelor erori de conectie. Poti deploca folosind 'mariadb-admin flush-hosts'"
rus "ХоÑÑ‚ '%-.64s' заблокирован из-за Ñлишком большого количеÑтва ошибок ÑоединениÑ. Разблокировать его можно Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ 'mariadb-admin flush-hosts'"
@@ -3008,9 +3133,9 @@ ER_HOST_IS_BLOCKED
swe "Denna dator, '%-.64s', är blockerad pga många felaktig paket. Gör 'mariadb-admin flush-hosts' för att ta bort alla blockeringarna"
ukr "ХоÑÑ‚ '%-.64s' заблоковано з причини великої кількоÑÑ‚Ñ– помилок з'єднаннÑ. Ð”Ð»Ñ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовуйте 'mariadb-admin flush-hosts'"
ER_HOST_NOT_PRIVILEGED
+ chi "Host'%-.64s'ä¸å…许连接到此MariaDBæœåŠ¡å™¨"
cze "Stroj '%-.64s' nemá povoleno se k tomuto MariaDB serveru připojit"
dan "Værten '%-.64s' kan ikke tilkoble denne MariaDB-server"
- nla "Het is host '%-.64s' is niet toegestaan verbinding te maken met deze MariaDB server"
eng "Host '%-.64s' is not allowed to connect to this MariaDB server"
est "Masinal '%-.64s' puudub ligipääs sellele MariaDB serverile"
fre "Le hôte '%-.64s' n'est pas authorisé à se connecter à ce serveur MariaDB"
@@ -3021,6 +3146,7 @@ ER_HOST_NOT_PRIVILEGED
ita "Al sistema '%-.64s' non e` consentita la connessione a questo server MariaDB"
jpn "ホスト '%-.64s' ã‹ã‚‰ã®ã“ã® MariaDB server ã¸ã®æŽ¥ç¶šã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
kor "'%-.64s' 호스트는 ì´ MariaDBì„œë²„ì— ì ‘ì†í•  허가를 받지 못했습니다."
+ nla "Het is host '%-.64s' is niet toegestaan verbinding te maken met deze MariaDB server"
por "'Host' '%-.64s' não tem permissão para se conectar com este servidor MariaDB"
rum "Host-ul '%-.64s' nu este permis a se conecta la aceste server MariaDB"
rus "ХоÑту '%-.64s' не разрешаетÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð°Ñ‚ÑŒÑÑ Ðº Ñтому Ñерверу MariaDB"
@@ -3029,9 +3155,9 @@ ER_HOST_NOT_PRIVILEGED
swe "Denna dator, '%-.64s', har inte privileger att använda denna MariaDB server"
ukr "ХоÑту '%-.64s' не доволено зв'ÑзуватиÑÑŒ з цим Ñервером MariaDB"
ER_PASSWORD_ANONYMOUS_USER 42000
+ chi "您正在以匿å用户身份使用 MariaDB,匿å用户ä¸èƒ½ä¿®æ”¹ç”¨æˆ·è®¾ç½®"
cze "Používáte MariaDB jako anonymní uživatel a anonymní uživatelé nemají povoleno měnit hesla"
dan "Du bruger MariaDB som anonym bruger. Anonyme brugere må ikke ændre adgangskoder"
- nla "U gebruikt MariaDB als anonieme gebruiker en deze mogen geen wachtwoorden wijzigen"
eng "You are using MariaDB as an anonymous user and anonymous users are not allowed to modify user settings"
est "Te kasutate MariaDB-i anonüümse kasutajana, kelledel pole parooli muutmise õigust"
fre "Vous utilisez un utilisateur anonyme et les utilisateurs anonymes ne sont pas autorisés à changer les mots de passe"
@@ -3042,6 +3168,7 @@ ER_PASSWORD_ANONYMOUS_USER 42000
ita "Impossibile cambiare la password usando MariaDB come utente anonimo"
jpn "MariaDB を匿åユーザーã§ä½¿ç”¨ã—ã¦ã„ã‚‹ã®ã§ã€ãƒ‘スワードã®å¤‰æ›´ã¯ã§ãã¾ã›ã‚“。"
kor "ë‹¹ì‹ ì€ MariaDBì„œë²„ì— ìµëª…ì˜ ì‚¬ìš©ìžë¡œ ì ‘ì†ì„ 하셨습니다.ìµëª…ì˜ ì‚¬ìš©ìžëŠ” 암호를 변경할 수 없습니다."
+ nla "U gebruikt MariaDB als anonieme gebruiker en deze mogen geen wachtwoorden wijzigen"
por "Você está usando o MariaDB como usuário anônimo e usuários anônimos não têm permissão para mudar senhas"
rum "Dumneavoastra folositi MariaDB ca un utilizator anonim si utilizatorii anonimi nu au voie sa schimbe setarile utilizatorilor"
rus "Ð’Ñ‹ иÑпользуете MariaDB от имени анонимного пользователÑ, а анонимным пользователÑм не разрешаетÑÑ Ð¼ÐµÐ½ÑÑ‚ÑŒ пароли"
@@ -3050,9 +3177,9 @@ ER_PASSWORD_ANONYMOUS_USER 42000
swe "Du använder MariaDB som en anonym användare och som sådan får du inte ändra ditt lösenord"
ukr "Ви викориÑтовуєте MariaDB Ñк анонімний кориÑтувач, тому вам не дозволено змінювати паролі"
ER_PASSWORD_NOT_ALLOWED 42000
+ chi "您必须具有更新 MariaDB æ•°æ®åº“中的表的æƒé™æ‰èƒ½æ›´æ”¹å…¶ä»–人的密ç "
cze "Na změnu hesel ostatním musíte mít právo provést update tabulek v databázi mysql"
- dan "Du skal have tilladelse til at opdatere tabeller i mysql databasen for at ændre andres adgangskoder"
- nla "U moet tabel update priveleges hebben in de mysql database om wachtwoorden voor anderen te mogen wijzigen"
+ dan "Du skal have tilladelse til at opdatere tabeller i MariaDB databasen for at ændre andres adgangskoder"
eng "You must have privileges to update tables in the mysql database to be able to change passwords for others"
est "Teiste paroolide muutmiseks on nõutav tabelite muutmisõigus 'mysql' andmebaasis"
fre "Vous devez avoir le privilège update sur les tables de la base de donnée mysql pour pouvoir changer les mots de passe des autres"
@@ -3062,6 +3189,7 @@ ER_PASSWORD_NOT_ALLOWED 42000
ita "E` necessario il privilegio di update sulle tabelle del database mysql per cambiare le password per gli altri utenti"
jpn "ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ‘スワードを変更ã™ã‚‹ãŸã‚ã«ã¯ã€mysqlデータベースã®è¡¨ã‚’æ›´æ–°ã™ã‚‹æ¨©é™ãŒå¿…è¦ã§ã™ã€‚"
kor "ë‹¹ì‹ ì€ ë‹¤ë¥¸ì‚¬ìš©ìžë“¤ì˜ 암호를 변경할 수 있ë„ë¡ ë°ì´íƒ€ë² ì´ìŠ¤ ë³€ê²½ê¶Œí•œì„ ê°€ì ¸ì•¼ 합니다."
+ nla "U moet tabel update priveleges hebben in de MariaDB database om wachtwoorden voor anderen te mogen wijzigen"
por "Você deve ter privilégios para atualizar tabelas no banco de dados mysql para ser capaz de mudar a senha de outros"
rum "Trebuie sa aveti privilegii sa actualizati tabelele in bazele de date mysql ca sa puteti sa schimati parolele altora"
rus "Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы изменÑÑ‚ÑŒ пароли других пользователей, у Ð²Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть привилегии на изменение таблиц в базе данных mysql"
@@ -3070,9 +3198,9 @@ ER_PASSWORD_NOT_ALLOWED 42000
swe "För att ändra lösenord för andra måste du ha rättigheter att uppdatera mysql-databasen"
ukr "Ви повині мати право на Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŒ у базі данних mysql, аби мати можливіÑÑ‚ÑŒ змінювати пароль іншим"
ER_PASSWORD_NO_MATCH 28000
+ chi "在用户表中找ä¸åˆ°ä»»ä½•åŒ¹é…çš„è¡Œ"
cze "V tabulce user není žádný odpovídající řádek"
dan "Kan ikke finde nogen tilsvarende poster i bruger tabellen"
- nla "Kan geen enkele passende rij vinden in de gebruikers tabel"
eng "Can't find any matching row in the user table"
est "Ei leia vastavat kirjet kasutajate tabelis"
fre "Impossible de trouver un enregistrement correspondant dans la table user"
@@ -3083,6 +3211,7 @@ ER_PASSWORD_NO_MATCH 28000
ita "Impossibile trovare la riga corrispondente nella tabella user"
jpn "ユーザーテーブルã«è©²å½“ã™ã‚‹ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
kor "ì‚¬ìš©ìž í…Œì´ë¸”ì—ì„œ ì¼ì¹˜í•˜ëŠ” ê²ƒì„ ì°¾ì„ ìˆ˜ 없습니다."
+ nla "Kan geen enkele passende rij vinden in de gebruikers tabel"
por "Não pode encontrar nenhuma linha que combine na tabela usuário (user table)"
rum "Nu pot gasi nici o linie corespunzatoare in tabela utilizatorului"
rus "Ðевозможно отыÑкать подходÑщую запиÑÑŒ в таблице пользователей"
@@ -3091,9 +3220,9 @@ ER_PASSWORD_NO_MATCH 28000
swe "Hittade inte användaren i 'user'-tabellen"
ukr "Ðе можу знайти відповідних запиÑів у таблиці кориÑтувача"
ER_UPDATE_INFO
+ chi "匹é…行:%ld已更改:%ld警告:%ld"
cze "Nalezených řádků: %ld Změněno: %ld Varování: %ld"
dan "Poster fundet: %ld Ændret: %ld Advarsler: %ld"
- nla "Passende rijen: %ld Gewijzigd: %ld Waarschuwingen: %ld"
eng "Rows matched: %ld Changed: %ld Warnings: %ld"
est "Sobinud kirjeid: %ld Muudetud: %ld Hoiatusi: %ld"
fre "Enregistrements correspondants: %ld Modifiés: %ld Warnings: %ld"
@@ -3102,6 +3231,7 @@ ER_UPDATE_INFO
ita "Rows riconosciute: %ld Cambiate: %ld Warnings: %ld"
jpn "該当ã—ãŸè¡Œ: %ld 変更: %ld 警告: %ld"
kor "ì¼ì¹˜í•˜ëŠ” Rows : %ldê°œ 변경ë¨: %ldê°œ 경고: %ldê°œ"
+ nla "Passende rijen: %ld Gewijzigd: %ld Waarschuwingen: %ld"
por "Linhas que combinaram: %ld - Alteradas: %ld - Avisos: %ld"
rum "Linii identificate (matched): %ld Schimbate: %ld Atentionari (warnings): %ld"
rus "Совпало запиÑей: %ld Изменено: %ld Предупреждений: %ld"
@@ -3110,9 +3240,9 @@ ER_UPDATE_INFO
swe "Rader: %ld Uppdaterade: %ld Varningar: %ld"
ukr "ЗапиÑів відповідає: %ld Змінено: %ld ЗаÑтережень: %ld"
ER_CANT_CREATE_THREAD
+ chi "无法创建新线程 (错误å·ç  %M); 如果您没有用完剩余内存,您å¯ä»¥æŸ¥é˜…文档以了解å¯èƒ½ä¸Žæ“作系统相关的错误"
cze "Nemohu vytvoÅ™it nový thread (errno %M). Pokud je jeÅ¡tÄ› nÄ›jaká volná paměť, podívejte se do manuálu na Äást o chybách specifických pro jednotlivé operaÄní systémy"
dan "Kan ikke danne en ny tråd (fejl nr. %M). Hvis computeren ikke er løbet tør for hukommelse, kan du se i brugervejledningen for en mulig operativ-system - afhængig fejl"
- nla "Kan geen nieuwe thread aanmaken (Errcode: %M). Indien er geen tekort aan geheugen is kunt u de handleiding consulteren over een mogelijke OS afhankelijke fout"
eng "Can't create a new thread (errno %M); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug"
est "Ei suuda luua uut lõime (veakood %M). Kui mälu ei ole otsas, on tõenäoliselt tegemist operatsioonisüsteemispetsiifilise veaga"
fre "Impossible de créer une nouvelle tâche (errno %M). S'il reste de la mémoire libre, consultez le manual pour trouver un éventuel bug dépendant de l'OS"
@@ -3121,6 +3251,7 @@ ER_CANT_CREATE_THREAD
ita "Impossibile creare un nuovo thread (errno %M). Se non ci sono problemi di memoria disponibile puoi consultare il manuale per controllare possibili problemi dipendenti dal SO"
jpn "æ–°è¦ã«ã‚¹ãƒ¬ãƒƒãƒ‰ã‚’作æˆã§ãã¾ã›ã‚“。(ã‚¨ãƒ©ãƒ¼ç•ªå· %M) ã‚‚ã—も使用å¯èƒ½ãƒ¡ãƒ¢ãƒªãƒ¼ã®ä¸è¶³ã§ãªã‘ã‚Œã°ã€OSä¾å­˜ã®ãƒã‚°ã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚"
kor "새로운 쓰레드를 만들 수 없습니다.(ì—러번호 %M). 만약 여유메모리가 있다면 OS-dependent버그 ì˜ ë©”ë‰´ì–¼ ë¶€ë¶„ì„ ì°¾ì•„ë³´ì‹œì˜¤."
+ nla "Kan geen nieuwe thread aanmaken (Errcode: %M). Indien er geen tekort aan geheugen is kunt u de handleiding consulteren over een mogelijke OS afhankelijke fout"
nor "Can't create a new thread (errno %M); if you are not out of available memory you can consult the manual for any possible OS dependent bug"
norwegian-ny "Can't create a new thread (errno %M); if you are not out of available memory you can consult the manual for any possible OS dependent bug"
pol "Can't create a new thread (errno %M); if you are not out of available memory you can consult the manual for any possible OS dependent bug"
@@ -3132,9 +3263,9 @@ ER_CANT_CREATE_THREAD
swe "Kan inte skapa en ny tråd (errno %M)"
ukr "Ðе можу Ñтворити нову гілку (помилка %M). Якщо ви не викориÑтали уÑÑŽ пам'ÑÑ‚ÑŒ, то прочитайте документацію до вашої ОС - можливо це помилка ОС"
ER_WRONG_VALUE_COUNT_ON_ROW 21S01
+ chi "列计数与行%lu的值计数ä¸åŒ¹é…"
cze "PoÄet sloupců neodpovídá poÄtu hodnot na řádku %lu"
dan "Kolonne antallet stemmer ikke overens med antallet af værdier i post %lu"
- nla "Kolom aantal komt niet overeen met waarde aantal in rij %lu"
eng "Column count doesn't match value count at row %lu"
est "Tulpade hulk erineb väärtuste hulgast real %lu"
ger "Anzahl der Felder stimmt nicht mit der Anzahl der Werte in Zeile %lu überein"
@@ -3142,6 +3273,7 @@ ER_WRONG_VALUE_COUNT_ON_ROW 21S01
ita "Il numero delle colonne non corrisponde al conteggio alla riga %lu"
jpn "%lu 行目ã§ã€åˆ—ã®æ•°ãŒå€¤ã®æ•°ã¨ä¸€è‡´ã—ã¾ã›ã‚“。"
kor "Row %luì—ì„œ 칼럼 카운트와 value 카운터와 ì¼ì¹˜í•˜ì§€ 않습니다."
+ nla "Kolom aantal komt niet overeen met waarde aantal in rij %lu"
por "Contagem de colunas não confere com a contagem de valores na linha %lu"
rum "Numarul de coloane nu corespunde cu numarul de valori la linia %lu"
rus "КоличеÑтво Ñтолбцов не Ñовпадает Ñ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑтвом значений в запиÑи %lu"
@@ -3150,9 +3282,9 @@ ER_WRONG_VALUE_COUNT_ON_ROW 21S01
swe "Antalet kolumner motsvarar inte antalet värden på rad: %lu"
ukr "КількіÑÑ‚ÑŒ Ñтовбців не Ñпівпадає з кількіÑÑ‚ÑŽ значень у Ñтроці %lu"
ER_CANT_REOPEN_TABLE
+ chi "无法é‡æ–°æ‰“开表:'%-.192s'"
cze "Nemohu znovuotevřít tabulku: '%-.192s"
dan "Kan ikke genåbne tabel '%-.192s"
- nla "Kan tabel niet opnieuw openen: '%-.192s"
eng "Can't reopen table: '%-.192s'"
est "Ei suuda taasavada tabelit '%-.192s'"
fre "Impossible de réouvrir la table: '%-.192s"
@@ -3162,6 +3294,7 @@ ER_CANT_REOPEN_TABLE
ita "Impossibile riaprire la tabella: '%-.192s'"
jpn "表をå†ã‚ªãƒ¼ãƒ—ンã§ãã¾ã›ã‚“。: '%-.192s'"
kor "í…Œì´ë¸”ì„ ë‹¤ì‹œ 열수 없군요: '%-.192s"
+ nla "Kan tabel niet opnieuw openen: '%-.192s"
nor "Can't reopen table: '%-.192s"
norwegian-ny "Can't reopen table: '%-.192s"
pol "Can't reopen table: '%-.192s"
@@ -3174,9 +3307,9 @@ ER_CANT_REOPEN_TABLE
swe "Kunde inte stänga och öppna tabell '%-.192s"
ukr "Ðе можу перевідкрити таблицю: '%-.192s'"
ER_INVALID_USE_OF_NULL 22004
+ chi "无效使用 NULL 值"
cze "Neplatné užití hodnoty NULL"
dan "Forkert brug af nulværdi (NULL)"
- nla "Foutief gebruik van de NULL waarde"
eng "Invalid use of NULL value"
est "NULL väärtuse väärkasutus"
fre "Utilisation incorrecte de la valeur NULL"
@@ -3186,6 +3319,7 @@ ER_INVALID_USE_OF_NULL 22004
ita "Uso scorretto del valore NULL"
jpn "NULL 値ã®ä½¿ç”¨æ–¹æ³•ãŒä¸é©åˆ‡ã§ã™ã€‚"
kor "NULL ê°’ì„ ìž˜ëª» 사용하셨군요..."
+ nla "Foutief gebruik van de NULL waarde"
por "Uso inválido do valor NULL"
rum "Folosirea unei value NULL e invalida"
rus "Ðеправильное иÑпользование величины NULL"
@@ -3194,29 +3328,30 @@ ER_INVALID_USE_OF_NULL 22004
swe "Felaktig använding av NULL"
ukr "Хибне викориÑÑ‚Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ NULL"
ER_REGEXP_ERROR 42000
+ chi "正则表达错误 '%s'"
cze "Regulární výraz vrátil chybu: %s"
- dan "Fik fejl '%-.64s' fra regexp"
- nla "Fout '%-.64s' ontvangen van regexp"
+ dan "Fik fejl '%s' fra regexp"
eng "Regex error '%s'"
est "regexp tagastas vea: %s"
- fre "Erreur '%-.64s' provenant de regexp"
+ fre "Erreur '%s' provenant de regexp"
ger "Regexp Fehler %s"
- hindi "regexp में '%-.64s' तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
- hun "'%-.64s' hiba a regularis kifejezes hasznalata soran (regexp)"
- ita "Errore '%-.64s' da regexp"
- jpn "regexp ãŒã‚¨ãƒ©ãƒ¼ '%-.64s' ã‚’è¿”ã—ã¾ã—ãŸã€‚"
- kor "regexpì—ì„œ '%-.64s'ê°€ 났습니다."
- por "Obteve erro '%-.64s' em regexp"
- rum "Eroarea '%-.64s' obtinuta din expresia regulara (regexp)"
+ hindi "regexp में '%s' तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
+ hun "'%s' hiba a regularis kifejezes hasznalata soran (regexp)"
+ ita "Errore '%s' da regexp"
+ jpn "regexp ãŒã‚¨ãƒ©ãƒ¼ '%s' ã‚’è¿”ã—ã¾ã—ãŸã€‚"
+ kor "regexpì—ì„œ '%s'ê°€ 났습니다."
+ nla "Fout '%s' ontvangen van regexp"
+ por "Obteve erro '%s' em regexp"
+ rum "Eroarea '%s' obtinuta din expresia regulara (regexp)"
rus "Ошибка регулÑрного выражениÑ: %s"
serbian "Funkcija regexp je vratila grešku: %s"
- spa "Error %s desde regexp"
- swe "Fick fel '%-.64s' från REGEXP"
+ spa "Obtenido error '%s' de regexp"
+ swe "Fick fel '%s' från REGEXP"
ukr "Помилка регулÑрного виразу: %s"
ER_MIX_OF_GROUP_FUNC_AND_FIELDS 42000
+ chi "如果没有 GROUP BY å­å¥ï¼Œä¸èƒ½æ··åˆæ²¡æœ‰ GROUP 列的 GROUP 列 (MIN(),MAX(),COUNT(),...)"
cze "Pokud není žádná GROUP BY klauzule, není dovoleno souÄasné použití GROUP položek (MIN(),MAX(),COUNT()...) s ne GROUP položkami"
dan "Sammenblanding af GROUP kolonner (MIN(),MAX(),COUNT()...) uden GROUP kolonner er ikke tilladt, hvis der ikke er noget GROUP BY prædikat"
- nla "Het mixen van GROUP kolommen (MIN(),MAX(),COUNT()...) met no-GROUP kolommen is foutief indien er geen GROUP BY clausule is"
eng "Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause"
est "GROUP tulpade (MIN(),MAX(),COUNT()...) kooskasutamine tavaliste tulpadega ilma GROUP BY klauslita ei ole lubatud"
fre "Mélanger les colonnes GROUP (MIN(),MAX(),COUNT()...) avec des colonnes normales est interdit s'il n'y a pas de clause GROUP BY"
@@ -3225,6 +3360,7 @@ ER_MIX_OF_GROUP_FUNC_AND_FIELDS 42000
ita "Il mescolare funzioni di aggregazione (MIN(),MAX(),COUNT()...) e non e` illegale se non c'e` una clausula GROUP BY"
jpn "GROUP BYå¥ãŒç„¡ã„å ´åˆã€é›†è¨ˆé–¢æ•°(MIN(),MAX(),COUNT(),...)ã¨é€šå¸¸ã®åˆ—ã‚’åŒæ™‚ã«ä½¿ç”¨ã§ãã¾ã›ã‚“。"
kor "GROUP BY ì ˆ ì—†ì´ í˜¼í•©ëœ GROUP 함수 (MIN(),MAX(),COUNT(),...) 를 사용할 수 없습니다."
+ nla "Het mixen van GROUP kolommen (MIN(),MAX(),COUNT()...) met no-GROUP kolommen is foutief indien er geen GROUP BY clausule is"
por "Mistura de colunas agrupadas (com MIN(), MAX(), COUNT(), ...) com colunas não agrupadas é ilegal, se não existir uma cláusula de agrupamento (cláusula GROUP BY)"
rum "Amestecarea de coloane GROUP (MIN(),MAX(),COUNT()...) fara coloane GROUP este ilegala daca nu exista o clauza GROUP BY"
rus "Одновременное иÑпользование Ñгруппированных (GROUP) Ñтолбцов (MIN(),MAX(),COUNT(),...) Ñ Ð½ÐµÑгруппированными Ñтолбцами ÑвлÑетÑÑ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼, еÑли в выражении еÑÑ‚ÑŒ GROUP BY"
@@ -3233,9 +3369,9 @@ ER_MIX_OF_GROUP_FUNC_AND_FIELDS 42000
swe "Man får ha både GROUP-kolumner (MIN(),MAX(),COUNT()...) och fält i en fråga om man inte har en GROUP BY-del"
ukr "Ð—Ð¼Ñ–ÑˆÑƒÐ²Ð°Ð½Ð½Ñ GROUP Ñтовбців (MIN(),MAX(),COUNT()...) з не GROUP ÑтовбцÑми Ñ” забороненим, Ñкщо не має GROUP BY"
ER_NONEXISTING_GRANT 42000
+ chi "用户 '%-.48s' æ¥è‡ªä¸»æœº '%-.64s'没有此类授æƒ"
cze "Neexistuje odpovídající grant pro uživatele '%-.48s' na stroji '%-.64s'"
dan "Denne tilladelse findes ikke for brugeren '%-.48s' på vært '%-.64s'"
- nla "Deze toegang (GRANT) is niet toegekend voor gebruiker '%-.48s' op host '%-.64s'"
eng "There is no such grant defined for user '%-.48s' on host '%-.64s'"
est "Sellist õigust ei ole defineeritud kasutajale '%-.48s' masinast '%-.64s'"
fre "Un tel droit n'est pas défini pour l'utilisateur '%-.48s' sur l'hôte '%-.64s'"
@@ -3244,6 +3380,7 @@ ER_NONEXISTING_GRANT 42000
ita "GRANT non definita per l'utente '%-.48s' dalla macchina '%-.64s'"
jpn "ユーザー '%-.48s' (ホスト '%-.64s' 上) ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
kor "ì‚¬ìš©ìž '%-.48s' (호스트 '%-.64s')를 위하여 ì •ì˜ëœ 그런 승ì¸ì€ 없습니다."
+ nla "Deze toegang (GRANT) is niet toegekend voor gebruiker '%-.48s' op host '%-.64s'"
por "Não existe tal permissão (grant) definida para o usuário '%-.48s' no 'host' '%-.64s'"
rum "Nu exista un astfel de grant definit pentru utilzatorul '%-.48s' de pe host-ul '%-.64s'"
rus "Такие права не определены Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ '%-.48s' на хоÑте '%-.64s'"
@@ -3252,11 +3389,10 @@ ER_NONEXISTING_GRANT 42000
swe "Det finns inget privilegium definierat för användare '%-.48s' på '%-.64s'"
ukr "Повноважень не визначено Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача '%-.48s' з хоÑту '%-.64s'"
ER_TABLEACCESS_DENIED_ERROR 42000
+ chi "%-.100T 命令的æƒé™æ‹’ç»ç”¨æˆ· '%s'@'%s' 用在表 '%-.192s'"
cze "%-.100T příkaz nepřístupný pro uživatele: '%s'@'%s' pro tabulku '%-.192s'"
dan "%-.100T-kommandoen er ikke tilladt for brugeren '%s'@'%s' for tabellen '%-.192s'"
- nla "%-.100T commando geweigerd voor gebruiker: '%s'@'%s' voor tabel '%-.192s'"
eng "%-.100T command denied to user '%s'@'%s' for table '%-.192s'"
- jps "コマンド %-.100T 㯠ユーザー '%s'@'%s' ,テーブル '%-.192s' ã«å¯¾ã—ã¦è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“",
est "%-.100T käsk ei ole lubatud kasutajale '%s'@'%s' tabelis '%-.192s'"
fre "La commande '%-.100T' est interdite à l'utilisateur: '%s'@'%s' sur la table '%-.192s'"
ger "%-.100T Befehl nicht erlaubt für Benutzer '%s'@'%s' auf Tabelle '%-.192s'"
@@ -3264,6 +3400,7 @@ ER_TABLEACCESS_DENIED_ERROR 42000
ita "Comando %-.100T negato per l'utente: '%s'@'%s' sulla tabella '%-.192s'"
jpn "コマンド %-.100T 㯠ユーザー '%s'@'%s' ,テーブル '%-.192s' ã«å¯¾ã—ã¦è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
kor "'%-.100T' ëª…ë ¹ì€ ë‹¤ìŒ ì‚¬ìš©ìžì—게 거부ë˜ì—ˆìŠµë‹ˆë‹¤. : '%s'@'%s' for í…Œì´ë¸” '%-.192s'"
+ nla "%-.100T commando geweigerd voor gebruiker: '%s'@'%s' voor tabel '%-.192s'"
por "Comando '%-.100T' negado para o usuário '%s'@'%s' na tabela '%-.192s'"
rum "Comanda %-.100T interzisa utilizatorului: '%s'@'%s' pentru tabela '%-.192s'"
rus "Команда %-.100T запрещена пользователю '%s'@'%s' Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ '%-.192s'"
@@ -3272,11 +3409,10 @@ ER_TABLEACCESS_DENIED_ERROR 42000
swe "%-.100T ej tillåtet för '%s'@'%s' för tabell '%-.192s'"
ukr "%-.100T команда заборонена кориÑтувачу: '%s'@'%s' у таблиці '%-.192s'"
ER_COLUMNACCESS_DENIED_ERROR 42000
+ chi "%-.32s 命令的æƒé™æ‹’ç»ç”¨æˆ· '%s'@'%s' 用在列 '%-.192s' 在表 '%-.192s'"
cze "%-.32s příkaz nepřístupný pro uživatele: '%s'@'%s' pro sloupec '%-.192s' v tabulce '%-.192s'"
dan "%-.32s-kommandoen er ikke tilladt for brugeren '%s'@'%s' for kolonne '%-.192s' in tabellen '%-.192s'"
- nla "%-.32s commando geweigerd voor gebruiker: '%s'@'%s' voor kolom '%-.192s' in tabel '%-.192s'"
eng "%-.32s command denied to user '%s'@'%s' for column '%-.192s' in table '%-.192s'"
- jps "コマンド %-.32s 㯠ユーザー '%s'@'%s'Â¥n カラム '%-.192s' テーブル '%-.192s' ã«å¯¾ã—ã¦è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“",
est "%-.32s käsk ei ole lubatud kasutajale '%s'@'%s' tulbale '%-.192s' tabelis '%-.192s'"
fre "La commande '%-.32s' est interdite à l'utilisateur: '%s'@'%s' sur la colonne '%-.192s' de la table '%-.192s'"
ger "%-.32s Befehl nicht erlaubt für Benutzer '%s'@'%s' und Feld '%-.192s' in Tabelle '%-.192s'"
@@ -3284,6 +3420,7 @@ ER_COLUMNACCESS_DENIED_ERROR 42000
ita "Comando %-.32s negato per l'utente: '%s'@'%s' sulla colonna '%-.192s' della tabella '%-.192s'"
jpn "コマンド %-.32s 㯠ユーザー '%s'@'%s'\n カラム '%-.192s' テーブル '%-.192s' ã«å¯¾ã—ã¦è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
kor "'%-.32s' ëª…ë ¹ì€ ë‹¤ìŒ ì‚¬ìš©ìžì—게 거부ë˜ì—ˆìŠµë‹ˆë‹¤. : '%s'@'%s' for 칼럼 '%-.192s' in í…Œì´ë¸” '%-.192s'"
+ nla "%-.32s commando geweigerd voor gebruiker: '%s'@'%s' voor kolom '%-.192s' in tabel '%-.192s'"
por "Comando '%-.32s' negado para o usuário '%s'@'%s' na coluna '%-.192s', na tabela '%-.192s'"
rum "Comanda %-.32s interzisa utilizatorului: '%s'@'%s' pentru coloana '%-.192s' in tabela '%-.192s'"
rus "Команда %-.32s запрещена пользователю '%s'@'%s' Ð´Ð»Ñ Ñтолбца '%-.192s' в таблице '%-.192s'"
@@ -3292,9 +3429,9 @@ ER_COLUMNACCESS_DENIED_ERROR 42000
swe "%-.32s ej tillåtet för '%s'@'%s' för kolumn '%-.192s' i tabell '%-.192s'"
ukr "%-.32s команда заборонена кориÑтувачу: '%s'@'%s' Ð´Ð»Ñ ÑÑ‚Ð¾Ð²Ð±Ñ†Ñ '%-.192s' у таблиці '%-.192s'"
ER_ILLEGAL_GRANT_FOR_TABLE 42000
+ chi "éžæ³•çš„ GRANT/REVOKE 命令;请查阅文档查看å¯ä»¥ä½¿ç”¨å“ªäº›æƒé™"
cze "Neplatný příkaz GRANT/REVOKE. Prosím, pÅ™eÄtÄ›te si v manuálu, jaká privilegia je možné použít"
dan "Forkert GRANT/REVOKE kommando. Se i brugervejledningen hvilke privilegier der kan specificeres"
- nla "Foutief GRANT/REVOKE commando. Raadpleeg de handleiding welke priveleges gebruikt kunnen worden"
eng "Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used"
est "Vigane GRANT/REVOKE käsk. Tutvu kasutajajuhendiga"
fre "Commande GRANT/REVOKE incorrecte. Consultez le manuel"
@@ -3304,6 +3441,7 @@ ER_ILLEGAL_GRANT_FOR_TABLE 42000
ita "Comando GRANT/REVOKE illegale. Prego consultare il manuale per sapere quali privilegi possono essere usati"
jpn "ä¸æ­£ãª GRANT/REVOKE コマンドã§ã™ã€‚ã©ã®æ¨©é™ã§åˆ©ç”¨å¯èƒ½ã‹ã¯ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã‚’å‚ç…§ã—ã¦ä¸‹ã•ã„。"
kor "ìž˜ëª»ëœ GRANT/REVOKE 명령. ì–´ë–¤ 권리와 승ì¸ì´ 사용ë˜ì–´ 질 수 있는지 ë©”ë‰´ì–¼ì„ ë³´ì‹œì˜¤."
+ nla "Foutief GRANT/REVOKE commando. Raadpleeg de handleiding welke priveleges gebruikt kunnen worden"
nor "Illegal GRANT/REVOKE command; please consult the manual to see which privleges can be used"
norwegian-ny "Illegal GRANT/REVOKE command; please consult the manual to see which privleges can be used"
pol "Illegal GRANT/REVOKE command; please consult the manual to see which privleges can be used"
@@ -3316,9 +3454,9 @@ ER_ILLEGAL_GRANT_FOR_TABLE 42000
swe "Felaktigt GRANT-privilegium använt"
ukr "Хибна GRANT/REVOKE команда; прочитайте документацію ÑтоÑовно того, Ñкі права можна викориÑтовувати"
ER_GRANT_WRONG_HOST_OR_USER 42000
+ chi "GRANT 语å¥çš„主机或用户å‚数太长"
cze "Argument příkazu GRANT uživatel nebo stroj je příliš dlouhý"
dan "Værts- eller brugernavn for langt til GRANT"
- nla "De host of gebruiker parameter voor GRANT is te lang"
eng "The host or user argument to GRANT is too long"
est "Masina või kasutaja nimi GRANT lauses on liiga pikk"
fre "L'hôte ou l'utilisateur donné en argument à GRANT est trop long"
@@ -3328,6 +3466,7 @@ ER_GRANT_WRONG_HOST_OR_USER 42000
ita "L'argomento host o utente per la GRANT e` troppo lungo"
jpn "GRANTコマンドã¸ã®ã€ãƒ›ã‚¹ãƒˆåやユーザーåãŒé•·ã™ãŽã¾ã™ã€‚"
kor "승ì¸(GRANT)ì„ ìœ„í•˜ì—¬ 사용한 사용ìžë‚˜ í˜¸ìŠ¤íŠ¸ì˜ ê°’ë“¤ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤."
+ nla "De host of gebruiker parameter voor GRANT is te lang"
por "Argumento de 'host' ou de usuário para o GRANT é longo demais"
rum "Argumentul host-ului sau utilizatorului pentru GRANT e prea lung"
rus "Слишком длинное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ/хоÑта Ð´Ð»Ñ GRANT"
@@ -3336,9 +3475,9 @@ ER_GRANT_WRONG_HOST_OR_USER 42000
swe "Felaktigt maskinnamn eller användarnamn använt med GRANT"
ukr "Ðргумент host або user Ð´Ð»Ñ GRANT задовгий"
ER_NO_SUCH_TABLE 42S02
+ chi "表 '%-.192s.%-.192s' ä¸å­˜åœ¨"
cze "Tabulka '%-.192s.%-.192s' neexistuje"
dan "Tabellen '%-.192s.%-.192s' eksisterer ikke"
- nla "Tabel '%-.192s.%-.192s' bestaat niet"
eng "Table '%-.192s.%-.192s' doesn't exist"
est "Tabelit '%-.192s.%-.192s' ei eksisteeri"
fre "La table '%-.192s.%-.192s' n'existe pas"
@@ -3348,6 +3487,7 @@ ER_NO_SUCH_TABLE 42S02
ita "La tabella '%-.192s.%-.192s' non esiste"
jpn "表 '%-.192s.%-.192s' ã¯å­˜åœ¨ã—ã¾ã›ã‚“。"
kor "í…Œì´ë¸” '%-.192s.%-.192s' 는 존재하지 않습니다."
+ nla "Tabel '%-.192s.%-.192s' bestaat niet"
nor "Table '%-.192s.%-.192s' doesn't exist"
norwegian-ny "Table '%-.192s.%-.192s' doesn't exist"
pol "Table '%-.192s.%-.192s' doesn't exist"
@@ -3360,9 +3500,9 @@ ER_NO_SUCH_TABLE 42S02
swe "Det finns ingen tabell som heter '%-.192s.%-.192s'"
ukr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ '%-.192s.%-.192s' не Ñ–Ñнує"
ER_NONEXISTING_TABLE_GRANT 42000
+ chi "没有为用户 '%-.48s' æ¥è‡ªä¸»æœº '%-.64s' 在表 '%-.192s' 上授æƒ"
cze "Neexistuje odpovídající grant pro uživatele '%-.48s' na stroji '%-.64s' pro tabulku '%-.192s'"
dan "Denne tilladelse eksisterer ikke for brugeren '%-.48s' på vært '%-.64s' for tabellen '%-.192s'"
- nla "Deze toegang (GRANT) is niet toegekend voor gebruiker '%-.48s' op host '%-.64s' op tabel '%-.192s'"
eng "There is no such grant defined for user '%-.48s' on host '%-.64s' on table '%-.192s'"
est "Sellist õigust ei ole defineeritud kasutajale '%-.48s' masinast '%-.64s' tabelile '%-.192s'"
fre "Un tel droit n'est pas défini pour l'utilisateur '%-.48s' sur l'hôte '%-.64s' sur la table '%-.192s'"
@@ -3371,6 +3511,7 @@ ER_NONEXISTING_TABLE_GRANT 42000
ita "GRANT non definita per l'utente '%-.48s' dalla macchina '%-.64s' sulla tabella '%-.192s'"
jpn "ユーザー '%-.48s' (ホスト '%-.64s' 上) ã®è¡¨ '%-.192s' ã¸ã®æ¨©é™ã¯å®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
kor "ì‚¬ìš©ìž '%-.48s'(호스트 '%-.64s')는 í…Œì´ë¸” '%-.192s'를 사용하기 위하여 ì •ì˜ëœ 승ì¸ì€ 없습니다. "
+ nla "Deze toegang (GRANT) is niet toegekend voor gebruiker '%-.48s' op host '%-.64s' op tabel '%-.192s'"
por "Não existe tal permissão (grant) definido para o usuário '%-.48s' no 'host' '%-.64s', na tabela '%-.192s'"
rum "Nu exista un astfel de privilegiu (grant) definit pentru utilizatorul '%-.48s' de pe host-ul '%-.64s' pentru tabela '%-.192s'"
rus "Такие права не определены Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ '%-.48s' на компьютере '%-.64s' Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ '%-.192s'"
@@ -3379,9 +3520,9 @@ ER_NONEXISTING_TABLE_GRANT 42000
swe "Det finns inget privilegium definierat för användare '%-.48s' på '%-.64s' för tabell '%-.192s'"
ukr "Повноважень не визначено Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача '%-.48s' з хоÑту '%-.64s' Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– '%-.192s'"
ER_NOT_ALLOWED_COMMAND 42000
+ chi "本 MariaDB 版本ä¸å…许使用这个命令"
cze "Použitý příkaz není v této verzi MariaDB povolen"
dan "Den brugte kommando er ikke tilladt med denne udgave af MariaDB"
- nla "Het used commando is niet toegestaan in deze MariaDB versie"
eng "The used command is not allowed with this MariaDB version"
est "Antud käsk ei ole lubatud käesolevas MariaDB versioonis"
fre "Cette commande n'existe pas dans cette version de MariaDB"
@@ -3391,6 +3532,7 @@ ER_NOT_ALLOWED_COMMAND 42000
ita "Il comando utilizzato non e` supportato in questa versione di MariaDB"
jpn "ã“ã®MariaDBãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯åˆ©ç”¨ã§ããªã„コマンドã§ã™ã€‚"
kor "ì‚¬ìš©ëœ ëª…ë ¹ì€ í˜„ìž¬ì˜ MariaDB 버젼ì—서는 ì´ìš©ë˜ì§€ 않습니다."
+ nla "Het used commando is niet toegestaan in deze MariaDB versie"
por "Comando usado não é permitido para esta versão do MariaDB"
rum "Comanda folosita nu este permisa pentru aceasta versiune de MariaDB"
rus "Эта команда не допуÑкаетÑÑ Ð² данной верÑии MariaDB"
@@ -3399,9 +3541,9 @@ ER_NOT_ALLOWED_COMMAND 42000
swe "Du kan inte använda detta kommando med denna MariaDB version"
ukr "ВикориÑтовувана команда не дозволена у цій верÑÑ–Ñ— MariaDB"
ER_SYNTAX_ERROR 42000
+ chi "您的 SQL 语法有错误;请查看相关文档"
cze "Vaše syntaxe je nějaká divná"
dan "Der er en fejl i SQL syntaksen"
- nla "Er is iets fout in de gebruikte syntax"
eng "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use"
est "Viga SQL süntaksis"
fre "Erreur de syntaxe"
@@ -3412,6 +3554,7 @@ ER_SYNTAX_ERROR 42000
ita "Errore di sintassi nella query SQL"
jpn "SQL構文エラーã§ã™ã€‚ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«å¯¾å¿œã™ã‚‹ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã‚’å‚ç…§ã—ã¦æ­£ã—ã„構文を確èªã—ã¦ãã ã•ã„。"
kor "SQL êµ¬ë¬¸ì— ì˜¤ë¥˜ê°€ 있습니다."
+ nla "Er is iets fout in de gebruikte syntax"
nor "Something is wrong in your syntax"
norwegian-ny "Something is wrong in your syntax"
pol "Something is wrong in your syntax"
@@ -3424,9 +3567,9 @@ ER_SYNTAX_ERROR 42000
swe "Du har något fel i din syntax"
ukr "У Ð²Ð°Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° у ÑинтакÑиÑÑ– SQL"
ER_DELAYED_CANT_CHANGE_LOCK
+ chi "延迟æ’入线程无法获得 %-.192s 的请求é”定"
cze "Zpožděný insert threadu nebyl schopen získat požadovaný zámek pro tabulku %-.192s"
dan "Forsinket indsættelse tråden (delayed insert thread) kunne ikke opnå lås på tabellen %-.192s"
- nla "'Delayed insert' thread kon de aangevraagde 'lock' niet krijgen voor tabel %-.192s"
eng "Delayed insert thread couldn't get requested lock for table %-.192s"
est "INSERT DELAYED lõim ei suutnud saada soovitud lukku tabelile %-.192s"
fre "La tâche 'delayed insert' n'a pas pu obtenir le verrou démandé sur la table %-.192s"
@@ -3435,6 +3578,7 @@ ER_DELAYED_CANT_CHANGE_LOCK
ita "Il thread di inserimento ritardato non riesce ad ottenere il lock per la tabella %-.192s"
jpn "'Delayed insert'スレッドãŒè¡¨ '%-.192s' ã®ãƒ­ãƒƒã‚¯ã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
kor "ì§€ì—°ëœ insert 쓰레드가 í…Œì´ë¸” %-.192sì˜ ìš”êµ¬ëœ ë½í‚¹ì„ 처리할 수 없었습니다."
+ nla "'Delayed insert' thread kon de aangevraagde 'lock' niet krijgen voor tabel %-.192s"
por "'Thread' de inserção retardada (atrasada) pois não conseguiu obter a trava solicitada para tabela '%-.192s'"
rum "Thread-ul pentru inserarea aminata nu a putut obtine lacatul (lock) pentru tabela %-.192s"
rus "Поток, обÑлуживающий отложенную вÑтавку (delayed insert), не Ñмог получить запрашиваемую блокировку на таблицу %-.192s"
@@ -3443,9 +3587,9 @@ ER_DELAYED_CANT_CHANGE_LOCK
swe "DELAYED INSERT-tråden kunde inte låsa tabell '%-.192s'"
ukr "Гілка Ð´Ð»Ñ INSERT DELAYED не може отримати Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %-.192s"
ER_TOO_MANY_DELAYED_THREADS
+ chi "使用中的延迟线程太多"
cze "Příliš mnoho zpožděných threadů"
dan "For mange slettede tråde (threads) i brug"
- nla "Te veel 'delayed' threads in gebruik"
eng "Too many delayed threads in use"
est "Liiga palju DELAYED lõimesid kasutusel"
fre "Trop de tâche 'delayed' en cours"
@@ -3455,6 +3599,7 @@ ER_TOO_MANY_DELAYED_THREADS
ita "Troppi threads ritardati in uso"
jpn "'Delayed insert'スレッドãŒå¤šã™ãŽã¾ã™ã€‚"
kor "너무 ë§Žì€ ì§€ì—° 쓰레드를 사용하고 있습니다."
+ nla "Te veel 'delayed' threads in gebruik"
por "Excesso de 'threads' retardadas (atrasadas) em uso"
rum "Prea multe threaduri aminate care sint in uz"
rus "Слишком много потоков, обÑлуживающих отложенную вÑтавку (delayed insert)"
@@ -3463,9 +3608,9 @@ ER_TOO_MANY_DELAYED_THREADS
swe "Det finns redan 'max_delayed_threads' trådar i använding"
ukr "Забагато затриманих гілок викориÑтовуєтьÑÑ"
ER_ABORTING_CONNECTION 08S01
+ chi "终止连线 %ld æ•°æ®åº“: '%-.192s' 用户: '%-.48s' (%-.64s)"
cze "Zrušeno spojení %ld do databáze: '%-.192s' uživatel: '%-.48s' (%-.64s)"
dan "Afbrudt forbindelse %ld til database: '%-.192s' bruger: '%-.48s' (%-.64s)"
- nla "Afgebroken verbinding %ld naar db: '%-.192s' gebruiker: '%-.48s' (%-.64s)"
eng "Aborted connection %ld to db: '%-.192s' user: '%-.48s' (%-.64s)"
est "Ãœhendus katkestatud %ld andmebaasile: '%-.192s' kasutajale: '%-.48s' (%-.64s)"
fre "Connection %ld avortée vers la bd: '%-.192s' utilisateur: '%-.48s' (%-.64s)"
@@ -3474,6 +3619,7 @@ ER_ABORTING_CONNECTION 08S01
ita "Interrotta la connessione %ld al db: '%-.192s' utente: '%-.48s' (%-.64s)"
jpn "接続 %ld ãŒä¸­æ–­ã•ã‚Œã¾ã—ãŸã€‚データベース: '%-.192s' ユーザー: '%-.48s' (%-.64s)"
kor "ë°ì´íƒ€ë² ì´ìŠ¤ ì ‘ì†ì„ 위한 ì—°ê²° %ldê°€ ì¤‘ë‹¨ë¨ : '%-.192s' 사용ìž: '%-.48s' (%-.64s)"
+ nla "Afgebroken verbinding %ld naar db: '%-.192s' gebruiker: '%-.48s' (%-.64s)"
nor "Aborted connection %ld to db: '%-.192s' user: '%-.48s' (%-.64s)"
norwegian-ny "Aborted connection %ld to db: '%-.192s' user: '%-.48s' (%-.64s)"
pol "Aborted connection %ld to db: '%-.192s' user: '%-.48s' (%-.64s)"
@@ -3486,9 +3632,9 @@ ER_ABORTING_CONNECTION 08S01
swe "Avbröt länken för tråd %ld till db '%-.192s', användare '%-.48s' (%-.64s)"
ukr "Перервано з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ %ld до бази данних: '%-.192s' кориÑтувача: '%-.48s' (%-.64s)"
ER_NET_PACKET_TOO_LARGE 08S01
+ chi "收到的数æ®åŒ…大于 'max_allowed_packet' 字节"
cze "Zjištěn příchozí packet delší než 'max_allowed_packet'"
dan "Modtog en datapakke som var større end 'max_allowed_packet'"
- nla "Groter pakket ontvangen dan 'max_allowed_packet'"
eng "Got a packet bigger than 'max_allowed_packet' bytes"
est "Saabus suurem pakett kui lubatud 'max_allowed_packet' muutujaga"
fre "Paquet plus grand que 'max_allowed_packet' reçu"
@@ -3498,6 +3644,7 @@ ER_NET_PACKET_TOO_LARGE 08S01
ita "Ricevuto un pacchetto piu` grande di 'max_allowed_packet'"
jpn "'max_allowed_packet'よりも大ããªãƒ‘ケットをå—ä¿¡ã—ã¾ã—ãŸã€‚"
kor "'max_allowed_packet'보다 ë”í° íŒ¨í‚·ì„ ë°›ì•˜ìŠµë‹ˆë‹¤."
+ nla "Groter pakket ontvangen dan 'max_allowed_packet'"
por "Obteve um pacote maior do que a taxa máxima de pacotes definida (max_allowed_packet)"
rum "Un packet mai mare decit 'max_allowed_packet' a fost primit"
rus "Полученный пакет больше, чем 'max_allowed_packet'"
@@ -3506,9 +3653,9 @@ ER_NET_PACKET_TOO_LARGE 08S01
swe "Kommunkationspaketet är större än 'max_allowed_packet'"
ukr "Отримано пакет більший ніж max_allowed_packet"
ER_NET_READ_ERROR_FROM_PIPE 08S01
+ chi "连接管é“读å–错误"
cze "ZjiÅ¡tÄ›na chyba pÅ™i Ätení z roury spojení"
dan "Fik læsefejl fra forbindelse (connection pipe)"
- nla "Kreeg leesfout van de verbindings pipe"
eng "Got a read error from the connection pipe"
est "Viga ühendustoru lugemisel"
fre "Erreur de lecture reçue du pipe de connexion"
@@ -3518,6 +3665,7 @@ ER_NET_READ_ERROR_FROM_PIPE 08S01
ita "Rilevato un errore di lettura dalla pipe di connessione"
jpn "接続パイプã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚"
kor "ì—°ê²° 파ì´í”„로부터 ì—러가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤."
+ nla "Kreeg leesfout van de verbindings pipe"
por "Obteve um erro de leitura no 'pipe' da conexão"
rum "Eroare la citire din cauza lui 'connection pipe'"
rus "Получена ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¾Ñ‚ потока ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (connection pipe)"
@@ -3526,9 +3674,9 @@ ER_NET_READ_ERROR_FROM_PIPE 08S01
swe "Fick läsfel från klienten vid läsning från 'PIPE'"
ukr "Отримано помилку Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· комунікаційного каналу"
ER_NET_FCNTL_ERROR 08S01
+ chi "fcntl()的错误"
cze "Zjištěna chyba fcntl()"
dan "Fik fejlmeddelelse fra fcntl()"
- nla "Kreeg fout van fcntl()"
eng "Got an error from fcntl()"
est "fcntl() tagastas vea"
fre "Erreur reçue de fcntl() "
@@ -3538,6 +3686,7 @@ ER_NET_FCNTL_ERROR 08S01
ita "Rilevato un errore da fcntl()"
jpn "fcntl()ãŒã‚¨ãƒ©ãƒ¼ã‚’è¿”ã—ã¾ã—ãŸã€‚"
kor "fcntl() 함수로부터 ì—러가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤."
+ nla "Kreeg fout van fcntl()"
por "Obteve um erro em fcntl()"
rum "Eroare obtinuta de la fcntl()"
rus "Получена ошибка от fcntl()"
@@ -3546,9 +3695,9 @@ ER_NET_FCNTL_ERROR 08S01
swe "Fick fatalt fel från 'fcntl()'"
ukr "Отримано помилкку від fcntl()"
ER_NET_PACKETS_OUT_OF_ORDER 08S01
+ chi "æ•°æ®åŒ…ä¹±åº"
cze "Příchozí packety v chybném pořadí"
dan "Modtog ikke datapakker i korrekt rækkefølge"
- nla "Pakketten in verkeerde volgorde ontvangen"
eng "Got packets out of order"
est "Paketid saabusid vales järjekorras"
fre "Paquets reçus dans le désordre"
@@ -3558,6 +3707,7 @@ ER_NET_PACKETS_OUT_OF_ORDER 08S01
ita "Ricevuti pacchetti non in ordine"
jpn "ä¸æ­£ãªé †åºã®ãƒ‘ケットをå—ä¿¡ã—ã¾ã—ãŸã€‚"
kor "순서가 맞지않는 íŒ¨í‚·ì„ ë°›ì•˜ìŠµë‹ˆë‹¤."
+ nla "Pakketten in verkeerde volgorde ontvangen"
por "Obteve pacotes fora de ordem"
rum "Packets care nu sint ordonati au fost gasiti"
rus "Пакеты получены в неверном порÑдке"
@@ -3566,9 +3716,9 @@ ER_NET_PACKETS_OUT_OF_ORDER 08S01
swe "Kommunikationspaketen kom i fel ordning"
ukr "Отримано пакети у неналежному порÑдку"
ER_NET_UNCOMPRESS_ERROR 08S01
+ chi "无法解压缩通信数æ®åŒ…"
cze "Nemohu rozkomprimovat komunikaÄní packet"
dan "Kunne ikke dekomprimere kommunikations-pakke (communication packet)"
- nla "Communicatiepakket kon niet worden gedecomprimeerd"
eng "Couldn't uncompress communication packet"
est "Viga andmepaketi lahtipakkimisel"
fre "Impossible de décompresser le paquet reçu"
@@ -3578,6 +3728,7 @@ ER_NET_UNCOMPRESS_ERROR 08S01
ita "Impossibile scompattare i pacchetti di comunicazione"
jpn "圧縮パケットã®å±•é–‹ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
kor "통신 íŒ¨í‚·ì˜ ì••ì¶•í•´ì œë¥¼ í•  수 없었습니다."
+ nla "Communicatiepakket kon niet worden gedecomprimeerd"
por "Não conseguiu descomprimir pacote de comunicação"
rum "Nu s-a putut decompresa pachetul de comunicatie (communication packet)"
rus "Ðевозможно раÑпаковать пакет, полученный через коммуникационный протокол"
@@ -3586,9 +3737,9 @@ ER_NET_UNCOMPRESS_ERROR 08S01
swe "Kunde inte packa up kommunikationspaketet"
ukr "Ðе можу декомпреÑувати комунікаційний пакет"
ER_NET_READ_ERROR 08S01
+ chi "读å–通信数æ®åŒ…出错"
cze "ZjiÅ¡tÄ›na chyba pÅ™i Ätení komunikaÄního packetu"
dan "Fik fejlmeddelelse ved læsning af kommunikations-pakker (communication packets)"
- nla "Fout bij het lezen van communicatiepakketten"
eng "Got an error reading communication packets"
est "Viga andmepaketi lugemisel"
fre "Erreur de lecture des paquets reçus"
@@ -3598,6 +3749,7 @@ ER_NET_READ_ERROR 08S01
ita "Rilevato un errore ricevendo i pacchetti di comunicazione"
jpn "パケットã®å—ä¿¡ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
kor "통신 íŒ¨í‚·ì„ ì½ëŠ” 중 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤."
+ nla "Fout bij het lezen van communicatiepakketten"
por "Obteve um erro na leitura de pacotes de comunicação"
rum "Eroare obtinuta citind pachetele de comunicatie (communication packets)"
rus "Получена ошибка в процеÑÑе Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð°ÐºÐµÑ‚Ð° через коммуникационный протокол "
@@ -3606,9 +3758,9 @@ ER_NET_READ_ERROR 08S01
swe "Fick ett fel vid läsning från klienten"
ukr "Отримано помилку Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼ÑƒÐ½Ñ–ÐºÐ°Ñ†Ñ–Ð¹Ð½Ð¸Ñ… пакетів"
ER_NET_READ_INTERRUPTED 08S01
+ chi "读å–通信包超时"
cze "ZjiÅ¡tÄ›n timeout pÅ™i Ätení komunikaÄního packetu"
dan "Timeout-fejl ved læsning af kommunukations-pakker (communication packets)"
- nla "Timeout bij het lezen van communicatiepakketten"
eng "Got timeout reading communication packets"
est "Kontrollaja ületamine andmepakettide lugemisel"
fre "Timeout en lecture des paquets reçus"
@@ -3618,6 +3770,7 @@ ER_NET_READ_INTERRUPTED 08S01
ita "Rilevato un timeout ricevendo i pacchetti di comunicazione"
jpn "パケットã®å—ä¿¡ã§ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
kor "통신 íŒ¨í‚·ì„ ì½ëŠ” 중 timeoutì´ ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤."
+ nla "Timeout bij het lezen van communicatiepakketten"
por "Obteve expiração de tempo (timeout) na leitura de pacotes de comunicação"
rum "Timeout obtinut citind pachetele de comunicatie (communication packets)"
rus "Получен таймаут Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¿Ð°ÐºÐµÑ‚Ð° через коммуникационный протокол "
@@ -3626,9 +3779,9 @@ ER_NET_READ_INTERRUPTED 08S01
swe "Fick 'timeout' vid läsning från klienten"
ukr "Отримано затримку Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼ÑƒÐ½Ñ–ÐºÐ°Ñ†Ñ–Ð¹Ð½Ð¸Ñ… пакетів"
ER_NET_ERROR_ON_WRITE 08S01
+ chi "写入通信包时出错"
cze "ZjiÅ¡tÄ›na chyba pÅ™i zápisu komunikaÄního packetu"
dan "Fik fejlmeddelelse ved skrivning af kommunukations-pakker (communication packets)"
- nla "Fout bij het schrijven van communicatiepakketten"
eng "Got an error writing communication packets"
est "Viga andmepaketi kirjutamisel"
fre "Erreur d'écriture des paquets envoyés"
@@ -3638,6 +3791,7 @@ ER_NET_ERROR_ON_WRITE 08S01
ita "Rilevato un errore inviando i pacchetti di comunicazione"
jpn "パケットã®é€ä¿¡ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
kor "통신 íŒ¨í‚·ì„ ê¸°ë¡í•˜ëŠ” 중 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤."
+ nla "Fout bij het schrijven van communicatiepakketten"
por "Obteve um erro na escrita de pacotes de comunicação"
rum "Eroare in scrierea pachetelor de comunicatie (communication packets)"
rus "Получена ошибка при передаче пакета через коммуникационный протокол "
@@ -3646,9 +3800,9 @@ ER_NET_ERROR_ON_WRITE 08S01
swe "Fick ett fel vid skrivning till klienten"
ukr "Отримано помилку запиÑу комунікаційних пакетів"
ER_NET_WRITE_INTERRUPTED 08S01
+ chi "写入通信包超时"
cze "ZjiÅ¡tÄ›n timeout pÅ™i zápisu komunikaÄního packetu"
dan "Timeout-fejl ved skrivning af kommunukations-pakker (communication packets)"
- nla "Timeout bij het schrijven van communicatiepakketten"
eng "Got timeout writing communication packets"
est "Kontrollaja ületamine andmepakettide kirjutamisel"
fre "Timeout d'écriture des paquets envoyés"
@@ -3658,6 +3812,7 @@ ER_NET_WRITE_INTERRUPTED 08S01
ita "Rilevato un timeout inviando i pacchetti di comunicazione"
jpn "パケットã®é€ä¿¡ã§ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
kor "통신 íŒ¨íŒƒì„ ê¸°ë¡í•˜ëŠ” 중 timeoutì´ ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤."
+ nla "Timeout bij het schrijven van communicatiepakketten"
por "Obteve expiração de tempo ('timeout') na escrita de pacotes de comunicação"
rum "Timeout obtinut scriind pachetele de comunicatie (communication packets)"
rus "Получен таймаут в процеÑÑе передачи пакета через коммуникационный протокол "
@@ -3666,18 +3821,19 @@ ER_NET_WRITE_INTERRUPTED 08S01
swe "Fick 'timeout' vid skrivning till klienten"
ukr "Отримано затримку запиÑу комунікаційних пакетів"
ER_TOO_LONG_STRING 42000
+ chi "结果字符串长于'max_allowed_packet'字节"
cze "Výsledný řetězec je delší než 'max_allowed_packet'"
dan "Strengen med resultater er større end 'max_allowed_packet'"
- nla "Resultaat string is langer dan 'max_allowed_packet'"
eng "Result string is longer than 'max_allowed_packet' bytes"
est "Tulemus on pikem kui lubatud 'max_allowed_packet' muutujaga"
fre "La chaîne résultat est plus grande que 'max_allowed_packet'"
ger "Ergebnis-String ist länger als 'max_allowed_packet' Bytes"
- kor "ê²°ê³¼ 문ìžì—´ì´ ì„¤ì •ëœ max_allowed_packet 값보다 í½ë‹ˆë‹¤."
hindi "रिजलà¥à¤Ÿ सà¥à¤Ÿà¥à¤°à¤¿à¤‚ग 'max_allowed_packet' से लंबा है"
hun "Ez eredmeny sztring nagyobb, mint a lehetseges maximum: 'max_allowed_packet'"
ita "La stringa di risposta e` piu` lunga di 'max_allowed_packet'"
jpn "çµæžœã®æ–‡å­—列㌠'max_allowed_packet' よりも大ãã„ã§ã™ã€‚"
+ kor "ê²°ê³¼ 문ìžì—´ì´ ì„¤ì •ëœ max_allowed_packet 값보다 í½ë‹ˆë‹¤."
+ nla "Resultaat string is langer dan 'max_allowed_packet'"
por "'String' resultante é mais longa do que 'max_allowed_packet'"
rum "Sirul rezultat este mai lung decit 'max_allowed_packet'"
rus "Ð ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ñтрока больше, чем 'max_allowed_packet'"
@@ -3686,17 +3842,18 @@ ER_TOO_LONG_STRING 42000
swe "Resultatsträngen är längre än max_allowed_packet"
ukr "Строка результату довша ніж max_allowed_packet"
ER_TABLE_CANT_HANDLE_BLOB 42000
+ chi "存储引擎%sä¸æ”¯æŒblob / text列"
cze "Typ použité tabulky (%s) nepodporuje BLOB/TEXT sloupce"
dan "Denne tabeltype (%s) understøtter ikke brug af BLOB og TEXT kolonner"
- nla "Het gebruikte tabel type (%s) ondersteunt geen BLOB/TEXT kolommen"
eng "Storage engine %s doesn't support BLOB/TEXT columns"
est "Valitud tabelitüüp (%s) ei toeta BLOB/TEXT tüüpi välju"
fre "Ce type de table (%s) ne supporte pas les colonnes BLOB/TEXT"
ger "Der verwendete Tabellentyp (%s) unterstützt keine BLOB- und TEXT-Felder"
hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s BLOB/TEXT कॉलमà¥à¤¸ को सपोरà¥à¤Ÿ नहीं करता"
hun "A hasznalt tabla tipus (%s) nem tamogatja a BLOB/TEXT mezoket"
- kor "스토리지 엔진 (%s)는 BLOB/TEXT ì»¬ëŸ¼ì„ ì§€ì›í•˜ì§€ 않습니다."
ita "Il tipo di tabella usata (%s) non supporta colonne di tipo BLOB/TEXT"
+ kor "스토리지 엔진 (%s)는 BLOB/TEXT ì»¬ëŸ¼ì„ ì§€ì›í•˜ì§€ 않습니다."
+ nla "Het gebruikte tabel type (%s) ondersteunt geen BLOB/TEXT kolommen"
por "Tipo de tabela usado (%s) não permite colunas BLOB/TEXT"
rum "Tipul de tabela folosit (%s) nu suporta coloane de tip BLOB/TEXT"
rus "%s таблицы не поддерживают типы BLOB/TEXT"
@@ -3705,17 +3862,18 @@ ER_TABLE_CANT_HANDLE_BLOB 42000
swe "Den använda tabelltypen (%s) kan inte hantera BLOB/TEXT-kolumner"
ukr "%s таблиці не підтримують BLOB/TEXT Ñтовбці"
ER_TABLE_CANT_HANDLE_AUTO_INCREMENT 42000
+ chi "存储引擎%sä¸æ”¯æŒauto_increment列"
cze "Typ použité tabulky (%s) nepodporuje AUTO_INCREMENT sloupce"
dan "Denne tabeltype understøtter (%s) ikke brug af AUTO_INCREMENT kolonner"
- nla "Het gebruikte tabel type (%s) ondersteunt geen AUTO_INCREMENT kolommen"
eng "Storage engine %s doesn't support AUTO_INCREMENT columns"
est "Valitud tabelitüüp (%s) ei toeta AUTO_INCREMENT tüüpi välju"
fre "Ce type de table (%s) ne supporte pas les colonnes AUTO_INCREMENT"
ger "Der verwendete Tabellentyp (%s) unterstützt keine AUTO_INCREMENT-Felder"
hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s AUTO_INCREMENT कॉलमà¥à¤¸ को सपोरà¥à¤Ÿ नहीं करता"
- kor "스토리지 엔진 (%s)는 AUTO_INCREMENT를 지ì›í•˜ì§€ 않습니다."
hun "A hasznalt tabla tipus (%s) nem tamogatja az AUTO_INCREMENT tipusu mezoket"
ita "Il tipo di tabella usata (%s) non supporta colonne di tipo AUTO_INCREMENT"
+ kor "스토리지 엔진 (%s)는 AUTO_INCREMENT를 지ì›í•˜ì§€ 않습니다."
+ nla "Het gebruikte tabel type (%s) ondersteunt geen AUTO_INCREMENT kolommen"
por "Tipo de tabela usado (%s) não permite colunas AUTO_INCREMENT"
rum "Tipul de tabela folosit (%s) nu suporta coloane de tip AUTO_INCREMENT"
rus "%s таблицы не поддерживают автоинкрементные Ñтолбцы"
@@ -3724,9 +3882,9 @@ ER_TABLE_CANT_HANDLE_AUTO_INCREMENT 42000
swe "Den använda tabelltypen (%s) kan inte hantera AUTO_INCREMENT-kolumner"
ukr "%s таблиці не підтримують AUTO_INCREMENT Ñтовбці"
ER_DELAYED_INSERT_TABLE_LOCKED
+ chi "INSERT DELAYED ä¸èƒ½ç”¨åœ¨è¡¨ '%-.192s' 因为它被LOCK TABLES é”定"
cze "INSERT DELAYED není možno s tabulkou '%-.192s' použít, protože je zamÄená pomocí LOCK TABLES"
dan "INSERT DELAYED kan ikke bruges med tabellen '%-.192s', fordi tabellen er låst med LOCK TABLES"
- nla "INSERT DELAYED kan niet worden gebruikt bij table '%-.192s', vanwege een 'lock met LOCK TABLES"
eng "INSERT DELAYED can't be used with table '%-.192s' because it is locked with LOCK TABLES"
est "INSERT DELAYED ei saa kasutada tabeli '%-.192s' peal, kuna see on lukustatud LOCK TABLES käsuga"
fre "INSERT DELAYED ne peut être utilisé avec la table '%-.192s', car elle est verrouée avec LOCK TABLES"
@@ -3736,6 +3894,7 @@ ER_DELAYED_INSERT_TABLE_LOCKED
ita "L'inserimento ritardato (INSERT DELAYED) non puo` essere usato con la tabella '%-.192s', perche` soggetta a lock da 'LOCK TABLES'"
jpn "表 '%-.192s' ã¯LOCK TABLESã§ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã‚‹ãŸã‚ã€INSERT DELAYEDを使用ã§ãã¾ã›ã‚“。"
kor "INSERT DELAYED can't be used with table '%-.192s', because it is locked with LOCK TABLES"
+ nla "INSERT DELAYED kan niet worden gebruikt bij table '%-.192s', vanwege een 'lock met LOCK TABLES"
nor "INSERT DELAYED can't be used with table '%-.192s', because it is locked with LOCK TABLES"
norwegian-ny "INSERT DELAYED can't be used with table '%-.192s', because it is locked with LOCK TABLES"
pol "INSERT DELAYED can't be used with table '%-.192s', because it is locked with LOCK TABLES"
@@ -3748,9 +3907,9 @@ ER_DELAYED_INSERT_TABLE_LOCKED
swe "INSERT DELAYED kan inte användas med tabell '%-.192s', emedan den är låst med LOCK TABLES"
ukr "INSERT DELAYED не може бути викориÑтано з таблицею '%-.192s', тому що Ñ—Ñ— заблоковано з LOCK TABLES"
ER_WRONG_COLUMN_NAME 42000
+ chi "错误列å '%-.100s'"
cze "Nesprávné jméno sloupce '%-.100s'"
dan "Forkert kolonnenavn '%-.100s'"
- nla "Incorrecte kolom naam '%-.100s'"
eng "Incorrect column name '%-.100s'"
est "Vigane tulba nimi '%-.100s'"
fre "Nom de colonne '%-.100s' incorrect"
@@ -3759,6 +3918,7 @@ ER_WRONG_COLUMN_NAME 42000
hun "Ervenytelen mezonev: '%-.100s'"
ita "Nome colonna '%-.100s' non corretto"
jpn "列å '%-.100s' ã¯ä¸æ­£ã§ã™ã€‚"
+ nla "Incorrecte kolom naam '%-.100s'"
por "Nome de coluna '%-.100s' incorreto"
rum "Nume increct de coloana '%-.100s'"
rus "Ðеверное Ð¸Ð¼Ñ Ñтолбца '%-.100s'"
@@ -3767,6 +3927,7 @@ ER_WRONG_COLUMN_NAME 42000
swe "Felaktigt kolumnnamn '%-.100s'"
ukr "Ðевірне ім'Ñ ÑÑ‚Ð¾Ð²Ð±Ñ†Ñ '%-.100s'"
ER_WRONG_KEY_COLUMN 42000
+ chi "存储引擎 %s ä¸èƒ½ç»™ %`s 列建索引"
eng "The storage engine %s can't index column %`s"
ger "Die Speicher-Engine %s kann die Spalte %`s nicht indizieren"
hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s, कॉलम %`s को इंडेकà¥à¤¸ नहीं कर सकता"
@@ -3774,9 +3935,9 @@ ER_WRONG_KEY_COLUMN 42000
spa "El motor de almacenaje %s no puede indizar la columna %`s"
ukr "Вказівник таблиц %s не може індекÑувати Ñтовбець %`s"
ER_WRONG_MRG_TABLE
+ chi "无法打开定义ä¸åŒæˆ–éž MyISAM 类型或ä¸å­˜åœ¨çš„表"
cze "Všechny tabulky v MERGE tabulce nejsou definovány stejně"
dan "Tabellerne i MERGE er ikke defineret ens"
- nla "Niet alle tabellen in de MERGE tabel hebben identieke gedefinities"
eng "Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist"
est "Kõik tabelid MERGE tabeli määratluses ei ole identsed"
fre "Toutes les tables de la table de type MERGE n'ont pas la même définition"
@@ -3785,6 +3946,7 @@ ER_WRONG_MRG_TABLE
ita "Non tutte le tabelle nella tabella di MERGE sono definite in maniera identica"
jpn "MERGE表ã®æ§‹æˆè¡¨ãŒã‚ªãƒ¼ãƒ—ンã§ãã¾ã›ã‚“。列定義ãŒç•°ãªã‚‹ã‹ã€MyISAM表ã§ã¯ãªã„ã‹ã€å­˜åœ¨ã—ã¾ã›ã‚“。"
kor "All tables in the MERGE table are not defined identically"
+ nla "Niet alle tabellen in de MERGE tabel hebben identieke gedefinities"
nor "All tables in the MERGE table are not defined identically"
norwegian-ny "All tables in the MERGE table are not defined identically"
pol "All tables in the MERGE table are not defined identically"
@@ -3797,16 +3959,17 @@ ER_WRONG_MRG_TABLE
swe "Tabellerna i MERGE-tabellen är inte identiskt definierade"
ukr "Таблиці у MERGE TABLE мають різну Ñтруктуру"
ER_DUP_UNIQUE 23000
+ chi "因为表'%-.192s' 唯一约æŸï¼Œæ— æ³•å†™å…¥"
cze "Kvůli unique constraintu nemozu zapsat do tabulky '%-.192s'"
dan "Kan ikke skrive til tabellen '%-.192s' fordi det vil bryde CONSTRAINT regler"
- nla "Kan niet opslaan naar table '%-.192s' vanwege 'unique' beperking"
eng "Can't write, because of unique constraint, to table '%-.192s'"
est "Ei suuda kirjutada tabelisse '%-.192s', kuna see rikub ühesuse kitsendust"
fre "Écriture impossible à cause d'un index UNIQUE sur la table '%-.192s'"
ger "Schreiben in Tabelle '%-.192s' nicht möglich wegen einer Eindeutigkeitsbeschränkung (unique constraint)"
hun "A '%-.192s' nem irhato, az egyedi mezok miatt"
- jpn "一æ„性制約é•åã®ãŸã‚ã€è¡¨ '%-.192s' ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“。"
ita "Impossibile scrivere nella tabella '%-.192s' per limitazione di unicita`"
+ jpn "一æ„性制約é•åã®ãŸã‚ã€è¡¨ '%-.192s' ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“。"
+ nla "Kan niet opslaan naar table '%-.192s' vanwege 'unique' beperking"
por "Não pode gravar, devido à restrição UNIQUE, na tabela '%-.192s'"
rum "Nu pot scrie pe hard-drive, din cauza constraintului unic (unique constraint) pentru tabela '%-.192s'"
rus "Ðевозможно запиÑать в таблицу '%-.192s' из-за ограничений уникального ключа"
@@ -3815,9 +3978,9 @@ ER_DUP_UNIQUE 23000
swe "Kan inte skriva till tabell '%-.192s'; UNIQUE-test"
ukr "Ðе можу запиÑати до таблиці '%-.192s', з причини вимог унікальноÑÑ‚Ñ–"
ER_BLOB_KEY_WITHOUT_LENGTH 42000
+ chi "BLOB/TEXT 列 '%-.192s' 在没有索引长度的索引规范中使用"
cze "BLOB sloupec '%-.192s' je použit ve specifikaci klíÄe bez délky"
dan "BLOB kolonnen '%-.192s' brugt i nøglespecifikation uden nøglelængde"
- nla "BLOB kolom '%-.192s' gebruikt in zoeksleutel specificatie zonder zoeksleutel lengte"
eng "BLOB/TEXT column '%-.192s' used in key specification without a key length"
est "BLOB-tüüpi tulp '%-.192s' on kasutusel võtmes ilma pikkust määratlemata"
fre "La colonne '%-.192s' de type BLOB est utilisée dans une définition d'index sans longueur d'index"
@@ -3827,6 +3990,7 @@ ER_BLOB_KEY_WITHOUT_LENGTH 42000
ita "La colonna '%-.192s' di tipo BLOB e` usata in una chiave senza specificarne la lunghezza"
jpn "BLOB列 '%-.192s' をキーã«ä½¿ç”¨ã™ã‚‹ã«ã¯é•·ã•æŒ‡å®šãŒå¿…è¦ã§ã™ã€‚"
kor "BLOB column '%-.192s' used in key specification without a key length"
+ nla "BLOB kolom '%-.192s' gebruikt in zoeksleutel specificatie zonder zoeksleutel lengte"
nor "BLOB column '%-.192s' used in key specification without a key length"
norwegian-ny "BLOB column '%-.192s' used in key specification without a key length"
pol "BLOB column '%-.192s' used in key specification without a key length"
@@ -3839,9 +4003,9 @@ ER_BLOB_KEY_WITHOUT_LENGTH 42000
swe "Du har inte angett någon nyckellängd för BLOB '%-.192s'"
ukr "Стовбець BLOB '%-.192s' викориÑтано у визначенні ключа без Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ ключа"
ER_PRIMARY_CANT_HAVE_NULL 42000
+ chi "PRIMARY KEY 的所有部分都ä¸èƒ½ä¸ºNULL;如果您需è¦åœ¨é”®ä¸­ä½¿ç”¨ NULL,请改用 UNIQUE"
cze "VÅ¡echny Äásti primárního klíÄe musejí být NOT NULL; pokud potÅ™ebujete NULL, použijte UNIQUE"
dan "Alle dele af en PRIMARY KEY skal være NOT NULL; Hvis du skal bruge NULL i nøglen, brug UNIQUE istedet"
- nla "Alle delen van een PRIMARY KEY moeten NOT NULL zijn; Indien u NULL in een zoeksleutel nodig heeft kunt u UNIQUE gebruiken"
eng "All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead"
est "Kõik PRIMARY KEY peavad olema määratletud NOT NULL piiranguga; vajadusel kasuta UNIQUE tüüpi võtit"
fre "Toutes les parties d'un index PRIMARY KEY doivent être NOT NULL; Si vous avez besoin d'un NULL dans l'index, utilisez un index UNIQUE"
@@ -3850,6 +4014,7 @@ ER_PRIMARY_CANT_HAVE_NULL 42000
hun "Az elsodleges kulcs teljes egeszeben csak NOT NULL tipusu lehet; Ha NULL mezot szeretne a kulcskent, hasznalja inkabb a UNIQUE-ot"
ita "Tutte le parti di una chiave primaria devono essere dichiarate NOT NULL; se necessitano valori NULL nelle chiavi utilizzare UNIQUE"
jpn "PRIMARY KEYã®åˆ—ã¯å…¨ã¦NOT NULLã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“。UNIQUE索引ã§ã‚ã‚Œã°NULLã‚’å«ã‚€ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚"
+ nla "Alle delen van een PRIMARY KEY moeten NOT NULL zijn; Indien u NULL in een zoeksleutel nodig heeft kunt u UNIQUE gebruiken"
por "Todas as partes de uma chave primária devem ser não-nulas. Se você precisou usar um valor nulo (NULL) em uma chave, use a cláusula UNIQUE em seu lugar"
rum "Toate partile unei chei primare (PRIMARY KEY) trebuie sa fie NOT NULL; Daca aveti nevoie de NULL in vreo cheie, folositi UNIQUE in schimb"
rus "Ð’Ñе чаÑти первичного ключа (PRIMARY KEY) должны быть определены как NOT NULL; ЕÑли вам нужна поддержка величин NULL в ключе, воÑпользуйтеÑÑŒ индекÑом UNIQUE"
@@ -3858,9 +4023,9 @@ ER_PRIMARY_CANT_HAVE_NULL 42000
swe "Alla delar av en PRIMARY KEY måste vara NOT NULL; Om du vill ha en nyckel med NULL, använd UNIQUE istället"
ukr "УÑÑ– чаÑтини PRIMARY KEY повинні бути NOT NULL; Якщо ви потребуєте NULL у ключі, ÑкориÑтайтеÑÑ UNIQUE"
ER_TOO_MANY_ROWS 42000
+ chi "结果多于一行"
cze "Výsledek obsahuje více než jeden řádek"
dan "Resultatet bestod af mere end een række"
- nla "Resultaat bevatte meer dan een rij"
eng "Result consisted of more than one row"
est "Tulemis oli rohkem kui üks kirje"
fre "Le résultat contient plus d'un enregistrement"
@@ -3869,6 +4034,7 @@ ER_TOO_MANY_ROWS 42000
hun "Az eredmeny tobb, mint egy sort tartalmaz"
ita "Il risultato consiste di piu` di una riga"
jpn "çµæžœãŒ2行以上ã§ã™ã€‚"
+ nla "Resultaat bevatte meer dan een rij"
por "O resultado consistiu em mais do que uma linha"
rum "Resultatul constista din mai multe linii"
rus "Ð’ результате возвращена более чем одна Ñтрока"
@@ -3877,9 +4043,9 @@ ER_TOO_MANY_ROWS 42000
swe "Resultet bestod av mera än en rad"
ukr "Результат знаходитьÑÑ Ñƒ більше ніж одній Ñтроці"
ER_REQUIRES_PRIMARY_KEY 42000
+ chi "此表类型需è¦ä¸»ç´¢å¼•"
cze "Tento typ tabulky vyžaduje primární klíÄ"
dan "Denne tabeltype kræver en primærnøgle"
- nla "Dit tabel type heeft een primaire zoeksleutel nodig"
eng "This table type requires a primary key"
est "Antud tabelitüüp nõuab primaarset võtit"
fre "Ce type de table nécessite une clé primaire (PRIMARY KEY)"
@@ -3888,6 +4054,7 @@ ER_REQUIRES_PRIMARY_KEY 42000
hun "Az adott tablatipushoz elsodleges kulcs hasznalata kotelezo"
ita "Questo tipo di tabella richiede una chiave primaria"
jpn "使用ã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚¨ãƒ³ã‚¸ãƒ³ã§ã¯ã€PRIMARY KEYãŒå¿…è¦ã§ã™ã€‚"
+ nla "Dit tabel type heeft een primaire zoeksleutel nodig"
por "Este tipo de tabela requer uma chave primária"
rum "Aceast tip de tabela are nevoie de o cheie primara"
rus "Этот тип таблицы требует Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€Ð²Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ключа"
@@ -3896,9 +4063,9 @@ ER_REQUIRES_PRIMARY_KEY 42000
swe "Denna tabelltyp kräver en PRIMARY KEY"
ukr "Цей тип таблиці потребує первинного ключа"
ER_NO_RAID_COMPILED
+ chi "这个版本的 MariaDB 编译时ä¸æ”¯æŒ RAID"
cze "Tato verze MariaDB není zkompilována s podporou RAID"
dan "Denne udgave af MariaDB er ikke oversat med understøttelse af RAID"
- nla "Deze versie van MariaDB is niet gecompileerd met RAID ondersteuning"
eng "This version of MariaDB is not compiled with RAID support"
est "Antud MariaDB versioon on kompileeritud ilma RAID toeta"
fre "Cette version de MariaDB n'est pas compilée avec le support RAID"
@@ -3907,6 +4074,7 @@ ER_NO_RAID_COMPILED
hun "Ezen leforditott MariaDB verzio nem tartalmaz RAID support-ot"
ita "Questa versione di MariaDB non e` compilata con il supporto RAID"
jpn "ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®MariaDBã¯RAIDサãƒãƒ¼ãƒˆã‚’å«ã‚ã¦ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã¾ã›ã‚“。"
+ nla "Deze versie van MariaDB is niet gecompileerd met RAID ondersteuning"
por "Esta versão do MariaDB não foi compilada com suporte a RAID"
rum "Aceasta versiune de MariaDB, nu a fost compilata cu suport pentru RAID"
rus "Эта верÑÐ¸Ñ MariaDB Ñкомпилирована без поддержки RAID"
@@ -3915,9 +4083,9 @@ ER_NO_RAID_COMPILED
swe "Denna version av MariaDB är inte kompilerad med RAID"
ukr "Ð¦Ñ Ð²ÐµÑ€ÑÑ–Ñ MariaDB не зкомпільована з підтримкою RAID"
ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE
+ chi "您正在使用安全更新模å¼ï¼ŒåŒæ—¶æ‚¨å°è¯•æ›´æ–°æ—¶æ²¡æœ‰ä½¿ç”¨å«æœ‰ KEY 列的 WHERE 语å¥"
cze "Update tabulky bez WHERE s klíÄem není v módu bezpeÄných update dovoleno"
dan "Du bruger sikker opdaterings modus ('safe update mode') og du forsøgte at opdatere en tabel uden en WHERE klausul, der gør brug af et KEY felt"
- nla "U gebruikt 'safe update mode' en u probeerde een tabel te updaten zonder een WHERE met een KEY kolom"
eng "You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column"
est "Katse muuta tabelit turvalises rezhiimis ilma WHERE klauslita"
fre "Vous êtes en mode 'safe update' et vous essayez de faire un UPDATE sans clause WHERE utilisant un index"
@@ -3925,6 +4093,7 @@ ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE
hun "On a biztonsagos update modot hasznalja, es WHERE that uses a KEY column"
ita "In modalita` 'safe update' si e` cercato di aggiornare una tabella senza clausola WHERE su una chiave"
jpn "'safe update mode'ã§ã€ç´¢å¼•ã‚’利用ã™ã‚‹WHEREå¥ã®ç„¡ã„更新処ç†ã‚’実行ã—よã†ã¨ã—ã¾ã—ãŸã€‚"
+ nla "U gebruikt 'safe update mode' en u probeerde een tabel te updaten zonder een WHERE met een KEY kolom"
por "Você está usando modo de atualização seguro e tentou atualizar uma tabela sem uma cláusula WHERE que use uma coluna chave"
rus "Ð’Ñ‹ работаете в режиме безопаÑных обновлений (safe update mode) и попробовали изменить таблицу без иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ÐµÐ²Ð¾Ð³Ð¾ Ñтолбца в чаÑти WHERE"
serbian "Vi koristite safe update mod servera, a probali ste da promenite podatke bez 'WHERE' komande koja koristi kolonu kljuÄa"
@@ -3932,9 +4101,9 @@ ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE
swe "Du använder 'säker uppdateringsmod' och försökte uppdatera en tabell utan en WHERE-sats som använder sig av en nyckel"
ukr "Ви у режимі безпечного Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‚Ð° намагаєтеÑÑŒ оновити таблицю без оператора WHERE, що викориÑтовує KEY Ñтовбець"
ER_KEY_DOES_NOT_EXISTS 42000 S1009
+ chi "索引 '%-.192s' 在表 '%-.192s' 里ä¸å­˜åœ¨"
cze "KlÃ­Ä '%-.192s' v tabulce '%-.192s' neexistuje"
dan "Nøglen '%-.192s' eksisterer ikke i tabellen '%-.192s'"
- nla "Zoeksleutel '%-.192s' bestaat niet in tabel '%-.192s'"
eng "Key '%-.192s' doesn't exist in table '%-.192s'"
est "Võti '%-.192s' ei eksisteeri tabelis '%-.192s'"
fre "L'index '%-.192s' n'existe pas sur la table '%-.192s'"
@@ -3943,6 +4112,7 @@ ER_KEY_DOES_NOT_EXISTS 42000 S1009
hun "A '%-.192s' kulcs nem letezik a '%-.192s' tablaban"
ita "La chiave '%-.192s' non esiste nella tabella '%-.192s'"
jpn "索引 '%-.192s' ã¯è¡¨ '%-.192s' ã«ã¯å­˜åœ¨ã—ã¾ã›ã‚“。"
+ nla "Zoeksleutel '%-.192s' bestaat niet in tabel '%-.192s'"
por "Chave '%-.192s' não existe na tabela '%-.192s'"
rus "Ключ '%-.192s' не ÑущеÑтвует в таблице '%-.192s'"
serbian "KljuÄ '%-.192s' ne postoji u tabeli '%-.192s'"
@@ -3950,9 +4120,9 @@ ER_KEY_DOES_NOT_EXISTS 42000 S1009
swe "Nyckel '%-.192s' finns inte in tabell '%-.192s'"
ukr "Ключ '%-.192s' не Ñ–Ñнує в таблиці '%-.192s'"
ER_CHECK_NO_SUCH_TABLE 42000
+ chi "无法打开表"
cze "Nemohu otevřít tabulku"
dan "Kan ikke åbne tabellen"
- nla "Kan tabel niet openen"
eng "Can't open table"
est "Ei suuda avada tabelit"
fre "Impossible d'ouvrir la table"
@@ -3961,6 +4131,7 @@ ER_CHECK_NO_SUCH_TABLE 42000
hun "Nem tudom megnyitni a tablat"
ita "Impossibile aprire la tabella"
jpn "表をオープンã§ãã¾ã›ã‚“。"
+ nla "Kan tabel niet openen"
por "Não pode abrir a tabela"
rus "Ðевозможно открыть таблицу"
serbian "Ne mogu da otvorim tabelu"
@@ -3968,9 +4139,9 @@ ER_CHECK_NO_SUCH_TABLE 42000
swe "Kan inte öppna tabellen"
ukr "Ðе можу відкрити таблицю"
ER_CHECK_NOT_IMPLEMENTED 42000
+ chi "该表的存储引擎ä¸æ”¯æŒ%s"
cze "Handler tabulky nepodporuje %s"
dan "Denne tabeltype understøtter ikke %s"
- nla "De 'handler' voor de tabel ondersteund geen %s"
eng "The storage engine for the table doesn't support %s"
est "Antud tabelitüüp ei toeta %s käske"
fre "Ce type de table ne supporte pas les %s"
@@ -3981,6 +4152,7 @@ ER_CHECK_NOT_IMPLEMENTED 42000
ita "Il gestore per la tabella non supporta il %s"
jpn "ã“ã®è¡¨ã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚¨ãƒ³ã‚¸ãƒ³ã¯ '%s' を利用ã§ãã¾ã›ã‚“。"
kor "The handler for the table doesn't support %s"
+ nla "De 'handler' voor de tabel ondersteund geen %s"
nor "The handler for the table doesn't support %s"
norwegian-ny "The handler for the table doesn't support %s"
pol "The handler for the table doesn't support %s"
@@ -3993,9 +4165,9 @@ ER_CHECK_NOT_IMPLEMENTED 42000
swe "Tabellhanteraren för denna tabell kan inte göra %s"
ukr "Вказівник таблиці не підтримуе %s"
ER_CANT_DO_THIS_DURING_AN_TRANSACTION 25000
+ chi "ä¸å…许在事务中执行此命令"
cze "Provedení tohoto příkazu není v transakci dovoleno"
dan "Du må ikke bruge denne kommando i en transaktion"
- nla "Het is u niet toegestaan dit commando uit te voeren binnen een transactie"
eng "You are not allowed to execute this command in a transaction"
est "Seda käsku ei saa kasutada transaktsiooni sees"
fre "Vous n'êtes pas autorisé à exécute cette commande dans une transaction"
@@ -4003,6 +4175,7 @@ ER_CANT_DO_THIS_DURING_AN_TRANSACTION 25000
hun "Az On szamara nem engedelyezett a parancs vegrehajtasa a tranzakcioban"
ita "Non puoi eseguire questo comando in una transazione"
jpn "ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å†…ã§å®Ÿè¡Œã§ãã¾ã›ã‚“。"
+ nla "Het is u niet toegestaan dit commando uit te voeren binnen een transactie"
por "Não lhe é permitido executar este comando em uma transação"
rus "Вам не разрешено выполнÑÑ‚ÑŒ Ñту команду в транзакции"
serbian "Nije Vam dozvoljeno da izvršite ovu komandu u transakciji"
@@ -4010,9 +4183,9 @@ ER_CANT_DO_THIS_DURING_AN_TRANSACTION 25000
swe "Du får inte utföra detta kommando i en transaktion"
ukr "Вам не дозволено виконувати цю команду в транзакції"
ER_ERROR_DURING_COMMIT
+ chi "COMMITæ—¶å‘生错误 %M "
cze "Chyba %M při COMMIT"
dan "Modtog fejl %M mens kommandoen COMMIT blev udført"
- nla "Kreeg fout %M tijdens COMMIT"
eng "Got error %M during COMMIT"
est "Viga %M käsu COMMIT täitmisel"
fre "Erreur %M lors du COMMIT"
@@ -4021,6 +4194,7 @@ ER_ERROR_DURING_COMMIT
hun "%M hiba a COMMIT vegrehajtasa soran"
ita "Rilevato l'errore %M durante il COMMIT"
jpn "COMMIT中ã«ã‚¨ãƒ©ãƒ¼ %M ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
+ nla "Kreeg fout %M tijdens COMMIT"
por "Obteve erro %M durante COMMIT"
rus "Получена ошибка %M в процеÑÑе COMMIT"
serbian "Greška %M za vreme izvršavanja komande 'COMMIT'"
@@ -4028,9 +4202,9 @@ ER_ERROR_DURING_COMMIT
swe "Fick fel %M vid COMMIT"
ukr "Отримано помилку %M під Ñ‡Ð°Ñ COMMIT"
ER_ERROR_DURING_ROLLBACK
+ chi "回滚时出错%M"
cze "Chyba %M při ROLLBACK"
dan "Modtog fejl %M mens kommandoen ROLLBACK blev udført"
- nla "Kreeg fout %M tijdens ROLLBACK"
eng "Got error %M during ROLLBACK"
est "Viga %M käsu ROLLBACK täitmisel"
fre "Erreur %M lors du ROLLBACK"
@@ -4039,6 +4213,7 @@ ER_ERROR_DURING_ROLLBACK
hun "%M hiba a ROLLBACK vegrehajtasa soran"
ita "Rilevato l'errore %M durante il ROLLBACK"
jpn "ROLLBACK中ã«ã‚¨ãƒ©ãƒ¼ %M ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
+ nla "Kreeg fout %M tijdens ROLLBACK"
por "Obteve erro %M durante ROLLBACK"
rus "Получена ошибка %M в процеÑÑе ROLLBACK"
serbian "Greška %M za vreme izvršavanja komande 'ROLLBACK'"
@@ -4046,9 +4221,9 @@ ER_ERROR_DURING_ROLLBACK
swe "Fick fel %M vid ROLLBACK"
ukr "Отримано помилку %M під Ñ‡Ð°Ñ ROLLBACK"
ER_ERROR_DURING_FLUSH_LOGS
+ chi "flush_logs时出错%M"
cze "Chyba %M při FLUSH_LOGS"
dan "Modtog fejl %M mens kommandoen FLUSH_LOGS blev udført"
- nla "Kreeg fout %M tijdens FLUSH_LOGS"
eng "Got error %M during FLUSH_LOGS"
est "Viga %M käsu FLUSH_LOGS täitmisel"
fre "Erreur %M lors du FLUSH_LOGS"
@@ -4057,6 +4232,7 @@ ER_ERROR_DURING_FLUSH_LOGS
hun "%M hiba a FLUSH_LOGS vegrehajtasa soran"
ita "Rilevato l'errore %M durante il FLUSH_LOGS"
jpn "FLUSH_LOGS中ã«ã‚¨ãƒ©ãƒ¼ %M ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
+ nla "Kreeg fout %M tijdens FLUSH_LOGS"
por "Obteve erro %M durante FLUSH_LOGS"
rus "Получена ошибка %M в процеÑÑе FLUSH_LOGS"
serbian "Greška %M za vreme izvršavanja komande 'FLUSH_LOGS'"
@@ -4064,9 +4240,9 @@ ER_ERROR_DURING_FLUSH_LOGS
swe "Fick fel %M vid FLUSH_LOGS"
ukr "Отримано помилку %M під Ñ‡Ð°Ñ FLUSH_LOGS"
ER_ERROR_DURING_CHECKPOINT
+ chi "CHECKPOINT时出错%M "
cze "Chyba %M při CHECKPOINT"
dan "Modtog fejl %M mens kommandoen CHECKPOINT blev udført"
- nla "Kreeg fout %M tijdens CHECKPOINT"
eng "Got error %M during CHECKPOINT"
est "Viga %M käsu CHECKPOINT täitmisel"
fre "Erreur %M lors du CHECKPOINT"
@@ -4075,6 +4251,7 @@ ER_ERROR_DURING_CHECKPOINT
hun "%M hiba a CHECKPOINT vegrehajtasa soran"
ita "Rilevato l'errore %M durante il CHECKPOINT"
jpn "CHECKPOINT中ã«ã‚¨ãƒ©ãƒ¼ %M ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
+ nla "Kreeg fout %M tijdens CHECKPOINT"
por "Obteve erro %M durante CHECKPOINT"
rus "Получена ошибка %M в процеÑÑе CHECKPOINT"
serbian "Greška %M za vreme izvršavanja komande 'CHECKPOINT'"
@@ -4082,15 +4259,16 @@ ER_ERROR_DURING_CHECKPOINT
swe "Fick fel %M vid CHECKPOINT"
ukr "Отримано помилку %M під Ñ‡Ð°Ñ CHECKPOINT"
ER_NEW_ABORTING_CONNECTION 08S01
+ chi "终止的连接 %lld 到数æ®åº“: '%-.192s' 用户: '%-.48s' 主机: '%-.64s' (%-.64s)"
cze "Spojení %lld do databáze: '%-.192s' uživatel: '%-.48s' stroj: '%-.64s' (%-.64s) bylo přerušeno"
dan "Afbrød forbindelsen %lld til databasen '%-.192s' bruger: '%-.48s' vært: '%-.64s' (%-.64s)"
- nla "Afgebroken verbinding %lld naar db: '%-.192s' gebruiker: '%-.48s' host: '%-.64s' (%-.64s)"
eng "Aborted connection %lld to db: '%-.192s' user: '%-.48s' host: '%-.64s' (%-.64s)"
est "Ãœhendus katkestatud %lld andmebaas: '%-.192s' kasutaja: '%-.48s' masin: '%-.64s' (%-.64s)"
fre "Connection %lld avortée vers la bd: '%-.192s' utilisateur: '%-.48s' hôte: '%-.64s' (%-.64s)"
ger "Abbruch der Verbindung %lld zur Datenbank '%-.192s'. Benutzer: '%-.48s', Host: '%-.64s' (%-.64s)"
ita "Interrotta la connessione %lld al db: ''%-.192s' utente: '%-.48s' host: '%-.64s' (%-.64s)"
jpn "接続 %lld ãŒä¸­æ–­ã•ã‚Œã¾ã—ãŸã€‚データベース: '%-.192s' ユーザー: '%-.48s' ホスト: '%-.64s' (%-.64s)"
+ nla "Afgebroken verbinding %lld naar db: '%-.192s' gebruiker: '%-.48s' host: '%-.64s' (%-.64s)"
por "Conexão %lld abortada para banco de dados '%-.192s' - usuário '%-.48s' - 'host' '%-.64s' ('%-.64s')"
rus "Прервано Ñоединение %lld к базе данных '%-.192s' Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ '%-.48s' Ñ Ñ…Ð¾Ñта '%-.64s' (%-.64s)"
serbian "Prekinuta konekcija broj %lld ka bazi: '%-.192s' korisnik je bio: '%-.48s' a host: '%-.64s' (%-.64s)"
@@ -4098,9 +4276,11 @@ ER_NEW_ABORTING_CONNECTION 08S01
swe "Avbröt länken för tråd %lld till db '%-.192s', användare '%-.48s', host '%-.64s' (%-.64s)"
ukr "Перервано з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ %lld до бази данних: '%-.192s' кориÑтувач: '%-.48s' хоÑÑ‚: '%-.64s' (%-.64s)"
ER_UNUSED_10
+ chi "你应当永远看ä¸åˆ°è¿™ä¸ª"
eng "You should never see it"
spa "Nunca lo debería vd de ver"
ER_FLUSH_MASTER_BINLOG_CLOSED
+ chi "Binlog 已关闭, ä¸èƒ½ RESET MASTER"
eng "Binlog closed, cannot RESET MASTER"
ger "Binlog geschlossen. Kann RESET MASTER nicht ausführen"
jpn "ãƒã‚¤ãƒŠãƒªãƒ­ã‚°ãŒã‚¯ãƒ­ãƒ¼ã‚ºã•ã‚Œã¦ã„ã¾ã™ã€‚RESET MASTER を実行ã§ãã¾ã›ã‚“。"
@@ -4110,9 +4290,9 @@ ER_FLUSH_MASTER_BINLOG_CLOSED
spa "Binlog cerrado, no puedo hacer RESET MASTER"
ukr "Реплікаційний лог закрито, не можу виконати RESET MASTER"
ER_INDEX_REBUILD
+ chi "é‡å»º dumped table '%-.192s' 的索引失败"
cze "Přebudování indexu dumpnuté tabulky '%-.192s' nebylo úspěšné"
dan "Kunne ikke genopbygge indekset for den dumpede tabel '%-.192s'"
- nla "Gefaald tijdens heropbouw index van gedumpte tabel '%-.192s'"
eng "Failed rebuilding the index of dumped table '%-.192s'"
fre "La reconstruction de l'index de la table copiée '%-.192s' a échoué"
ger "Neuerstellung des Index der Dump-Tabelle '%-.192s' fehlgeschlagen"
@@ -4120,20 +4300,22 @@ ER_INDEX_REBUILD
hun "Failed rebuilding the index of dumped table '%-.192s'"
ita "Fallita la ricostruzione dell'indice della tabella copiata '%-.192s'"
jpn "ダンプ表 '%-.192s' ã®ç´¢å¼•å†æ§‹ç¯‰ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
+ nla "Gefaald tijdens heropbouw index van gedumpte tabel '%-.192s'"
por "Falhou na reconstrução do índice da tabela 'dumped' '%-.192s'"
rus "Ошибка переÑтройки индекÑа Ñохраненной таблицы '%-.192s'"
serbian "Izgradnja indeksa dump-ovane tabele '%-.192s' nije uspela"
spa "Fallo reconstruyendo el índice del volcado de la tabla '%-.192s'"
ukr "Ðевдале Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ–Ð½Ð´ÐµÐºÑа переданої таблиці '%-.192s'"
ER_MASTER
+ chi "Master错误:'%-.64s'"
cze "Chyba masteru: '%-.64s'"
dan "Fejl fra master: '%-.64s'"
- nla "Fout van master: '%-.64s'"
eng "Error from master: '%-.64s'"
fre "Erreur reçue du maître: '%-.64s'"
ger "Fehler vom Master: '%-.64s'"
ita "Errore dal master: '%-.64s"
jpn "マスターã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿ: '%-.64s'"
+ nla "Fout van master: '%-.64s'"
por "Erro no 'master' '%-.64s'"
rus "Ошибка от головного Ñервера: '%-.64s'"
serbian "Greška iz glavnog servera '%-.64s' u klasteru"
@@ -4141,14 +4323,15 @@ ER_MASTER
swe "Fel från master: '%-.64s'"
ukr "Помилка від головного: '%-.64s'"
ER_MASTER_NET_READ 08S01
+ chi "读master时有网络错误"
cze "Síťová chyba pÅ™i Ätení z masteru"
dan "Netværksfejl ved læsning fra master"
- nla "Net fout tijdens lezen van master"
eng "Net error reading from master"
fre "Erreur de lecture réseau reçue du maître"
ger "Netzfehler beim Lesen vom Master"
ita "Errore di rete durante la ricezione dal master"
jpn "マスターã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿å—信中ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼"
+ nla "Net fout tijdens lezen van master"
por "Erro de rede lendo do 'master'"
rus "Возникла ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð² процеÑÑе коммуникации Ñ Ð³Ð¾Ð»Ð¾Ð²Ð½Ñ‹Ð¼ Ñервером"
serbian "Greška u primanju mrežnih paketa sa glavnog servera u klasteru"
@@ -4156,14 +4339,15 @@ ER_MASTER_NET_READ 08S01
swe "Fick nätverksfel vid läsning från master"
ukr "Мережева помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ головного"
ER_MASTER_NET_WRITE 08S01
+ chi "写master时有网络错误"
cze "Síťová chyba při zápisu na master"
dan "Netværksfejl ved skrivning til master"
- nla "Net fout tijdens schrijven naar master"
eng "Net error writing to master"
fre "Erreur d'écriture réseau reçue du maître"
ger "Netzfehler beim Schreiben zum Master"
ita "Errore di rete durante l'invio al master"
jpn "マスターã¸ã®ãƒ‡ãƒ¼ã‚¿é€ä¿¡ä¸­ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼"
+ nla "Net fout tijdens schrijven naar master"
por "Erro de rede gravando no 'master'"
rus "Возникла ошибка запиÑи в процеÑÑе коммуникации Ñ Ð³Ð¾Ð»Ð¾Ð²Ð½Ñ‹Ð¼ Ñервером"
serbian "Greška u slanju mrežnih paketa na glavni server u klasteru"
@@ -4171,15 +4355,16 @@ ER_MASTER_NET_WRITE 08S01
swe "Fick nätverksfel vid skrivning till master"
ukr "Мережева помилка запиÑу до головного"
ER_FT_MATCHING_KEY_NOT_FOUND
+ chi "找ä¸åˆ°ä¸Žåˆ—列表匹é…的全文索引"
cze "Žádný sloupec nemá vytvořen fulltextový index"
dan "Kan ikke finde en FULLTEXT nøgle som svarer til kolonne listen"
- nla "Kan geen FULLTEXT index vinden passend bij de kolom lijst"
eng "Can't find FULLTEXT index matching the column list"
est "Ei suutnud leida FULLTEXT indeksit, mis kattuks kasutatud tulpadega"
fre "Impossible de trouver un index FULLTEXT correspondant à cette liste de colonnes"
ger "Kann keinen FULLTEXT-Index finden, der der Feldliste entspricht"
ita "Impossibile trovare un indice FULLTEXT che corrisponda all'elenco delle colonne"
jpn "列リストã«å¯¾å¿œã™ã‚‹å…¨æ–‡ç´¢å¼•(FULLTEXT)ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
+ nla "Kan geen FULLTEXT index vinden passend bij de kolom lijst"
por "Não pode encontrar um índice para o texto todo que combine com a lista de colunas"
rus "Ðевозможно отыÑкать полнотекÑтовый (FULLTEXT) индекÑ, ÑоответÑтвующий ÑпиÑку Ñтолбцов"
serbian "Ne mogu da pronađem 'FULLTEXT' indeks koli odgovara listi kolona"
@@ -4187,15 +4372,16 @@ ER_FT_MATCHING_KEY_NOT_FOUND
swe "Hittar inte ett FULLTEXT-index i kolumnlistan"
ukr "Ðе можу знайти FULLTEXT індекÑ, що відповідає переліку Ñтовбців"
ER_LOCK_OR_ACTIVE_TRANSACTION
+ chi "无法执行给定的命令,因为表上有é”或有活动事务"
cze "Nemohu provést zadaný příkaz, protože existují aktivní zamÄené tabulky nebo aktivní transakce"
dan "Kan ikke udføre den givne kommando fordi der findes aktive, låste tabeller eller fordi der udføres en transaktion"
- nla "Kan het gegeven commando niet uitvoeren, want u heeft actieve gelockte tabellen of een actieve transactie"
eng "Can't execute the given command because you have active locked tables or an active transaction"
est "Ei suuda täita antud käsku kuna on aktiivseid lukke või käimasolev transaktsioon"
fre "Impossible d'exécuter la commande car vous avez des tables verrouillées ou une transaction active"
ger "Kann den angegebenen Befehl wegen einer aktiven Tabellensperre oder einer aktiven Transaktion nicht ausführen"
ita "Impossibile eseguire il comando richiesto: tabelle sotto lock o transazione in atto"
jpn "ã™ã§ã«ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªè¡¨ãƒ­ãƒƒã‚¯ã‚„トランザクションãŒã‚ã‚‹ãŸã‚ã€ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã§ãã¾ã›ã‚“。"
+ nla "Kan het gegeven commando niet uitvoeren, want u heeft actieve gelockte tabellen of een actieve transactie"
por "Não pode executar o comando dado porque você tem tabelas ativas travadas ou uma transação ativa"
rus "Ðевозможно выполнить указанную команду, поÑкольку у Ð²Ð°Ñ Ð¿Ñ€Ð¸ÑутÑтвуют активно заблокированные таблица или Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ"
serbian "Ne mogu da izvrÅ¡im datu komandu zbog toga Å¡to su tabele zakljuÄane ili je transakcija u toku"
@@ -4203,9 +4389,9 @@ ER_LOCK_OR_ACTIVE_TRANSACTION
swe "Kan inte utföra kommandot emedan du har en låst tabell eller an aktiv transaktion"
ukr "Ðе можу виконати подану команду тому, що Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð° або виконуєтьÑÑ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ñ"
ER_UNKNOWN_SYSTEM_VARIABLE
+ chi "未知系统å˜é‡ '%-.*s'"
cze "Neznámá systémová proměnná '%-.*s'"
dan "Ukendt systemvariabel '%-.*s'"
- nla "Onbekende systeem variabele '%-.*s'"
eng "Unknown system variable '%-.*s'"
est "Tundmatu süsteemne muutuja '%-.*s'"
fre "Variable système '%-.*s' inconnue"
@@ -4213,6 +4399,7 @@ ER_UNKNOWN_SYSTEM_VARIABLE
hindi "अजà¥à¤žà¤¾à¤¤ सिसà¥à¤Ÿà¤® वैरिà¤à¤¬à¤² '%-.*s'"
ita "Variabile di sistema '%-.*s' sconosciuta"
jpn "'%-.*s' ã¯ä¸æ˜Žãªã‚·ã‚¹ãƒ†ãƒ å¤‰æ•°ã§ã™ã€‚"
+ nla "Onbekende systeem variabele '%-.*s'"
por "Variável de sistema '%-.*s' desconhecida"
rus "ÐеизвеÑÑ‚Ð½Ð°Ñ ÑиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ '%-.*s'"
serbian "Nepoznata sistemska promenljiva '%-.*s'"
@@ -4220,15 +4407,16 @@ ER_UNKNOWN_SYSTEM_VARIABLE
swe "Okänd systemvariabel: '%-.*s'"
ukr "Ðевідома ÑиÑтемна змінна '%-.*s'"
ER_CRASHED_ON_USAGE
+ chi "表'%-.192s'标记为崩溃,应该修å¤"
cze "Tabulka '%-.192s' je oznaÄena jako poruÅ¡ená a mÄ›la by být opravena"
dan "Tabellen '%-.192s' er markeret med fejl og bør repareres"
- nla "Tabel '%-.192s' staat als gecrashed gemarkeerd en dient te worden gerepareerd"
eng "Table '%-.192s' is marked as crashed and should be repaired"
est "Tabel '%-.192s' on märgitud vigaseks ja tuleb parandada"
fre "La table '%-.192s' est marquée 'crashed' et devrait être réparée"
ger "Tabelle '%-.192s' ist als defekt markiert und sollte repariert werden"
ita "La tabella '%-.192s' e` segnalata come corrotta e deve essere riparata"
jpn "表 '%-.192s' ã¯å£Šã‚Œã¦ã„ã¾ã™ã€‚修復ãŒå¿…è¦ã§ã™ã€‚"
+ nla "Tabel '%-.192s' staat als gecrashed gemarkeerd en dient te worden gerepareerd"
por "Tabela '%-.192s' está marcada como danificada e deve ser reparada"
rus "Таблица '%-.192s' помечена как иÑÐ¿Ð¾Ñ€Ñ‡ÐµÐ½Ð½Ð°Ñ Ð¸ должна пройти проверку и ремонт"
serbian "Tabela '%-.192s' je markirana kao oštećena i trebala bi biti popravljena"
@@ -4236,15 +4424,16 @@ ER_CRASHED_ON_USAGE
swe "Tabell '%-.192s' är trasig och bör repareras med REPAIR TABLE"
ukr "Таблицю '%-.192s' марковано Ñк зіпÑовану та Ñ—Ñ— потрібно відновити"
ER_CRASHED_ON_REPAIR
+ chi "表 '%-.192s' 被标记为崩溃,上一次的修å¤ï¼ˆè‡ªåŠ¨ï¼Ÿï¼‰å¤±è´¥"
cze "Tabulka '%-.192s' je oznaÄena jako poruÅ¡ená a poslední (automatická?) oprava se nezdaÅ™ila"
dan "Tabellen '%-.192s' er markeret med fejl og sidste (automatiske?) REPAIR fejlede"
- nla "Tabel '%-.192s' staat als gecrashed gemarkeerd en de laatste (automatische?) reparatie poging mislukte"
eng "Table '%-.192s' is marked as crashed and last (automatic?) repair failed"
est "Tabel '%-.192s' on märgitud vigaseks ja viimane (automaatne?) parandus ebaõnnestus"
fre "La table '%-.192s' est marquée 'crashed' et le dernier 'repair' a échoué"
ger "Tabelle '%-.192s' ist als defekt markiert und der letzte (automatische?) Reparaturversuch schlug fehl"
ita "La tabella '%-.192s' e` segnalata come corrotta e l'ultima ricostruzione (automatica?) e` fallita"
jpn "表 '%-.192s' ã¯å£Šã‚Œã¦ã„ã¾ã™ã€‚修復(自動?)ã«ã‚‚失敗ã—ã¦ã„ã¾ã™ã€‚"
+ nla "Tabel '%-.192s' staat als gecrashed gemarkeerd en de laatste (automatische?) reparatie poging mislukte"
por "Tabela '%-.192s' está marcada como danificada e a última reparação (automática?) falhou"
rus "Таблица '%-.192s' помечена как иÑÐ¿Ð¾Ñ€Ñ‡ÐµÐ½Ð½Ð°Ñ Ð¸ поÑледний (автоматичеÑкий?) ремонт не был уÑпешным"
serbian "Tabela '%-.192s' je markirana kao oštećena, a zadnja (automatska?) popravka je bila neuspela"
@@ -4252,14 +4441,15 @@ ER_CRASHED_ON_REPAIR
swe "Tabell '%-.192s' är trasig och senast (automatiska?) reparation misslyckades"
ukr "Таблицю '%-.192s' марковано Ñк зіпÑовану та оÑтаннє (автоматичне?) Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑ"
ER_WARNING_NOT_COMPLETE_ROLLBACK
+ chi "æŸäº›éžäº‹åŠ¡æ€§æ›´æ”¹çš„表无法回滚"
dan "Advarsel: Visse data i tabeller der ikke understøtter transaktioner kunne ikke tilbagestilles"
- nla "Waarschuwing: Roll back mislukt voor sommige buiten transacties gewijzigde tabellen"
eng "Some non-transactional changed tables couldn't be rolled back"
est "Hoiatus: mõnesid transaktsioone mittetoetavaid tabeleid ei suudetud tagasi kerida"
fre "Attention: certaines tables ne supportant pas les transactions ont été changées et elles ne pourront pas être restituées"
ger "Änderungen an einigen nicht transaktionalen Tabellen konnten nicht zurückgerollt werden"
ita "Attenzione: Alcune delle modifiche alle tabelle non transazionali non possono essere ripristinate (roll back impossibile)"
jpn "トランザクション対応ã§ã¯ãªã„表ã¸ã®å¤‰æ›´ã¯ãƒ­ãƒ¼ãƒ«ãƒãƒƒã‚¯ã•ã‚Œã¾ã›ã‚“。"
+ nla "Waarschuwing: Roll back mislukt voor sommige buiten transacties gewijzigde tabellen"
por "Aviso: Algumas tabelas não-transacionais alteradas não puderam ser reconstituídas (rolled back)"
rus "Внимание: по некоторым измененным нетранзакционным таблицам невозможно будет произвеÑти откат транзакции"
serbian "Upozorenje: Neke izmenjene tabele ne podržavaju komandu 'ROLLBACK'"
@@ -4267,26 +4457,28 @@ ER_WARNING_NOT_COMPLETE_ROLLBACK
swe "Warning: Några icke transaktionella tabeller kunde inte återställas vid ROLLBACK"
ukr "ЗаÑтереженнÑ: ДеÑкі нетранзакційні зміни таблиць не можна буде повернути"
ER_TRANS_CACHE_FULL
+ chi "多语å¥äº‹åŠ¡éœ€è¦è¶…过 'max_binlog_cache_size' 字节的存储空间;增加这个 mariadbd å˜é‡åŽå†è¯•ä¸€æ¬¡"
dan "Fler-udtryks transaktion krævede mere plads en 'max_binlog_cache_size' bytes. Forhøj værdien af denne variabel og prøv igen"
- nla "Multi-statement transactie vereist meer dan 'max_binlog_cache_size' bytes opslag. Verhoog deze mariadbd variabele en probeer opnieuw"
- eng "Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage"
+ eng "Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mariadbd variable and try again"
est "Mitme lausendiga transaktsioon nõudis rohkem ruumi kui lubatud 'max_binlog_cache_size' muutujaga. Suurenda muutuja väärtust ja proovi uuesti"
fre "Cette transaction à commandes multiples nécessite plus de 'max_binlog_cache_size' octets de stockage, augmentez cette variable de mariadbd et réessayez"
ger "Transaktionen, die aus mehreren Befehlen bestehen, benötigten mehr als 'max_binlog_cache_size' Bytes an Speicher. Btte vergrössern Sie diese Server-Variable versuchen Sie es noch einmal"
ita "La transazione a comandi multipli (multi-statement) ha richiesto piu` di 'max_binlog_cache_size' bytes di disco: aumentare questa variabile di mariadbd e riprovare"
jpn "複数ステートメントã‹ã‚‰æˆã‚‹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒ 'max_binlog_cache_size' 以上ã®å®¹é‡ã‚’å¿…è¦ã¨ã—ã¾ã—ãŸã€‚ã“ã®ã‚·ã‚¹ãƒ†ãƒ å¤‰æ•°ã‚’増加ã—ã¦ã€å†è©¦è¡Œã—ã¦ãã ã•ã„。"
+ nla "Multi-statement transactie vereist meer dan 'max_binlog_cache_size' bytes opslag. Verhoog deze mariadbd variabele en probeer opnieuw"
por "Transações multi-declaradas (multi-statement transactions) requeriram mais do que o valor limite (max_binlog_cache_size) de bytes para armazenagem. Aumente o valor desta variável do mariadbd e tente novamente"
rus "Транзакции, включающей большое количеÑтво команд, потребовалоÑÑŒ более чем 'max_binlog_cache_size' байт. Увеличьте Ñту переменную Ñервера mariadbd и попробуйте еще раз"
spa "Transacción multi-sentencia requirió de más de 'max_binlog_cache_size' bytes de almacenamiento"
swe "Transaktionen krävde mera än 'max_binlog_cache_size' minne. Öka denna mariadbd-variabel och försök på nytt"
ukr "Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ñ Ð· багатьма виразами вимагає більше ніж 'max_binlog_cache_size' байтів Ð´Ð»Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ. Збільште цю змінну mariadbd та Ñпробуйте знову"
ER_SLAVE_MUST_STOP
+ chi "这个æ“作ä¸èƒ½æ‰§è¡Œï¼Œå› ä¸ºä½ æœ‰ä¸ªæ­£åœ¨è¿è¡Œçš„ slave '%2$*1$s'; å…ˆè¿è¡Œ STOP SLAVE '%2$*1$s' åŽå†è¯•"
dan "Denne handling kunne ikke udføres med kørende slave '%2$*1$s', brug først kommandoen STOP SLAVE '%2$*1$s'"
- nla "Deze operatie kan niet worden uitgevoerd met een actieve slave '%2$*1$s', doe eerst STOP SLAVE '%2$*1$s'"
eng "This operation cannot be performed as you have a running slave '%2$*1$s'; run STOP SLAVE '%2$*1$s' first"
fre "Cette opération ne peut être réalisée avec un esclave '%2$*1$s' actif, faites STOP SLAVE '%2$*1$s' d'abord"
ger "Diese Operation kann bei einem aktiven Slave '%2$*1$s' nicht durchgeführt werden. Bitte zuerst STOP SLAVE '%2$*1$s' ausführen"
ita "Questa operazione non puo' essere eseguita con un database 'slave' '%2$*1$s' che gira, lanciare prima STOP SLAVE '%2$*1$s'"
+ nla "Deze operatie kan niet worden uitgevoerd met een actieve slave '%2$*1$s', doe eerst STOP SLAVE '%2$*1$s'"
por "Esta operação não pode ser realizada com um 'slave' '%2$*1$s' em execução. Execute STOP SLAVE '%2$*1$s' primeiro"
rus "Эту операцию невозможно выполнить при работающем потоке подчиненного Ñервера %2$*1$s. Сначала выполните STOP SLAVE '%2$*1$s'"
serbian "Ova operacija ne može biti izvršena dok je aktivan podređeni '%2$*1$s' server. Zadajte prvo komandu 'STOP SLAVE '%2$*1$s'' da zaustavite podređeni server"
@@ -4294,13 +4486,14 @@ ER_SLAVE_MUST_STOP
swe "Denna operation kan inte göras under replikering; Du har en aktiv förbindelse till '%2$*1$s'. Gör STOP SLAVE '%2$*1$s' först"
ukr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð½Ðµ може бути виконана з запущеним підлеглим '%2$*1$s', Ñпочатку виконайте STOP SLAVE '%2$*1$s'"
ER_SLAVE_NOT_RUNNING
+ chi "这个æ“作需è¦ä¸€ä¸ªæ­£åœ¨è¿è¡Œçš„slaveï¼›é…置从机并执行 START SLAVE"
dan "Denne handling kræver en kørende slave. Konfigurer en slave og brug kommandoen START SLAVE"
- nla "Deze operatie vereist een actieve slave, configureer slave en doe dan START SLAVE"
eng "This operation requires a running slave; configure slave and do START SLAVE"
fre "Cette opération nécessite un esclave actif, configurez les esclaves et faites START SLAVE"
ger "Diese Operation benötigt einen aktiven Slave. Bitte Slave konfigurieren und mittels START SLAVE aktivieren"
ita "Questa operaione richiede un database 'slave', configurarlo ed eseguire START SLAVE"
jpn "ã“ã®å‡¦ç†ã¯ã€ç¨¼åƒä¸­ã®ã‚¹ãƒ¬ãƒ¼ãƒ–ã§ãªã‘ã‚Œã°å®Ÿè¡Œã§ãã¾ã›ã‚“。スレーブã®è¨­å®šã‚’ã—ã¦START SLAVEコマンドを実行ã—ã¦ãã ã•ã„。"
+ nla "Deze operatie vereist een actieve slave, configureer slave en doe dan START SLAVE"
por "Esta operação requer um 'slave' em execução. Configure o 'slave' e execute START SLAVE"
rus "Ð”Ð»Ñ Ñтой операции требуетÑÑ Ñ€Ð°Ð±Ð¾Ñ‚Ð°ÑŽÑ‰Ð¸Ð¹ подчиненный Ñервер. Сначала выполните START SLAVE"
serbian "Ova operacija zahteva da je aktivan podređeni server. Konfigurišite prvo podređeni server i onda izvršite komandu 'START SLAVE'"
@@ -4308,13 +4501,14 @@ ER_SLAVE_NOT_RUNNING
swe "Denna operation kan endast göras under replikering; Konfigurera slaven och gör START SLAVE"
ukr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð²Ð¸Ð¼Ð°Ð³Ð°Ñ” запущеного підлеглого, зконфігуруйте підлеглого та виконайте START SLAVE"
ER_BAD_SLAVE
+ chi "æœåŠ¡å™¨æœªé…置为从站;ä¿®å¤é…置文件或使用CHANGE MASTER TO"
dan "Denne server er ikke konfigureret som slave. Ret in config-filen eller brug kommandoen CHANGE MASTER TO"
- nla "De server is niet geconfigureerd als slave, fix in configuratie bestand of met CHANGE MASTER TO"
eng "The server is not configured as slave; fix in config file or with CHANGE MASTER TO"
fre "Le server n'est pas configuré comme un esclave, changez le fichier de configuration ou utilisez CHANGE MASTER TO"
ger "Der Server ist nicht als Slave konfiguriert. Bitte in der Konfigurationsdatei oder mittels CHANGE MASTER TO beheben"
ita "Il server non e' configurato come 'slave', correggere il file di configurazione cambiando CHANGE MASTER TO"
jpn "ã“ã®ã‚µãƒ¼ãƒãƒ¼ã¯ã‚¹ãƒ¬ãƒ¼ãƒ–ã¨ã—ã¦è¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。コンフィグファイルã‹CHANGE MASTER TOコマンドã§è¨­å®šã—ã¦ä¸‹ã•ã„。"
+ nla "De server is niet geconfigureerd als slave, fix in configuratie bestand of met CHANGE MASTER TO"
por "O servidor não está configurado como 'slave'. Acerte o arquivo de configuração ou use CHANGE MASTER TO"
rus "Этот Ñервер не наÑтроен как подчиненный. ВнеÑите иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² конфигурационном файле или Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ CHANGE MASTER TO"
serbian "Server nije konfigurisan kao podređeni server, ispravite konfiguracioni file ili na njemu izvršite komandu 'CHANGE MASTER TO'"
@@ -4322,6 +4516,7 @@ ER_BAD_SLAVE
swe "Servern är inte konfigurerade som en replikationsslav. Ändra konfigurationsfilen eller gör CHANGE MASTER TO"
ukr "Сервер не зконфігуровано Ñк підлеглий, виправте це у файлі конфігурації або з CHANGE MASTER TO"
ER_MASTER_INFO
+ chi "无法åˆå§‹åŒ–'%.*s'çš„master info structure;MariaDB错误日志中å¯ä»¥æ‰¾åˆ°æ›´å¤šé”™è¯¯æ¶ˆæ¯"
eng "Could not initialize master info structure for '%.*s'; more error messages can be found in the MariaDB error log"
fre "Impossible d'initialiser les structures d'information de maître '%.*s', vous trouverez des messages d'erreur supplémentaires dans le journal des erreurs de MariaDB"
ger "Konnte Master-Info-Struktur '%.*s' nicht initialisieren. Weitere Fehlermeldungen können im MariaDB-Error-Log eingesehen werden"
@@ -4331,13 +4526,14 @@ ER_MASTER_INFO
swe "Kunde inte initialisera replikationsstrukturerna för '%.*s'. See MariaDB fel fil för mera information"
ukr "Інформаційна Ñтруктура з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð³Ð¾Ð»Ð¾Ð²Ð½Ð¾Ð³Ð¾ Ñ– підлеглого (master.info) Ð´Ð»Ñ '%.*s' не може бути ініціалізована"
ER_SLAVE_THREAD
+ chi "无法创建slave线程;检查系统资æº"
dan "Kunne ikke danne en slave-tråd; check systemressourcerne"
- nla "Kon slave thread niet aanmaken, controleer systeem resources"
eng "Could not create slave thread; check system resources"
fre "Impossible de créer une tâche esclave, vérifiez les ressources système"
ger "Konnte Slave-Thread nicht starten. Bitte System-Ressourcen überprüfen"
ita "Impossibile creare il thread 'slave', controllare le risorse di sistema"
jpn "スレーブスレッドを作æˆã§ãã¾ã›ã‚“。システムリソースを確èªã—ã¦ãã ã•ã„。"
+ nla "Kon slave thread niet aanmaken, controleer systeem resources"
por "Não conseguiu criar 'thread' de 'slave'. Verifique os recursos do sistema"
rus "Ðевозможно Ñоздать поток подчиненного Ñервера. Проверьте ÑиÑтемные реÑурÑÑ‹"
serbian "Nisam mogao da startujem thread za podređeni server, proverite sistemske resurse"
@@ -4345,8 +4541,8 @@ ER_SLAVE_THREAD
swe "Kunde inte starta en tråd för replikering"
ukr "Ðе можу Ñтворити підлеглу гілку, перевірте ÑиÑтемні реÑурÑи"
ER_TOO_MANY_USER_CONNECTIONS 42000
+ chi "用户%-.64så·²ç»æ‹¥æœ‰è¶…过“max_user_conectionsâ€çš„活连接"
dan "Brugeren %-.64s har allerede mere end 'max_user_connections' aktive forbindelser"
- nla "Gebruiker %-.64s heeft reeds meer dan 'max_user_connections' actieve verbindingen"
eng "User %-.64s already has more than 'max_user_connections' active connections"
est "Kasutajal %-.64s on juba rohkem ühendusi kui lubatud 'max_user_connections' muutujaga"
fre "L'utilisateur %-.64s possède déjà plus de 'max_user_connections' connexions actives"
@@ -4354,6 +4550,7 @@ ER_TOO_MANY_USER_CONNECTIONS 42000
hindi "यूज़र %-.64s के पहले से ही 'max_user_connections' से अधिक सकà¥à¤°à¤¿à¤¯ कनेकà¥à¤¶à¤¨à¥à¤¸ हैं"
ita "L'utente %-.64s ha gia' piu' di 'max_user_connections' connessioni attive"
jpn "ユーザー '%-.64s' ã¯ã™ã§ã« 'max_user_connections' 以上ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªæŽ¥ç¶šã‚’è¡Œã£ã¦ã„ã¾ã™ã€‚"
+ nla "Gebruiker %-.64s heeft reeds meer dan 'max_user_connections' actieve verbindingen"
por "Usuário '%-.64s' já possui mais que o valor máximo de conexões (max_user_connections) ativas"
rus "У Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %-.64s уже больше чем 'max_user_connections' активных Ñоединений"
serbian "Korisnik %-.64s već ima više aktivnih konekcija nego što je to određeno 'max_user_connections' promenljivom"
@@ -4361,8 +4558,8 @@ ER_TOO_MANY_USER_CONNECTIONS 42000
swe "Användare '%-.64s' har redan 'max_user_connections' aktiva inloggningar"
ukr "КориÑтувач %-.64s вже має більше ніж 'max_user_connections' активних з'єднань"
ER_SET_CONSTANTS_ONLY
+ chi "您åªèƒ½åœ¨æ­¤è¯­å¥ä¸­ä½¿ç”¨å¸¸é‡è¡¨è¾¾å¼"
dan "Du må kun bruge konstantudtryk med SET"
- nla "U mag alleen constante expressies gebruiken bij SET"
eng "You may only use constant expressions in this statement"
est "Ainult konstantsed suurused on lubatud SET klauslis"
fre "Seules les expressions constantes sont autorisées avec SET"
@@ -4370,6 +4567,7 @@ ER_SET_CONSTANTS_ONLY
hindi "इस सà¥à¤Ÿà¥‡à¤Ÿà¤®à¥‡à¤‚ट में आप केवल CONSTANT EXPRESSIONS का उपयोग कर सकते हैं"
ita "Si possono usare solo espressioni costanti con SET"
jpn "SET処ç†ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚"
+ nla "U mag alleen constante expressies gebruiken bij SET"
por "Você pode usar apenas expressões constantes com SET"
rus "С Ñтой командой вы можете иÑпользовать только конÑтантные выражениÑ"
serbian "Možete upotrebiti samo konstantan iskaz sa komandom 'SET'"
@@ -4377,14 +4575,15 @@ ER_SET_CONSTANTS_ONLY
swe "Man kan endast använda konstantuttryck med SET"
ukr "Можна викориÑтовувати лише вирази зі Ñталими у SET"
ER_LOCK_WAIT_TIMEOUT
+ chi "é”等待超时;å°è¯•é‡æ–°å¯åŠ¨äº‹åŠ¡"
dan "Lock wait timeout overskredet"
- nla "Lock wacht tijd overschreden"
eng "Lock wait timeout exceeded; try restarting transaction"
est "Kontrollaeg ületatud luku järel ootamisel; Proovi transaktsiooni otsast alata"
fre "Timeout sur l'obtention du verrou"
ger "Beim Warten auf eine Sperre wurde die zulässige Wartezeit überschritten. Bitte versuchen Sie, die Transaktion neu zu starten"
ita "E' scaduto il timeout per l'attesa del lock"
jpn "ロック待ã¡ãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸã€‚トランザクションをå†è©¦è¡Œã—ã¦ãã ã•ã„。"
+ nla "Lock wacht tijd overschreden"
por "Tempo de espera (timeout) de travamento excedido. Tente reiniciar a transação"
rus "Таймаут Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ иÑтек; попробуйте перезапуÑтить транзакцию"
serbian "Vremenski limit za zakljuÄavanje tabele je istekao; Probajte da ponovo startujete transakciju"
@@ -4392,8 +4591,8 @@ ER_LOCK_WAIT_TIMEOUT
swe "Fick inte ett lås i tid ; Försök att starta om transaktionen"
ukr "Затримку Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð¾"
ER_LOCK_TABLE_FULL
+ chi "é”的总数超过é”定表大å°"
dan "Det totale antal låse overstiger størrelsen på låse-tabellen"
- nla "Het totale aantal locks overschrijdt de lock tabel grootte"
eng "The total number of locks exceeds the lock table size"
est "Lukkude koguarv ületab lukutabeli suuruse"
fre "Le nombre total de verrou dépasse la taille de la table des verrous"
@@ -4401,6 +4600,7 @@ ER_LOCK_TABLE_FULL
hindi "लॉकà¥à¤¸ की कà¥à¤² संखà¥à¤¯à¤¾ लॉक टेबल के साइज से अधिक है"
ita "Il numero totale di lock e' maggiore della grandezza della tabella di lock"
jpn "ロックã®æ•°ãŒå¤šã™ãŽã¾ã™ã€‚"
+ nla "Het totale aantal locks overschrijdt de lock tabel grootte"
por "O número total de travamentos excede o tamanho da tabela de travamentos"
rus "Общее количеÑтво блокировок превыÑило размеры таблицы блокировок"
serbian "Broj totalnih zakljuÄavanja tabele premaÅ¡uje veliÄinu tabele zakljuÄavanja"
@@ -4408,14 +4608,15 @@ ER_LOCK_TABLE_FULL
swe "Antal lås överskrider antalet reserverade lås"
ukr "Загальна кількіÑÑ‚ÑŒ блокувань перевищила розмір блокувань Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ–"
ER_READ_ONLY_TRANSACTION 25000
+ chi "在READ UNCOMMITTED事务期间无法获å–æ›´æ–°é”定"
dan "Update lås kan ikke opnås under en READ UNCOMMITTED transaktion"
- nla "Update locks kunnen niet worden verkregen tijdens een READ UNCOMMITTED transactie"
eng "Update locks cannot be acquired during a READ UNCOMMITTED transaction"
est "Uuenduslukke ei saa kasutada READ UNCOMMITTED transaktsiooni käigus"
fre "Un verrou en update ne peut être acquit pendant une transaction READ UNCOMMITTED"
ger "Während einer READ-UNCOMMITTED-Transaktion können keine UPDATE-Sperren angefordert werden"
ita "I lock di aggiornamento non possono essere acquisiti durante una transazione 'READ UNCOMMITTED'"
jpn "読ã¿è¾¼ã¿å°‚用トランザクションã§ã™ã€‚"
+ nla "Update locks kunnen niet worden verkregen tijdens een READ UNCOMMITTED transactie"
por "Travamentos de atualização não podem ser obtidos durante uma transação de tipo READ UNCOMMITTED"
rus "Блокировки обновлений Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ в процеÑÑе Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð½Ðµ принÑтой (в режиме READ UNCOMMITTED) транзакции"
serbian "ZakljuÄavanja izmena ne mogu biti realizovana sve dok traje 'READ UNCOMMITTED' transakcija"
@@ -4423,14 +4624,15 @@ ER_READ_ONLY_TRANSACTION 25000
swe "Updateringslås kan inte göras när man använder READ UNCOMMITTED"
ukr "Оновити Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ можливо на протÑзі транзакції READ UNCOMMITTED"
ER_DROP_DB_WITH_READ_LOCK
+ chi "线程æŒæœ‰å…¨å±€è¯»é”时,ä¸å…许删除数æ®åº“"
dan "DROP DATABASE er ikke tilladt mens en tråd holder på globalt read lock"
- nla "DROP DATABASE niet toegestaan terwijl thread een globale 'read lock' bezit"
eng "DROP DATABASE not allowed while thread is holding global read lock"
est "DROP DATABASE ei ole lubatud kui lõim omab globaalset READ lukku"
fre "DROP DATABASE n'est pas autorisée pendant qu'une tâche possède un verrou global en lecture"
ger "DROP DATABASE ist nicht erlaubt, solange der Thread eine globale Lesesperre hält"
ita "DROP DATABASE non e' permesso mentre il thread ha un lock globale di lettura"
jpn "グローãƒãƒ«ãƒªãƒ¼ãƒ‰ãƒ­ãƒƒã‚¯ã‚’ä¿æŒã—ã¦ã„ã‚‹é–“ã¯ã€DROP DATABASE を実行ã§ãã¾ã›ã‚“。"
+ nla "DROP DATABASE niet toegestaan terwijl thread een globale 'read lock' bezit"
por "DROP DATABASE não permitido enquanto uma 'thread' está mantendo um travamento global de leitura"
rus "Ðе допуÑкаетÑÑ DROP DATABASE, пока поток держит глобальную блокировку чтениÑ"
serbian "Komanda 'DROP DATABASE' nije dozvoljena dok thread globalno zakljuÄava Äitanje podataka"
@@ -4438,14 +4640,15 @@ ER_DROP_DB_WITH_READ_LOCK
swe "DROP DATABASE är inte tillåtet när man har ett globalt läslås"
ukr "DROP DATABASE не дозволено доки гілка перебуває під загальним блокуваннÑм читаннÑ"
ER_CREATE_DB_WITH_READ_LOCK
+ chi "线程æŒæœ‰å…¨å±€è¯»é”时,ä¸å…许创建数æ®åº“"
dan "CREATE DATABASE er ikke tilladt mens en tråd holder på globalt read lock"
- nla "CREATE DATABASE niet toegestaan terwijl thread een globale 'read lock' bezit"
eng "CREATE DATABASE not allowed while thread is holding global read lock"
est "CREATE DATABASE ei ole lubatud kui lõim omab globaalset READ lukku"
fre "CREATE DATABASE n'est pas autorisée pendant qu'une tâche possède un verrou global en lecture"
ger "CREATE DATABASE ist nicht erlaubt, solange der Thread eine globale Lesesperre hält"
ita "CREATE DATABASE non e' permesso mentre il thread ha un lock globale di lettura"
jpn "グローãƒãƒ«ãƒªãƒ¼ãƒ‰ãƒ­ãƒƒã‚¯ã‚’ä¿æŒã—ã¦ã„ã‚‹é–“ã¯ã€CREATE DATABASE を実行ã§ãã¾ã›ã‚“。"
+ nla "CREATE DATABASE niet toegestaan terwijl thread een globale 'read lock' bezit"
por "CREATE DATABASE não permitido enquanto uma 'thread' está mantendo um travamento global de leitura"
rus "Ðе допуÑкаетÑÑ CREATE DATABASE, пока поток держит глобальную блокировку чтениÑ"
serbian "Komanda 'CREATE DATABASE' nije dozvoljena dok thread globalno zakljuÄava Äitanje podataka"
@@ -4453,7 +4656,7 @@ ER_CREATE_DB_WITH_READ_LOCK
swe "CREATE DATABASE är inte tillåtet när man har ett globalt läslås"
ukr "CREATE DATABASE не дозволено доки гілка перебуває під загальним блокуваннÑм читаннÑ"
ER_WRONG_ARGUMENTS
- nla "Foutieve parameters voor %s"
+ chi "%sçš„å‚æ•°ä¸æ­£ç¡®"
eng "Incorrect arguments to %s"
est "Vigased parameetrid %s-le"
fre "Mauvais arguments à %s"
@@ -4461,6 +4664,7 @@ ER_WRONG_ARGUMENTS
hindi "%s को गलत आरà¥à¤—à¥à¤¯à¥‚मेंटà¥à¤¸"
ita "Argomenti errati a %s"
jpn "%s ã®å¼•æ•°ãŒä¸æ­£ã§ã™"
+ nla "Foutieve parameters voor %s"
por "Argumentos errados para %s"
rus "Ðеверные параметры Ð´Ð»Ñ %s"
serbian "Pogrešni argumenti prosleđeni na %s"
@@ -4468,13 +4672,14 @@ ER_WRONG_ARGUMENTS
swe "Felaktiga argument till %s"
ukr "Хибний аргумент Ð´Ð»Ñ %s"
ER_NO_PERMISSION_TO_CREATE_USER 42000
- nla "'%s'@'%s' mag geen nieuwe gebruikers creeren"
+ chi "'%s'@'%s'ä¸å…许创建新用户"
eng "'%s'@'%s' is not allowed to create new users"
est "Kasutajal '%s'@'%s' ei ole lubatud luua uusi kasutajaid"
fre "'%s'@'%s' n'est pas autorisé à créer de nouveaux utilisateurs"
ger "'%s'@'%s' ist nicht berechtigt, neue Benutzer hinzuzufügen"
hindi "'%s'@'%s' को नठयूज़रà¥à¤¸ बनाने की अनà¥à¤®à¤¤à¤¿ नहीं है"
ita "A '%s'@'%s' non e' permesso creare nuovi utenti"
+ nla "'%s'@'%s' mag geen nieuwe gebruikers creeren"
por "Não é permitido a '%s'@'%s' criar novos usuários"
rus "'%s'@'%s' не разрешаетÑÑ Ñоздавать новых пользователей"
serbian "Korisniku '%s'@'%s' nije dozvoljeno da kreira nove korisnike"
@@ -4482,13 +4687,14 @@ ER_NO_PERMISSION_TO_CREATE_USER 42000
swe "'%s'@'%s' har inte rättighet att skapa nya användare"
ukr "КориÑтувачу '%s'@'%s' не дозволено Ñтворювати нових кориÑтувачів"
ER_UNION_TABLES_IN_DIFFERENT_DIR
- nla "Incorrecte tabel definitie; alle MERGE tabellen moeten tot dezelfde database behoren"
+ chi "表定义ä¸æ­£ç¡®;所有åˆå¹¶è¡¨å¿…须在åŒä¸€æ•°æ®åº“中"
eng "Incorrect table definition; all MERGE tables must be in the same database"
est "Vigane tabelimääratlus; kõik MERGE tabeli liikmed peavad asuma samas andmebaasis"
fre "Définition de table incorrecte; toutes les tables MERGE doivent être dans la même base de donnée"
ger "Falsche Tabellendefinition. Alle MERGE-Tabellen müssen sich in derselben Datenbank befinden"
ita "Definizione della tabella errata; tutte le tabelle di tipo MERGE devono essere nello stesso database"
jpn "ä¸æ­£ãªè¡¨å®šç¾©ã§ã™ã€‚MERGE表ã®æ§‹æˆè¡¨ã¯ã™ã¹ã¦åŒã˜ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã«ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
+ nla "Incorrecte tabel definitie; alle MERGE tabellen moeten tot dezelfde database behoren"
por "Definição incorreta da tabela. Todas as tabelas contidas na junção devem estar no mesmo banco de dados"
rus "Ðеверное определение таблицы; Ð’Ñе таблицы в MERGE должны принадлежать одной и той же базе данных"
serbian "Pogrešna definicija tabele; sve 'MERGE' tabele moraju biti u istoj bazi podataka"
@@ -4496,13 +4702,14 @@ ER_UNION_TABLES_IN_DIFFERENT_DIR
swe "Felaktig tabelldefinition; alla tabeller i en MERGE-tabell måste vara i samma databas"
ukr "Хибне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ–; вÑÑ– MERGE-таблиці повинні належити до однієї бази ланних."
ER_LOCK_DEADLOCK 40001
- nla "Deadlock gevonden tijdens lock-aanvraag poging; Probeer herstart van de transactie"
+ chi "试图é”定时å‘现僵局;å°è¯•é‡æ–°å¯åŠ¨äº‹åŠ¡"
eng "Deadlock found when trying to get lock; try restarting transaction"
est "Lukustamisel tekkis tupik (deadlock); alusta transaktsiooni otsast"
fre "Deadlock découvert en essayant d'obtenir les verrous : essayez de redémarrer la transaction"
ger "Beim Versuch, eine Sperre anzufordern, ist ein Deadlock aufgetreten. Versuchen Sie, die Transaktion neu zu starten"
ita "Trovato deadlock durante il lock; Provare a far ripartire la transazione"
jpn "ロックå–得中ã«ãƒ‡ãƒƒãƒ‰ãƒ­ãƒƒã‚¯ãŒæ¤œå‡ºã•ã‚Œã¾ã—ãŸã€‚トランザクションをå†è©¦è¡Œã—ã¦ãã ã•ã„。"
+ nla "Deadlock gevonden tijdens lock-aanvraag poging; Probeer herstart van de transactie"
por "Encontrado um travamento fatal (deadlock) quando tentava obter uma trava. Tente reiniciar a transação"
rus "Возникла Ñ‚ÑƒÐ¿Ð¸ÐºÐ¾Ð²Ð°Ñ ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ð² процеÑÑе Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸; Попробуйте перезапуÑтить транзакцию"
serbian "Unakrsno zakljuÄavanje pronaÄ‘eno kada sam pokuÅ¡ao da dobijem pravo na zakljuÄavanje; Probajte da restartujete transakciju"
@@ -4510,13 +4717,14 @@ ER_LOCK_DEADLOCK 40001
swe "Fick 'DEADLOCK' vid låsförsök av block/rad. Försök att starta om transaktionen"
ukr "Взаємне Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ під Ñ‡Ð°Ñ Ñпроби отримати блокуваннÑ; Ñпробуйте перезапуÑтити транзакцію."
ER_TABLE_CANT_HANDLE_FT
- nla "Het gebruikte tabel type (%s) ondersteund geen FULLTEXT indexen"
+ chi "存储引擎%sä¸æ”¯æŒfulltext索引"
eng "The storage engine %s doesn't support FULLTEXT indexes"
est "Antud tabelitüüp (%s) ei toeta FULLTEXT indekseid"
fre "Le type de table utilisé (%s) ne supporte pas les index FULLTEXT"
ger "Der verwendete Tabellentyp (%s) unterstützt keine FULLTEXT-Indizes"
hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन '%s' FULLTEXT इनà¥à¤¡à¥‡à¤•à¥à¤¸à¥‡à¤¸ को सपोरà¥à¤Ÿ नहीं करता"
ita "La tabella usata (%s) non supporta gli indici FULLTEXT"
+ nla "Het gebruikte tabel type (%s) ondersteund geen FULLTEXT indexen"
por "O tipo de tabela utilizado (%s) não suporta índices de texto completo (fulltext indexes)"
rus "ИÑпользуемый тип таблиц (%s) не поддерживает полнотекÑтовых индекÑов"
serbian "Upotrebljeni tip tabele (%s) ne podržava 'FULLTEXT' indekse"
@@ -4524,12 +4732,13 @@ ER_TABLE_CANT_HANDLE_FT
swe "Tabelltypen (%s) har inte hantering av FULLTEXT-index"
ukr "ВикориÑтаний тип таблиці (%s) не підтримує FULLTEXT індекÑів"
ER_CANNOT_ADD_FOREIGN
- nla "Kan foreign key beperking niet toevoegen vor `%s`"
+ chi "ä¸èƒ½ä¸º`%s`添加外键约æŸ"
eng "Cannot add foreign key constraint for `%s`"
fre "Impossible d'ajouter des contraintes d'index externe à `%s`"
ger "Fremdschlüssel-Beschränkung kann nicht hinzugefügt werden für `%s`"
ita "Impossibile aggiungere il vincolo di integrita' referenziale (foreign key constraint) a `%s`"
jpn "`%s` 外部キー制約を追加ã§ãã¾ã›ã‚“。"
+ nla "Kan foreign key beperking niet toevoegen vor `%s`"
por "Não pode acrescentar uma restrição de chave estrangeira para `%s`"
rus "Ðевозможно добавить Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ ключа Ð´Ð»Ñ `%s`"
serbian "Ne mogu da dodam proveru spoljnog kljuÄa na `%s`"
@@ -4537,7 +4746,7 @@ ER_CANNOT_ADD_FOREIGN
swe "Kan inte lägga till 'FOREIGN KEY constraint' för `%s`'"
ukr "Ðе можу додати Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ ключа Ha `%s`"
ER_NO_REFERENCED_ROW 23000
- nla "Kan onderliggende rij niet toevoegen: foreign key beperking gefaald"
+ chi "无法添加或更新å­è¡Œï¼šå¤–键约æŸå¤±è´¥"
eng "Cannot add or update a child row: a foreign key constraint fails"
fre "Impossible d'ajouter un enregistrement fils : une constrainte externe l'empèche"
ger "Hinzufügen oder Aktualisieren eines Kind-Datensatzes schlug aufgrund einer Fremdschlüssel-Beschränkung fehl"
@@ -4545,6 +4754,7 @@ ER_NO_REFERENCED_ROW 23000
hun "Cannot add a child row: a foreign key constraint fails"
ita "Impossibile aggiungere la riga: un vincolo d'integrita' referenziale non e' soddisfatto"
jpn "親キーãŒã‚ã‚Šã¾ã›ã‚“。外部キー制約é•åã§ã™ã€‚"
+ nla "Kan onderliggende rij niet toevoegen: foreign key beperking gefaald"
norwegian-ny "Cannot add a child row: a foreign key constraint fails"
por "Não pode acrescentar uma linha filha: uma restrição de chave estrangeira falhou"
rus "Ðевозможно добавить или обновить дочернюю Ñтроку: проверка ограничений внешнего ключа не выполнÑетÑÑ"
@@ -4552,6 +4762,7 @@ ER_NO_REFERENCED_ROW 23000
swe "FOREIGN KEY-konflikt: Kan inte skriva barn"
ukr "Ðе вдаєтьÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ або оновити дочірній Ñ€Ñдок: невдала перевірка Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ ключа"
ER_ROW_IS_REFERENCED 23000
+ chi "无法删除或更新父行:外键约æŸå¤±è´¥"
eng "Cannot delete or update a parent row: a foreign key constraint fails"
fre "Impossible de supprimer un enregistrement père : une constrainte externe l'empèche"
ger "Löschen oder Aktualisieren eines Eltern-Datensatzes schlug aufgrund einer Fremdschlüssel-Beschränkung fehl"
@@ -4565,44 +4776,48 @@ ER_ROW_IS_REFERENCED 23000
spa "No puedo borrar o actualizar una fila padre: ha fallado una restrición de clave foránea"
swe "FOREIGN KEY-konflikt: Kan inte radera fader"
ER_CONNECT_TO_MASTER 08S01
- nla "Fout bij opbouwen verbinding naar master: %-.128s"
+ chi "连接master时出错:%-.128s"
eng "Error connecting to master: %-.128s"
ger "Fehler bei der Verbindung zum Master: %-.128s"
ita "Errore durante la connessione al master: %-.128s"
jpn "マスターã¸ã®æŽ¥ç¶šã‚¨ãƒ©ãƒ¼: %-.128s"
+ nla "Fout bij opbouwen verbinding naar master: %-.128s"
por "Erro conectando com o master: %-.128s"
rus "Ошибка ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð³Ð¾Ð»Ð¾Ð²Ð½Ñ‹Ð¼ Ñервером: %-.128s"
spa "Error conectando al maestro (master): %-.128s"
swe "Fick fel vid anslutning till master: %-.128s"
ER_QUERY_ON_MASTER
- nla "Fout bij uitvoeren query op master: %-.128s"
+ chi "在Master上è¿è¡ŒæŸ¥è¯¢æ—¶å‡ºé”™ï¼š%-.128s"
eng "Error running query on master: %-.128s"
ger "Beim Ausführen einer Abfrage auf dem Master trat ein Fehler auf: %-.128s"
ita "Errore eseguendo una query sul master: %-.128s"
jpn "マスターã§ã®ã‚¯ã‚¨ãƒªå®Ÿè¡Œã‚¨ãƒ©ãƒ¼: %-.128s"
+ nla "Fout bij uitvoeren query op master: %-.128s"
por "Erro rodando consulta no master: %-.128s"
rus "Ошибка Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа на головном Ñервере: %-.128s"
spa "Error ejecutando consulta (query) en maestro (master): %-.128s"
swe "Fick fel vid utförande av command på mastern: %-.128s"
ER_ERROR_WHEN_EXECUTING_COMMAND
- nla "Fout tijdens uitvoeren van commando %s: %-.128s"
+ chi "执行命令%s时出错:%-.128s"
eng "Error when executing command %s: %-.128s"
est "Viga käsu %s täitmisel: %-.128s"
ger "Fehler beim Ausführen des Befehls %s: %-.128s"
ita "Errore durante l'esecuzione del comando %s: %-.128s"
jpn "%s コマンドã®å®Ÿè¡Œã‚¨ãƒ©ãƒ¼: %-.128s"
+ nla "Fout tijdens uitvoeren van commando %s: %-.128s"
por "Erro quando executando comando %s: %-.128s"
rus "Ошибка при выполнении команды %s: %-.128s"
serbian "Greška pri izvršavanju komande %s: %-.128s"
spa "Error al ejecutar comando %s: %-.128s"
swe "Fick fel vid utförande av %s: %-.128s"
ER_WRONG_USAGE
- nla "Foutief gebruik van %s en %s"
+ chi "%så’Œ%s使用ä¸æ­£ç¡®"
eng "Incorrect usage of %s and %s"
est "Vigane %s ja %s kasutus"
ger "Falsche Verwendung von %s und %s"
ita "Uso errato di %s e %s"
jpn "%s ã® %s ã«é–¢ã™ã‚‹ä¸æ­£ãªä½¿ç”¨æ³•ã§ã™ã€‚"
+ nla "Foutief gebruik van %s en %s"
por "Uso errado de %s e %s"
rus "Ðеверное иÑпользование %s и %s"
serbian "Pogrešna upotreba %s i %s"
@@ -4610,164 +4825,180 @@ ER_WRONG_USAGE
swe "Felaktig använding av %s and %s"
ukr "Wrong usage of %s and %s"
ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT 21000
- nla "De gebruikte SELECT commando's hebben een verschillend aantal kolommen"
+ chi "使用的SELECT语å¥å…·æœ‰ä¸åŒæ•°é‡çš„列"
eng "The used SELECT statements have a different number of columns"
est "Tulpade arv kasutatud SELECT lausetes ei kattu"
ger "Die verwendeten SELECT-Befehle liefern unterschiedliche Anzahlen von Feldern zurück"
ita "La SELECT utilizzata ha un numero di colonne differente"
jpn "使用ã®SELECTæ–‡ãŒè¿”ã™åˆ—æ•°ãŒé•ã„ã¾ã™ã€‚"
+ nla "De gebruikte SELECT commando's hebben een verschillend aantal kolommen"
por "Os comandos SELECT usados têm diferente número de colunas"
rus "ИÑпользованные операторы выборки (SELECT) дают разное количеÑтво Ñтолбцов"
serbian "Upotrebljene 'SELECT' komande adresiraju razliÄit broj kolona"
spa "Las sentencias SELECT usadas tienen un número diferente de columnas"
swe "SELECT-kommandona har olika antal kolumner"
ER_CANT_UPDATE_WITH_READLOCK
- nla "Kan de query niet uitvoeren vanwege een conflicterende read lock"
+ chi "无法执行查询,因为您有冲çªçš„读é”"
eng "Can't execute the query because you have a conflicting read lock"
est "Ei suuda täita päringut konfliktse luku tõttu"
ger "Augrund eines READ-LOCK-Konflikts kann die Abfrage nicht ausgeführt werden"
ita "Impossibile eseguire la query perche' c'e' un conflitto con in lock di lettura"
jpn "競åˆã™ã‚‹ãƒªãƒ¼ãƒ‰ãƒ­ãƒƒã‚¯ã‚’ä¿æŒã—ã¦ã„ã‚‹ã®ã§ã€ã‚¯ã‚¨ãƒªã‚’実行ã§ãã¾ã›ã‚“。"
+ nla "Kan de query niet uitvoeren vanwege een conflicterende read lock"
por "Não posso executar a consulta porque você tem um conflito de travamento de leitura"
rus "Ðевозможно иÑполнить запроÑ, поÑкольку у Ð²Ð°Ñ ÑƒÑтановлены конфликтующие блокировки чтениÑ"
serbian "Ne mogu da izvrÅ¡im upit zbog toga Å¡to imate zakljuÄavanja Äitanja podataka u konfliktu"
spa "No puedo ejecutar la consulta (query) porque vd tiene un conflicto de bloqueo de lectura"
swe "Kan inte utföra kommandot emedan du har ett READ-lås"
ER_MIXING_NOT_ALLOWED
- nla "Het combineren van transactionele en niet-transactionele tabellen is uitgeschakeld"
+ chi "事务和éžäº‹åŠ¡è¡¨çš„æ··åˆè¢«ç¦ç”¨"
eng "Mixing of transactional and non-transactional tables is disabled"
est "Transaktsioone toetavate ning mittetoetavate tabelite kooskasutamine ei ole lubatud"
ger "Die gleichzeitige Verwendung von Tabellen mit und ohne Transaktionsunterstützung ist deaktiviert"
ita "E' disabilitata la possibilita' di mischiare tabelle transazionali e non-transazionali"
jpn "トランザクション対応ã®è¡¨ã¨éžå¯¾å¿œã®è¡¨ã®åŒæ™‚使用ã¯ç„¡åŠ¹åŒ–ã•ã‚Œã¦ã„ã¾ã™ã€‚"
+ nla "Het combineren van transactionele en niet-transactionele tabellen is uitgeschakeld"
por "Mistura de tabelas transacional e não-transacional está desabilitada"
rus "ИÑпользование транзакционных таблиц нарÑду Ñ Ð½ÐµÑ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¼Ð¸ запрещено"
serbian "MeÅ¡anje tabela koje podržavaju transakcije i onih koje ne podržavaju transakcije je iskljuÄeno"
spa "Desactivada la mezcla de tablas transaccionales y no transaccionales"
swe "Blandning av transaktionella och icke-transaktionella tabeller är inaktiverat"
ER_DUP_ARGUMENT
- nla "Optie '%s' tweemaal gebruikt in opdracht"
+ chi "选项'%s'在语å¥ä¸­ä½¿ç”¨ä¸¤æ¬¡"
eng "Option '%s' used twice in statement"
est "Määrangut '%s' on lauses kasutatud topelt"
ger "Option '%s' wird im Befehl zweimal verwendet"
ita "L'opzione '%s' e' stata usata due volte nel comando"
jpn "オプション '%s' ãŒ2度使用ã•ã‚Œã¦ã„ã¾ã™ã€‚"
+ nla "Optie '%s' tweemaal gebruikt in opdracht"
por "Opção '%s' usada duas vezes no comando"
rus "ÐžÐ¿Ñ†Ð¸Ñ '%s' дважды иÑпользована в выражении"
spa "Opción '%s' usada dos veces en la sentencia"
swe "Option '%s' användes två gånger"
ER_USER_LIMIT_REACHED 42000
- nla "Gebruiker '%-.64s' heeft het maximale gebruik van de '%s' faciliteit overschreden (huidige waarde: %ld)"
+ chi "用户'%-.64s'已超过'%s'资æºï¼ˆå½“å‰å€¼ï¼š%ld)"
eng "User '%-.64s' has exceeded the '%s' resource (current value: %ld)"
ger "Benutzer '%-.64s' hat die Ressourcenbeschränkung '%s' überschritten (aktueller Wert: %ld)"
ita "L'utente '%-.64s' ha ecceduto la risorsa '%s' (valore corrente: %ld)"
jpn "ユーザー '%-.64s' ã¯ãƒªã‚½ãƒ¼ã‚¹ã®ä¸Šé™ '%s' ã«é”ã—ã¾ã—ãŸã€‚(ç¾åœ¨å€¤: %ld)"
+ nla "Gebruiker '%-.64s' heeft het maximale gebruik van de '%s' faciliteit overschreden (huidige waarde: %ld)"
por "Usuário '%-.64s' tem excedido o '%s' recurso (atual valor: %ld)"
rus "Пользователь '%-.64s' превыÑил иÑпользование реÑурÑа '%s' (текущее значение: %ld)"
spa "El usuario '%-.64s' ha excedido el recurso '%s' (valor actual: %ld)"
swe "Användare '%-.64s' har överskridit '%s' (nuvarande värde: %ld)"
ER_SPECIFIC_ACCESS_DENIED_ERROR 42000
- nla "Toegang geweigerd. U moet het %-.128s privilege hebben voor deze operatie"
+ chi "æ‹’ç»è®¿é—®;您需è¦ï¼ˆè‡³å°‘一个)%-.128s特æƒç”¨äºŽæ­¤æ“作"
eng "Access denied; you need (at least one of) the %-.128s privilege(s) for this operation"
ger "Kein Zugriff. Hierfür wird die Berechtigung %-.128s benötigt"
ita "Accesso non consentito. Serve il privilegio %-.128s per questa operazione"
jpn "アクセスã¯æ‹’å¦ã•ã‚Œã¾ã—ãŸã€‚ã“ã®æ“作ã«ã¯ %-.128s 権é™ãŒ(複数ã®å ´åˆã¯ã©ã‚Œã‹1ã¤)å¿…è¦ã§ã™ã€‚"
+ nla "Toegang geweigerd. U moet het %-.128s privilege hebben voor deze operatie"
por "Acesso negado. Você precisa o privilégio %-.128s para essa operação"
rus "Ð’ доÑтупе отказано. Вам нужны привилегии %-.128s Ð´Ð»Ñ Ñтой операции"
spa "Acceso denegado. Usted necesita (al menos un(os)) privilegio(s) %-.128s para esta operación"
swe "Du har inte privlegiet '%-.128s' som behövs för denna operation"
ukr "Access denied. You need the %-.128s privilege for this operation"
ER_LOCAL_VARIABLE
- nla "Variabele '%-.64s' is SESSION en kan niet worden gebruikt met SET GLOBAL"
+ chi "å˜é‡'%-.64s'是一个SESSIONå˜é‡ï¼Œä¸èƒ½ä¸ŽSet Global一起使用"
eng "Variable '%-.64s' is a SESSION variable and can't be used with SET GLOBAL"
ger "Variable '%-.64s' ist eine lokale Variable und kann nicht mit SET GLOBAL verändert werden"
ita "La variabile '%-.64s' e' una variabile locale ( SESSION ) e non puo' essere cambiata usando SET GLOBAL"
jpn "変数 '%-.64s' ã¯ã‚»ãƒƒã‚·ãƒ§ãƒ³å¤‰æ•°ã§ã™ã€‚SET GLOBALã§ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。"
+ nla "Variabele '%-.64s' is SESSION en kan niet worden gebruikt met SET GLOBAL"
por "Variável '%-.64s' é uma SESSION variável e não pode ser usada com SET GLOBAL"
rus "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ '%-.64s' ÑвлÑетÑÑ Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð²Ð¾Ð¹ (SESSION) переменной и не может быть изменена Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ SET GLOBAL"
spa "La variable '%-.64s' es una variable de SESSION y no puede ser usada con SET GLOBAL"
swe "Variabel '%-.64s' är en SESSION variabel och kan inte ändrad med SET GLOBAL"
ER_GLOBAL_VARIABLE
- nla "Variabele '%-.64s' is GLOBAL en dient te worden gewijzigd met SET GLOBAL"
+ chi "å˜é‡'%-.64s'是全局å˜é‡ï¼Œåº”该用SET GLOBAL设置"
eng "Variable '%-.64s' is a GLOBAL variable and should be set with SET GLOBAL"
ger "Variable '%-.64s' ist eine globale Variable und muss mit SET GLOBAL verändert werden"
ita "La variabile '%-.64s' e' una variabile globale ( GLOBAL ) e deve essere cambiata usando SET GLOBAL"
jpn "変数 '%-.64s' ã¯ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã§ã™ã€‚SET GLOBALを使用ã—ã¦ãã ã•ã„。"
+ nla "Variabele '%-.64s' is GLOBAL en dient te worden gewijzigd met SET GLOBAL"
por "Variável '%-.64s' é uma GLOBAL variável e deve ser configurada com SET GLOBAL"
rus "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ '%-.64s' ÑвлÑетÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð¹ (GLOBAL) переменной, и ее Ñледует изменÑÑ‚ÑŒ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ SET GLOBAL"
spa "La variable '%-.64s' es una variable GLOBAL y debería de ser configurada con SET GLOBAL"
swe "Variabel '%-.64s' är en GLOBAL variabel och bör sättas med SET GLOBAL"
ER_NO_DEFAULT 42000
- nla "Variabele '%-.64s' heeft geen standaard waarde"
+ chi "å˜é‡'%-.64s'没有默认值"
eng "Variable '%-.64s' doesn't have a default value"
ger "Variable '%-.64s' hat keinen Vorgabewert"
ita "La variabile '%-.64s' non ha un valore di default"
jpn "変数 '%-.64s' ã«ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒã‚ã‚Šã¾ã›ã‚“。"
+ nla "Variabele '%-.64s' heeft geen standaard waarde"
por "Variável '%-.64s' não tem um valor padrão"
rus "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ '%-.64s' не имеет Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию"
spa "La variable '%-.64s' no tiene un valor por defecto"
swe "Variabel '%-.64s' har inte ett DEFAULT-värde"
ER_WRONG_VALUE_FOR_VAR 42000
- nla "Variabele '%-.64s' kan niet worden gewijzigd naar de waarde '%-.200T'"
+ chi "å˜é‡'%-.64s'无法设置为'%-.200T'的值"
eng "Variable '%-.64s' can't be set to the value of '%-.200T'"
ger "Variable '%-.64s' kann nicht auf '%-.200T' gesetzt werden"
ita "Alla variabile '%-.64s' non puo' essere assegato il valore '%-.200T'"
jpn "変数 '%-.64s' ã«å€¤ '%-.200T' を設定ã§ãã¾ã›ã‚“。"
+ nla "Variabele '%-.64s' kan niet worden gewijzigd naar de waarde '%-.200T'"
por "Variável '%-.64s' não pode ser configurada para o valor de '%-.200T'"
rus "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ '%-.64s' не может быть уÑтановлена в значение '%-.200T'"
spa "La variable '%-.64s' no puede ser configurada para el valor de '%-.200T'"
swe "Variabel '%-.64s' kan inte sättas till '%-.200T'"
ER_WRONG_TYPE_FOR_VAR 42000
- nla "Foutief argumenttype voor variabele '%-.64s'"
+ chi "å˜é‡'%-.64s'çš„å‚数类型ä¸æ­£ç¡®"
eng "Incorrect argument type to variable '%-.64s'"
ger "Falscher Argumenttyp für Variable '%-.64s'"
ita "Tipo di valore errato per la variabile '%-.64s'"
jpn "変数 '%-.64s' ã¸ã®å€¤ã®åž‹ãŒä¸æ­£ã§ã™ã€‚"
+ nla "Foutief argumenttype voor variabele '%-.64s'"
por "Tipo errado de argumento para variável '%-.64s'"
rus "Ðеверный тип аргумента Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ '%-.64s'"
spa "Tipo de argumento incorrecto para variable '%-.64s'"
swe "Fel typ av argument till variabel '%-.64s'"
ER_VAR_CANT_BE_READ
- nla "Variabele '%-.64s' kan alleen worden gewijzigd, niet gelezen"
+ chi "å˜é‡'%-.64s'åªèƒ½è®¾ç½®ï¼Œä¸èƒ½è¯»"
eng "Variable '%-.64s' can only be set, not read"
ger "Variable '%-.64s' kann nur verändert, nicht gelesen werden"
ita "Alla variabile '%-.64s' e' di sola scrittura quindi puo' essere solo assegnato un valore, non letto"
jpn "変数 '%-.64s' ã¯æ›¸ãè¾¼ã¿å°‚用ã§ã™ã€‚読ã¿è¾¼ã¿ã¯ã§ãã¾ã›ã‚“。"
+ nla "Variabele '%-.64s' kan alleen worden gewijzigd, niet gelezen"
por "Variável '%-.64s' somente pode ser configurada, não lida"
rus "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ '%-.64s' может быть только уÑтановлена, но не Ñчитана"
spa "La variable '%-.64s' solamente puede ser configurada, no leída"
swe "Variabeln '%-.64s' kan endast sättas, inte läsas"
ER_CANT_USE_OPTION_HERE 42000
- nla "Foutieve toepassing/plaatsing van '%s'"
+ chi "'%s'的使用/放置ä¸æ­£ç¡®"
eng "Incorrect usage/placement of '%s'"
ger "Falsche Verwendung oder Platzierung von '%s'"
ita "Uso/posizione di '%s' sbagliato"
jpn "'%s' ã®ä½¿ç”¨æ³•ã¾ãŸã¯å ´æ‰€ãŒä¸æ­£ã§ã™ã€‚"
+ nla "Foutieve toepassing/plaatsing van '%s'"
por "Errado uso/colocação de '%s'"
rus "Ðеверное иÑпользование или в неверном меÑте указан '%s'"
spa "Incorrecto uso/colocación de '%s'"
swe "Fel använding/placering av '%s'"
ER_NOT_SUPPORTED_YET 42000
- nla "Deze versie van MariaDB ondersteunt nog geen '%s'"
+ chi "此版本的MariaDB尚未支æŒ'%s'"
eng "This version of MariaDB doesn't yet support '%s'"
ger "Diese MariaDB-Version unterstützt '%s' nicht"
ita "Questa versione di MariaDB non supporta ancora '%s'"
jpn "ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®MariaDBã§ã¯ã€ã¾ã  '%s' を利用ã§ãã¾ã›ã‚“。"
+ nla "Deze versie van MariaDB ondersteunt nog geen '%s'"
por "Esta versão de MariaDB não suporta ainda '%s'"
rus "Эта верÑÐ¸Ñ MariaDB пока еще не поддерживает '%s'"
spa "Esta versión de MariaDB no soporta todavía '%s'"
swe "Denna version av MariaDB kan ännu inte utföra '%s'"
ER_MASTER_FATAL_ERROR_READING_BINLOG
- nla "Kreeg fatale fout %d: '%-.320s' van master tijdens lezen van data uit binaire log"
+ chi "从二进制日志读å–æ•°æ®æ—¶ï¼Œä»Žmasteré‡åˆ°è‡´å‘½é”™è¯¯%d:'%-.320s'"
eng "Got fatal error %d from master when reading data from binary log: '%-.320s'"
ger "Schwerer Fehler %d: '%-.320s vom Master beim Lesen des binären Logs"
ita "Errore fatale %d: '%-.320s' dal master leggendo i dati dal log binario"
jpn "致命的ãªã‚¨ãƒ©ãƒ¼ %d: '%-.320s' ãŒãƒžã‚¹ã‚¿ãƒ¼ã§ãƒã‚¤ãƒŠãƒªãƒ­ã‚°èª­ã¿è¾¼ã¿ä¸­ã«ç™ºç”Ÿã—ã¾ã—ãŸã€‚"
+ nla "Kreeg fatale fout %d: '%-.320s' van master tijdens lezen van data uit binaire log"
por "Obteve fatal erro %d: '%-.320s' do master quando lendo dados do binary log"
rus "Получена неиÑÐ¿Ñ€Ð°Ð²Ð¸Ð¼Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %d: '%-.320s' от головного Ñервера в процеÑÑе выборки данных из двоичного журнала"
spa "Obtenido error fatal %d del maestro (master) al leer datos del historial (log) binario: '%-.320s'"
swe "Fick fatalt fel %d: '%-.320s' från master vid läsning av binärloggen"
ER_SLAVE_IGNORED_TABLE
+ chi "由于å¤åˆ¶replicate-*-table规则,Slave SQL线程忽略了查询"
eng "Slave SQL thread ignored the query because of replicate-*-table rules"
ger "Slave-SQL-Thread hat die Abfrage aufgrund von replicate-*-table-Regeln ignoriert"
jpn "replicate-*-table ルールã«å¾“ã£ã¦ã€ã‚¹ãƒ¬ãƒ¼ãƒ–SQLスレッドã¯ã‚¯ã‚¨ãƒªã‚’無視ã—ã¾ã—ãŸã€‚"
@@ -4776,14 +5007,16 @@ ER_SLAVE_IGNORED_TABLE
spa "El hilo (thread) SQL esclavo ha ignorado la consulta (query) debido a las reglas de replicar-*-tabla"
swe "Slav SQL tråden ignorerade frågan pga en replicate-*-table regel"
ER_INCORRECT_GLOBAL_LOCAL_VAR
+ chi "å˜é‡'%-.192s'是一个%så˜é‡"
eng "Variable '%-.192s' is a %s variable"
- serbian "Promenljiva '%-.192s' je %s promenljiva"
ger "Variable '%-.192s' ist eine %s-Variable"
jpn "変数 '%-.192s' 㯠%s 変数ã§ã™ã€‚"
nla "Variabele '%-.192s' is geen %s variabele"
+ serbian "Promenljiva '%-.192s' je %s promenljiva"
spa "La variable '%-.192s' es una variable %s"
swe "Variabel '%-.192s' är av typ %s"
ER_WRONG_FK_DEF 42000
+ chi "'%-.192s'的外键定义ä¸æ­£ç¡®ï¼š%s"
eng "Incorrect foreign key definition for '%-.192s': %s"
ger "Falsche Fremdschlüssel-Definition für '%-.192s': %s"
jpn "外部キー '%-.192s' ã®å®šç¾©ã®ä¸æ­£: %s"
@@ -4792,6 +5025,7 @@ ER_WRONG_FK_DEF 42000
spa "Definición de clave foránea incorrecta para '%-.192s': %s"
swe "Felaktig FOREIGN KEY-definition för '%-.192s': %s"
ER_KEY_REF_DO_NOT_MATCH_TABLE_REF
+ chi "索引å‚考和表å‚考ä¸åŒ¹é…"
eng "Key reference and table reference don't match"
ger "Schlüssel- und Tabellenverweis passen nicht zusammen"
jpn "外部キーã®å‚照表ã¨å®šç¾©ãŒä¸€è‡´ã—ã¾ã›ã‚“。"
@@ -4800,6 +5034,7 @@ ER_KEY_REF_DO_NOT_MATCH_TABLE_REF
spa "La referencia de clave y la referencia de tabla no coinciden"
swe "Nyckelreferensen och tabellreferensen stämmer inte överens"
ER_OPERAND_COLUMNS 21000
+ chi "æ“作数应包å«%d列"
eng "Operand should contain %d column(s)"
ger "Operand sollte %d Spalte(n) enthalten"
jpn "オペランド㫠%d 個ã®åˆ—ãŒå¿…è¦ã§ã™ã€‚"
@@ -4808,6 +5043,7 @@ ER_OPERAND_COLUMNS 21000
spa "El operando debería de contener %d columna(s)"
ukr "Операнд має ÑкладатиÑÑ Ð· %d Ñтовбців"
ER_SUBQUERY_NO_1_ROW 21000
+ chi "å­æŸ¥è¯¢è¿”回超过1è¡Œ"
eng "Subquery returns more than 1 row"
ger "Unterabfrage lieferte mehr als einen Datensatz zurück"
jpn "サブクエリãŒ2行以上ã®çµæžœã‚’è¿”ã—ã¾ã™ã€‚"
@@ -4818,6 +5054,7 @@ ER_SUBQUERY_NO_1_ROW 21000
swe "Subquery returnerade mer än 1 rad"
ukr "Підзапит повертає більш нiж 1 запиÑ"
ER_UNKNOWN_STMT_HANDLER
+ chi "未知prepared statement处ç†ç¨‹åº(%.*s)给予%s"
dan "Unknown prepared statement handler (%.*s) given to %s"
eng "Unknown prepared statement handler (%.*s) given to %s"
ger "Unbekannter Prepared-Statement-Handler (%.*s) für %s angegeben"
@@ -4828,6 +5065,7 @@ ER_UNKNOWN_STMT_HANDLER
swe "Okänd PREPARED STATEMENT id (%.*s) var given till %s"
ukr "Unknown prepared statement handler (%.*s) given to %s"
ER_CORRUPT_HELP_DB
+ chi "帮助数æ®åº“å·²æŸå或ä¸å­˜åœ¨"
eng "Help database is corrupt or does not exist"
ger "Die Hilfe-Datenbank ist beschädigt oder existiert nicht"
jpn "ヘルプデータベースã¯å£Šã‚Œã¦ã„ã‚‹ã‹å­˜åœ¨ã—ã¾ã›ã‚“。"
@@ -4836,6 +5074,7 @@ ER_CORRUPT_HELP_DB
spa "O la Base de datos de Ayuda está corrupta o no existe"
swe "Hjälpdatabasen finns inte eller är skadad"
ER_CYCLIC_REFERENCE
+ chi "亚查询的死环å‚考"
eng "Cyclic reference on subqueries"
ger "Zyklischer Verweis in Unterabfragen"
jpn "サブクエリã®å‚ç…§ãŒãƒ«ãƒ¼ãƒ—ã—ã¦ã„ã¾ã™ã€‚"
@@ -4846,6 +5085,7 @@ ER_CYCLIC_REFERENCE
swe "Cyklisk referens i subqueries"
ukr "Циклічне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° підзапит"
ER_AUTO_CONVERT
+ chi "将列'%s'从%s转æ¢ä¸º%s"
eng "Converting column '%s' from %s to %s"
ger "Feld '%s' wird von %s nach %s umgewandelt"
jpn "列 '%s' ã‚’ %s ã‹ã‚‰ %s ã¸å¤‰æ›ã—ã¾ã™ã€‚"
@@ -4856,6 +5096,7 @@ ER_AUTO_CONVERT
swe "Konvertar kolumn '%s' från %s till %s"
ukr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñтовбца '%s' з %s у %s"
ER_ILLEGAL_REFERENCE 42S22
+ chi "å‚考'%-.64s'ä¸æ”¯æŒ(%s)"
eng "Reference '%-.64s' not supported (%s)"
ger "Verweis '%-.64s' wird nicht unterstützt (%s)"
jpn "'%-.64s' ã®å‚ç…§ã¯ã§ãã¾ã›ã‚“。(%s)"
@@ -4866,6 +5107,7 @@ ER_ILLEGAL_REFERENCE 42S22
swe "Referens '%-.64s' stöds inte (%s)"
ukr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ '%-.64s' не пiдтримуетÑÑ (%s)"
ER_DERIVED_MUST_HAVE_ALIAS 42000
+ chi "æ¯ä¸ªæ´¾ç”Ÿçš„表必须有自己的别å"
eng "Every derived table must have its own alias"
ger "Für jede abgeleitete Tabelle muss ein eigener Alias angegeben werden"
jpn "導出表ã«ã¯åˆ¥åãŒå¿…é ˆã§ã™ã€‚"
@@ -4874,6 +5116,7 @@ ER_DERIVED_MUST_HAVE_ALIAS 42000
spa "Cada tabla derivada debe de tener su propio alias"
swe "Varje 'derived table' måste ha sitt eget alias"
ER_SELECT_REDUCED 01000
+ chi "SELECT %u在优化期间被å‡"
eng "Select %u was reduced during optimization"
ger "Select %u wurde während der Optimierung reduziert"
jpn "Select %u ã¯æœ€é©åŒ–ã«ã‚ˆã£ã¦æ¸›ã‚‰ã•ã‚Œã¾ã—ãŸã€‚"
@@ -4884,6 +5127,7 @@ ER_SELECT_REDUCED 01000
swe "Select %u reducerades vid optimiering"
ukr "Select %u was ÑкаÑовано при оптимiзацii"
ER_TABLENAME_NOT_ALLOWED_HERE 42000
+ chi "表'%-.192s'从其中一个SELECT中ä¸èƒ½ç”¨äºŽ%-.32s"
eng "Table '%-.192s' from one of the SELECTs cannot be used in %-.32s"
ger "Tabelle '%-.192s', die in einem der SELECT-Befehle verwendet wurde, kann nicht in %-.32s verwendet werden"
jpn "特定ã®SELECTã®ã¿ã§ä½¿ç”¨ã®è¡¨ '%-.192s' 㯠%-.32s ã§ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。"
@@ -4892,6 +5136,7 @@ ER_TABLENAME_NOT_ALLOWED_HERE 42000
spa "La tabla '%-.192s' de uno de los SELECT no puede ser usada en %-.32s"
swe "Tabell '%-.192s' från en SELECT kan inte användas i %-.32s"
ER_NOT_SUPPORTED_AUTH_MODE 08004
+ chi "客户端ä¸æ”¯æŒæœåŠ¡å™¨è¯·æ±‚的身份验è¯åè®®;考虑å‡çº§MariaDB客户端"
eng "Client does not support authentication protocol requested by server; consider upgrading MariaDB client"
ger "Client unterstützt das vom Server erwartete Authentifizierungsprotokoll nicht. Bitte aktualisieren Sie Ihren MariaDB-Client"
jpn "クライアントã¯ã‚µãƒ¼ãƒãƒ¼ãŒè¦æ±‚ã™ã‚‹èªè¨¼ãƒ—ロトコルã«å¯¾å¿œã§ãã¾ã›ã‚“。MariaDBクライアントã®ã‚¢ãƒƒãƒ—グレードを検討ã—ã¦ãã ã•ã„。"
@@ -4900,6 +5145,7 @@ ER_NOT_SUPPORTED_AUTH_MODE 08004
spa "El cliente no soporta protocolo de autenticación requerido por el servidor; considere mejorar el cliente MariaDB"
swe "Klienten stöder inte autentiseringsprotokollet som begärts av servern; överväg uppgradering av klientprogrammet"
ER_SPATIAL_CANT_HAVE_NULL 42000
+ chi "SPATIAL索引的所有部分必须ä¸ä¸ºnull"
eng "All parts of a SPATIAL index must be NOT NULL"
ger "Alle Teile eines SPATIAL-Index müssen als NOT NULL deklariert sein"
jpn "空間索引ã®ã‚­ãƒ¼åˆ—㯠NOT NULL ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“。"
@@ -4908,6 +5154,7 @@ ER_SPATIAL_CANT_HAVE_NULL 42000
spa "Todas las partes de un índice SPATIAL deben de ser NOT NULL"
swe "Alla delar av en SPATIAL index måste vara NOT NULL"
ER_COLLATION_CHARSET_MISMATCH 42000
+ chi "COLLATION'%s'无效地用于字符集'%s'"
eng "COLLATION '%s' is not valid for CHARACTER SET '%s'"
ger "COLLATION '%s' ist für CHARACTER SET '%s' ungültig"
jpn "COLLATION '%s' 㯠CHARACTER SET '%s' ã«é©ç”¨ã§ãã¾ã›ã‚“。"
@@ -4916,6 +5163,7 @@ ER_COLLATION_CHARSET_MISMATCH 42000
spa "El COTEJO (COLLATION) '%s' no es válido para CHARACTER SET '%s'"
swe "COLLATION '%s' är inte tillåtet för CHARACTER SET '%s'"
ER_SLAVE_WAS_RUNNING
+ chi "Slaveå·²ç»åœ¨è¿è¡Œ"
eng "Slave is already running"
ger "Slave läuft bereits"
jpn "スレーブã¯ã™ã§ã«ç¨¼åƒä¸­ã§ã™ã€‚"
@@ -4924,6 +5172,7 @@ ER_SLAVE_WAS_RUNNING
spa "El esclavo ya está funcionando"
swe "Slaven har redan startat"
ER_SLAVE_WAS_NOT_RUNNING
+ chi "slaveå·²ç»åœæ­¢äº†"
eng "Slave already has been stopped"
ger "Slave wurde bereits angehalten"
jpn "スレーブã¯ã™ã§ã«åœæ­¢ã—ã¦ã„ã¾ã™ã€‚"
@@ -4932,6 +5181,7 @@ ER_SLAVE_WAS_NOT_RUNNING
spa "El esclavo ya fué parado"
swe "Slaven har redan stoppat"
ER_TOO_BIG_FOR_UNCOMPRESS
+ chi "未压缩的数æ®é‡å¤ªå¤§;最大é‡ä¸º%d(å¯èƒ½æœªåŽ‹ç¼©æ•°æ®çš„长度已æŸå)"
eng "Uncompressed data size too large; the maximum size is %d (probably, length of uncompressed data was corrupted)"
ger "Unkomprimierte Daten sind zu groß. Die maximale Größe beträgt %d (wahrscheinlich wurde die Länge der unkomprimierten Daten beschädigt)"
jpn "展開後ã®ãƒ‡ãƒ¼ã‚¿ãŒå¤§ãã™ãŽã¾ã™ã€‚最大サイズ㯠%d ã§ã™ã€‚(展開後データã®é•·ã•æƒ…å ±ãŒå£Šã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ã‚‚ã‚ã‚Šã¾ã™ã€‚)"
@@ -4939,6 +5189,7 @@ ER_TOO_BIG_FOR_UNCOMPRESS
por "Tamanho muito grande dos dados des comprimidos. O máximo tamanho é %d. (provavelmente, o comprimento dos dados descomprimidos está corrupto)"
spa "Tamaño demasiado grande para datos descomprimidos; el máximo tamaño es %d. (probablemente, el tamaño de datos descomprimidos fué corrompido)"
ER_ZLIB_Z_MEM_ERROR
+ chi "ZLIB:内存ä¸è¶³"
eng "ZLIB: Not enough memory"
ger "ZLIB: Nicht genug Speicher"
jpn "ZLIB: メモリä¸è¶³ã§ã™ã€‚"
@@ -4946,6 +5197,7 @@ ER_ZLIB_Z_MEM_ERROR
por "ZLIB: Não suficiente memória disponível"
spa "ZLIB: No hay suficiente memoria"
ER_ZLIB_Z_BUF_ERROR
+ chi "ZLIB:输出缓冲区中没有足够的空间(å¯èƒ½æœªåŽ‹ç¼©æ•°æ®çš„长度已æŸå)"
eng "ZLIB: Not enough room in the output buffer (probably, length of uncompressed data was corrupted)"
ger "ZLIB: Im Ausgabepuffer ist nicht genug Platz vorhanden (wahrscheinlich wurde die Länge der unkomprimierten Daten beschädigt)"
jpn "ZLIB: 出力ãƒãƒƒãƒ•ã‚¡ã«å分ãªç©ºããŒã‚ã‚Šã¾ã›ã‚“。(展開後データã®é•·ã•æƒ…å ±ãŒå£Šã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ã‚‚ã‚ã‚Šã¾ã™ã€‚)"
@@ -4953,6 +5205,7 @@ ER_ZLIB_Z_BUF_ERROR
por "ZLIB: Não suficiente espaço no buffer emissor (provavelmente, o comprimento dos dados descomprimidos está corrupto)"
spa "ZLIB: No hay suficiente espacio en el búfer de salida (probablemente, el tamaño de datos descomprimidos fué corrompido)"
ER_ZLIB_Z_DATA_ERROR
+ chi "ZLIB:输入数æ®å·²æŸå"
eng "ZLIB: Input data corrupted"
ger "ZLIB: Eingabedaten beschädigt"
jpn "ZLIB: 入力データãŒå£Šã‚Œã¦ã„ã¾ã™ã€‚"
@@ -4960,9 +5213,11 @@ ER_ZLIB_Z_DATA_ERROR
por "ZLIB: Dados de entrada está corrupto"
spa "ZLIB: Dato de entrada corrupto"
ER_CUT_VALUE_GROUP_CONCAT
+ chi "group_concat()削å‡äº†è¡Œ%u. %s"
eng "Row %u was cut by %s)"
spa "La fila %u ha sido cortada por %s)"
ER_WARN_TOO_FEW_RECORDS 01000
+ chi "è¡Œ%luä¸åŒ…å«æ‰€æœ‰åˆ—çš„æ•°æ®"
eng "Row %lu doesn't contain data for all columns"
ger "Zeile %lu enthält nicht für alle Felder Daten"
jpn "è¡Œ %lu ã¯ã™ã¹ã¦ã®åˆ—ã¸ã®ãƒ‡ãƒ¼ã‚¿ã‚’å«ã‚“ã§ã„ã¾ã›ã‚“。"
@@ -4970,6 +5225,7 @@ ER_WARN_TOO_FEW_RECORDS 01000
por "Conta de registro é menor que a conta de coluna na linha %lu"
spa "La fila %lu no contiene datos para todas las columnas"
ER_WARN_TOO_MANY_RECORDS 01000
+ chi "è¡Œ%lu被截断;它包å«çš„æ•°æ®æ¯”输入列更多"
eng "Row %lu was truncated; it contained more data than there were input columns"
ger "Zeile %lu gekürzt, die Zeile enthielt mehr Daten, als es Eingabefelder gibt"
jpn "è¡Œ %lu ã¯ãƒ‡ãƒ¼ã‚¿ã‚’切りæ¨ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚列よりも多ã„データをå«ã‚“ã§ã„ã¾ã—ãŸã€‚"
@@ -4977,21 +5233,25 @@ ER_WARN_TOO_MANY_RECORDS 01000
por "Conta de registro é maior que a conta de coluna na linha %lu"
spa "La fila %lu fué truncada; contenía más datos que columnas de entrada"
ER_WARN_NULL_TO_NOTNULL 22004
+ chi "列设置为默认值; NULL在行'%s'中æ供给了NOT NULL列%lu"
eng "Column set to default value; NULL supplied to NOT NULL column '%s' at row %lu"
ger "Feld auf Vorgabewert gesetzt, da NULL für NOT-NULL-Feld '%s' in Zeile %lu angegeben"
jpn "列ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒè¨­å®šã•ã‚Œã¾ã—ãŸã€‚NOT NULLã®åˆ— '%s' ã« è¡Œ %lu 㧠NULL ãŒä¸Žãˆã‚‰ã‚Œã¾ã—ãŸã€‚"
por "Dado truncado, NULL fornecido para NOT NULL coluna '%s' na linha %lu"
spa "Columna puesta a valor por defecto; NULL suministrado para columna NOT NULL '%s' en la fila %lu"
ER_WARN_DATA_OUT_OF_RANGE 22003
+ chi "列'%s'行%lu的值超出范围"
eng "Out of range value for column '%s' at row %lu"
spa "Valor fuera de rango para la columna '%s' en la fila %lu"
WARN_DATA_TRUNCATED 01000
+ chi "æ•°æ®è¢«æˆªæ–­ï¼Œåœ¨åˆ—'%s', è¡Œ%lu"
eng "Data truncated for column '%s' at row %lu"
ger "Daten abgeschnitten für Feld '%s' in Zeile %lu"
jpn "列 '%s' ã® è¡Œ %lu ã§ãƒ‡ãƒ¼ã‚¿ãŒåˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚"
por "Dado truncado para coluna '%s' na linha %lu"
spa "Datos truncados para la columna '%s' en la fila %lu"
ER_WARN_USING_OTHER_HANDLER
+ chi "使用存储引擎%s 表格'%s'"
eng "Using storage engine %s for table '%s'"
ger "Speicher-Engine %s wird für Tabelle '%s' benutzt"
hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s का इसà¥à¤¤à¥‡à¤®à¤¾à¤² टेबल '%s' के लिठकिया जा रहा है"
@@ -5000,52 +5260,61 @@ ER_WARN_USING_OTHER_HANDLER
spa "Usando motor de almacenaje %s para la tabla '%s'"
swe "Använder handler %s för tabell '%s'"
ER_CANT_AGGREGATE_2COLLATIONS
+ chi "éžæ³•æ··åˆcollations(%s,%s)和(%s,%s),用于æ“作'%s'"
eng "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'"
ger "Unerlaubte Mischung von Sortierreihenfolgen (%s, %s) und (%s, %s) für Operation '%s'"
jpn "ç…§åˆé †åº (%s,%s) 㨠(%s,%s) ã®æ··åœ¨ã¯æ“作 '%s' ã§ã¯ä¸æ­£ã§ã™ã€‚"
por "Combinação ilegal de collations (%s,%s) e (%s,%s) para operação '%s'"
spa "Mezcla ilegal de cotejos (collations) (%s,%s) y (%s,%s) para la operación '%s'"
ER_DROP_USER
+ chi "无法删除一个或多个请求的用户"
eng "Cannot drop one or more of the requested users"
ger "Kann einen oder mehrere der angegebenen Benutzer nicht löschen"
spa "No puedo eliminar uno o más de los usuarios solicitados"
ER_REVOKE_GRANTS
+ chi "无法为一个或多个请求的用户撤消所有æƒé™"
eng "Can't revoke all privileges for one or more of the requested users"
ger "Kann nicht alle Berechtigungen widerrufen, die für einen oder mehrere Benutzer gewährt wurden"
jpn "指定ã•ã‚ŒãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰æŒ‡å®šã•ã‚ŒãŸå…¨ã¦ã®æ¨©é™ã‚’剥奪ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
por "Não pode revocar todos os privilégios, grant para um ou mais dos usuários pedidos"
spa "No puedo revocar todos los privilegios para uno o más de los usuarios solicitados"
ER_CANT_AGGREGATE_3COLLATIONS
+ chi "éžæ³•æ··åˆcollations(%s,%s),(%s,%s)和(%s,%s),用于æ“作'%s'"
eng "Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'"
ger "Unerlaubte Mischung von Sortierreihenfolgen (%s, %s), (%s, %s), (%s, %s) für Operation '%s'"
jpn "ç…§åˆé †åº (%s,%s), (%s,%s), (%s,%s) ã®æ··åœ¨ã¯æ“作 '%s' ã§ã¯ä¸æ­£ã§ã™ã€‚"
por "Ilegal combinação de collations (%s,%s), (%s,%s), (%s,%s) para operação '%s'"
spa "Mezcla ilegal de cotejos (collations) (%s,%s), (%s,%s), (%s,%s) para la operación '%s'"
ER_CANT_AGGREGATE_NCOLLATIONS
+ chi "éžæ³•æ··åˆcollationsæ“作'%s'"
eng "Illegal mix of collations for operation '%s'"
ger "Unerlaubte Mischung von Sortierreihenfolgen für Operation '%s'"
jpn "æ“作 '%s' ã§ã¯ä¸æ­£ãªç…§åˆé †åºã®æ··åœ¨ã§ã™ã€‚"
por "Ilegal combinação de collations para operação '%s'"
spa "Mezcla ilegal de cotejos (collations) para la operación '%s'"
ER_VARIABLE_IS_NOT_STRUCT
+ chi "å˜é‡'%-.64s'ä¸æ˜¯å¯å˜ç»„件(ä¸èƒ½ç”¨ä½œxxxx.variable_name)"
eng "Variable '%-.64s' is not a variable component (can't be used as XXXX.variable_name)"
ger "Variable '%-.64s' ist keine Variablen-Komponente (kann nicht als XXXX.variablen_name verwendet werden)"
jpn "変数 '%-.64s' ã¯æ§‹é€ å¤‰æ•°ã®æ§‹æˆè¦ç´ ã§ã¯ã‚ã‚Šã¾ã›ã‚“。(XXXX.変数å ã¨ã„ã†æŒ‡å®šã¯ã§ãã¾ã›ã‚“。)"
por "Variável '%-.64s' não é uma variável componente (Não pode ser usada como XXXX.variável_nome)"
spa "La variable '%-.64s' no es un componente variable (No puede ser usada como XXXX.variable_name)"
ER_UNKNOWN_COLLATION
+ chi "未知的collation:'%-.64s'"
eng "Unknown collation: '%-.64s'"
ger "Unbekannte Sortierreihenfolge: '%-.64s'"
jpn "ä¸æ˜Žãªç…§åˆé †åº: '%-.64s'"
por "Collation desconhecida: '%-.64s'"
spa "Cotejo (Collation) desconocido: '%-.64s'"
ER_SLAVE_IGNORED_SSL_PARAMS
+ chi "CHANGE MASTER中的SSLå‚数被忽略,因为此MariaDB从站未在没有SSL支æŒçš„情况下编译;如果å¯åŠ¨äº†SSLçš„MariaDB从站,则å¯ä»¥ä½¿ç”¨å®ƒä»¬"
eng "SSL parameters in CHANGE MASTER are ignored because this MariaDB slave was compiled without SSL support; they can be used later if MariaDB slave with SSL is started"
ger "SSL-Parameter in CHANGE MASTER werden ignoriert, weil dieser MariaDB-Slave ohne SSL-Unterstützung kompiliert wurde. Sie können aber später verwendet werden, wenn ein MariaDB-Slave mit SSL gestartet wird"
jpn "ã“ã®MariaDBスレーブã¯SSLサãƒãƒ¼ãƒˆã‚’å«ã‚ã¦ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ãªã„ã®ã§ã€CHANGE MASTER ã®SSLパラメータã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸã€‚今後SSLサãƒãƒ¼ãƒˆã‚’æŒã¤MariaDBスレーブを起動ã™ã‚‹éš›ã«åˆ©ç”¨ã•ã‚Œã¾ã™ã€‚"
por "SSL parâmetros em CHANGE MASTER são ignorados porque este escravo MariaDB foi compilado sem o SSL suporte. Os mesmos podem ser usados mais tarde quando o escravo MariaDB com SSL seja iniciado."
spa "Los parámetros SSL en CHANGE MASTER son ignorados porque este esclavo MariaDB fue compilado sin soporte SSL; pueden ser usados después cuando el esclavo MariaDB con SSL sea arrancado"
ER_SERVER_IS_IN_SECURE_AUTH_MODE
+ chi "æœåŠ¡å™¨åœ¨--secure-auth模å¼ä¸‹è¿è¡Œï¼Œä½†'%s'@'%s'具有旧格å¼çš„密ç ;请将密ç æ›´æ”¹ä¸ºæ–°æ ¼å¼"
eng "Server is running in --secure-auth mode, but '%s'@'%s' has a password in the old format; please change the password to the new format"
ger "Server läuft im Modus --secure-auth, aber '%s'@'%s' hat ein Passwort im alten Format. Bitte Passwort ins neue Format ändern"
jpn "サーãƒãƒ¼ã¯ --secure-auth モードã§ç¨¼åƒã—ã¦ã„ã¾ã™ã€‚ã—ã‹ã— '%s'@'%s' ã¯å¤ã„å½¢å¼ã®ãƒ‘スワードを使用ã—ã¦ã„ã¾ã™ã€‚æ–°ã—ã„å½¢å¼ã®ãƒ‘スワードã«å¤‰æ›´ã—ã¦ãã ã•ã„。"
@@ -5053,6 +5322,7 @@ ER_SERVER_IS_IN_SECURE_AUTH_MODE
rus "Сервер запущен в режиме --secure-auth (безопаÑной авторизации), но Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ '%s'@'%s' пароль Ñохранён в Ñтаром формате; необходимо обновить формат паролÑ"
spa "El servidor se está ejecutando en modo --secure-auth, pero '%s'@'%s' tiene una contraseña con formato antiguo; por favor cambie la contraseña al nuevo formato"
ER_WARN_FIELD_RESOLVED
+ chi "列或å‚考'%-.192s%s%-.192s%s%-.192s' 在SELECT #%d 中, 在SELECT #%d中得到解决"
eng "Field or reference '%-.192s%s%-.192s%s%-.192s' of SELECT #%d was resolved in SELECT #%d"
ger "Feld oder Verweis '%-.192s%s%-.192s%s%-.192s' im SELECT-Befehl Nr. %d wurde im SELECT-Befehl Nr. %d aufgelöst"
jpn "フィールドã¾ãŸã¯å‚ç…§ '%-.192s%s%-.192s%s%-.192s' 㯠SELECT #%d ã§ã¯ãªãã€SELECT #%d ã§è§£æ±ºã•ã‚Œã¾ã—ãŸã€‚"
@@ -5061,24 +5331,28 @@ ER_WARN_FIELD_RESOLVED
spa "El campo o la referencia '%-.192s%s%-.192s%s%-.192s' de SELECT #%d se resolvió en SELECT #%d"
ukr "Стовбець або поÑÐ¸Ð»Ð°Ð½Ð½Ñ '%-.192s%s%-.192s%s%-.192s' із SELECTу #%d було знайдене у SELECTÑ– #%d"
ER_BAD_SLAVE_UNTIL_COND
+ chi "START SLAVE UNTILçš„å‚数或å‚数的组åˆä¸æ­£ç¡®"
eng "Incorrect parameter or combination of parameters for START SLAVE UNTIL"
ger "Falscher Parameter oder falsche Kombination von Parametern für START SLAVE UNTIL"
jpn "START SLAVE UNTIL ã¸ã®ãƒ‘ラメータã¾ãŸã¯ãã®çµ„ã¿åˆã‚ã›ãŒä¸æ­£ã§ã™ã€‚"
por "Parâmetro ou combinação de parâmetros errado para START SLAVE UNTIL"
spa "Parámetro incorrecto o combinación de parámetros para START SLAVE UNTIL"
ER_MISSING_SKIP_SLAVE
+ chi "START SLAVE UNTIL进行é€æ­¥å¤åˆ¶æ—¶å»ºè®®ä½¿ç”¨--skip-slave-start;å¦åˆ™ï¼Œå¦‚果有æ„外的Slaveçš„mariadbdé‡å¯ï¼Œå¯èƒ½æœ‰é—®é¢˜"
eng "It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mariadbd restart"
ger "Es wird empfohlen, mit --skip-slave-start zu starten, wenn mit START SLAVE UNTIL eine Schritt-für-Schritt-Replikation ausgeführt wird. Ansonsten gibt es Probleme, wenn ein Slave-Server unerwartet neu startet"
jpn "START SLAVE UNTIL ã§æ®µéšŽçš„ã«ãƒ¬ãƒ—リケーションを行ã†éš›ã«ã¯ã€--skip-slave-start オプションを使ã†ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚使ã‚ãªã„å ´åˆã€ã‚¹ãƒ¬ãƒ¼ãƒ–ã®mariadbdãŒä¸æ…®ã®å†èµ·å‹•ã‚’ã™ã‚‹ã¨å•é¡ŒãŒç™ºç”Ÿã—ã¾ã™ã€‚"
por "É recomendado para rodar com --skip-slave-start quando fazendo replicação passo-por-passo com START SLAVE UNTIL, de outra forma você não está seguro em caso de inesperada reinicialição do mariadbd escravo"
spa "Se recomienda usar --skip-slave-start al hacer réplica paso a paso con START SLAVE UNTIL; en caso contrario, obtendrá problemas si tiene lugar un rearranque inesperado del esclavo mariadb"
ER_UNTIL_COND_IGNORED
+ chi "ä¸èƒ½å¯åŠ¨SQL线程所以UNTIL选项被忽略"
eng "SQL thread is not to be started so UNTIL options are ignored"
ger "SQL-Thread soll nicht gestartet werden. Daher werden UNTIL-Optionen ignoriert"
jpn "スレーブSQLスレッドãŒé–‹å§‹ã•ã‚Œãªã„ãŸã‚ã€UNTILオプションã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸã€‚"
por "Thread SQL não pode ser inicializado tal que opções UNTIL são ignoradas"
spa "Un hilo (thread) SQL no ha de ser arrancado de esa manera HASTA que las opciones sean ignordas"
ER_WRONG_NAME_FOR_INDEX 42000
+ chi "索引å称'%-.100s'ä¸æ­£ç¡®"
eng "Incorrect index name '%-.100s'"
ger "Falscher Indexname '%-.100s'"
jpn "索引å '%-.100s' ã¯ä¸æ­£ã§ã™ã€‚"
@@ -5086,6 +5360,7 @@ ER_WRONG_NAME_FOR_INDEX 42000
spa "Nombre de índice incorrecto '%-.100s'"
swe "Felaktigt index namn '%-.100s'"
ER_WRONG_NAME_FOR_CATALOG 42000
+ chi "目录å称'%-.100s'ä¸æ­£ç¡®"
eng "Incorrect catalog name '%-.100s'"
ger "Falscher Katalogname '%-.100s'"
jpn "カタログå '%-.100s' ã¯ä¸æ­£ã§ã™ã€‚"
@@ -5093,6 +5368,7 @@ ER_WRONG_NAME_FOR_CATALOG 42000
spa "Nombre de catálogo incorrecto '%-.100s'"
swe "Felaktigt katalog namn '%-.100s'"
ER_WARN_QC_RESIZE
+ chi "设置查询缓存值%llu失败;新查询缓存值为%lu"
eng "Query cache failed to set size %llu; new query cache size is %lu"
ger "Änderung der Query-Cache-Größe auf %llu fehlgeschlagen; neue Query-Cache-Größe ist %lu"
por "Falha em Query cache para configurar tamanho %llu, novo tamanho de query cache é %lu"
@@ -5101,6 +5377,7 @@ ER_WARN_QC_RESIZE
swe "Storleken av "Query cache" kunde inte sättas till %llu, ny storlek är %lu"
ukr "Кеш запитів неÑпроможен вÑтановити розмір %llu, новий розмір кеша запитів - %lu"
ER_BAD_FT_COLUMN
+ chi "列'%-.192s'ä¸èƒ½æˆä¸ºå…¨æ–‡ç´¢å¼•çš„一部分"
eng "Column '%-.192s' cannot be part of FULLTEXT index"
ger "Feld '%-.192s' kann nicht Teil eines FULLTEXT-Index sein"
jpn "列 '%-.192s' ã¯å…¨æ–‡ç´¢å¼•ã®ã‚­ãƒ¼ã«ã¯ã§ãã¾ã›ã‚“。"
@@ -5108,6 +5385,7 @@ ER_BAD_FT_COLUMN
spa "La columna '%-.192s' no puede format parte de índice FULLTEXT"
swe "Kolumn '%-.192s' kan inte vara del av ett FULLTEXT index"
ER_UNKNOWN_KEY_CACHE
+ chi "未知索引缓存'%-.100s'"
eng "Unknown key cache '%-.100s'"
ger "Unbekannter Schlüssel-Cache '%-.100s'"
jpn "'%-.100s' ã¯ä¸æ˜Žãªã‚­ãƒ¼ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã§ã™ã€‚"
@@ -5115,12 +5393,14 @@ ER_UNKNOWN_KEY_CACHE
spa "Caché de clave desconocida '%-.100s'"
swe "Okänd nyckel cache '%-.100s'"
ER_WARN_HOSTNAME_WONT_WORK
+ chi "MariaDB以-skip-name-resolve模å¼å¯åŠ¨;想用grant,您必须é‡æ–°å¯åŠ¨ï¼Œä¸ç”¨è¿™ä¸ªé€‰é¡¹"
eng "MariaDB is started in --skip-name-resolve mode; you must restart it without this switch for this grant to work"
ger "MariaDB wurde mit --skip-name-resolve gestartet. Diese Option darf nicht verwendet werden, damit diese Rechtevergabe möglich ist"
jpn "MariaDB㯠--skip-name-resolve モードã§èµ·å‹•ã—ã¦ã„ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションを外ã—ã¦å†èµ·å‹•ã—ãªã‘ã‚Œã°ã€ã“ã®æ¨©é™æ“作ã¯æ©Ÿèƒ½ã—ã¾ã›ã‚“。"
por "MariaDB foi inicializado em modo --skip-name-resolve. Você necesita reincializá-lo sem esta opção para este grant funcionar"
spa "MariaDB ha sido arrancada en modo --skip-name-resolve; vd necesita reinicializarla sin esta opción para que esta concesión funcione"
ER_UNKNOWN_STORAGE_ENGINE 42000
+ chi "未知的存储引擎'%s'"
eng "Unknown storage engine '%s'"
ger "Unbekannte Speicher-Engine '%s'"
hindi "अजà¥à¤žà¤¾à¤¤ सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन '%s'"
@@ -5128,12 +5408,14 @@ ER_UNKNOWN_STORAGE_ENGINE 42000
por "Motor de tabela desconhecido '%s'"
spa "Motor de almacenaje '%s' desconocido"
ER_WARN_DEPRECATED_SYNTAX
+ chi "弃用'%s',将在将æ¥çš„版本中删除。请使用%s"
eng "'%s' is deprecated and will be removed in a future release. Please use %s instead"
ger "'%s' ist veraltet. Bitte benutzen Sie '%s'"
jpn "'%s' ã¯å°†æ¥ã®ãƒªãƒªãƒ¼ã‚¹ã§å»ƒæ­¢äºˆå®šã§ã™ã€‚代ã‚ã‚Šã« %s を使用ã—ã¦ãã ã•ã„。"
por "'%s' é desatualizado. Use '%s' em seu lugar"
spa "'%s' está obsoleto y será quitado en una entrega futura, use '%s' en su lugar"
ER_NON_UPDATABLE_TABLE
+ chi "目标表%-.100s多个%sä¸å¯æ›´æ–°"
eng "The target table %-.100s of the %s is not updatable"
ger "Die Zieltabelle %-.100s von %s ist nicht aktualisierbar"
jpn "対象表 %-.100s ã¯æ›´æ–°å¯èƒ½ã§ã¯ãªã„ã®ã§ã€%s ã‚’è¡Œãˆã¾ã›ã‚“。"
@@ -5143,6 +5425,7 @@ ER_NON_UPDATABLE_TABLE
swe "Tabell %-.100s använd med '%s' är inte uppdateringsbar"
ukr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ %-.100s у %s не може оновлюватиÑÑŒ"
ER_FEATURE_DISABLED
+ chi "'%s'功能被ç¦ç”¨;您需è¦MariaDB以'%s'构建以使其工作"
eng "The '%s' feature is disabled; you need MariaDB built with '%s' to have it working"
ger "Das Feature '%s' ist ausgeschaltet, Sie müssen MariaDB mit '%s' übersetzen, damit es verfügbar ist"
jpn "機能 '%s' ã¯ç„¡åŠ¹ã§ã™ã€‚利用ã™ã‚‹ãŸã‚ã«ã¯ '%s' ã‚’å«ã‚ã¦ãƒ“ルドã—ãŸMariaDBãŒå¿…è¦ã§ã™ã€‚"
@@ -5150,6 +5433,7 @@ ER_FEATURE_DISABLED
spa "La característica '%s' fue deshabilitada; usted necesita construir MariaDB con '%s' para tener eso funcionando"
swe "'%s' är inte aktiverad; För att aktivera detta måste du bygga om MariaDB med '%s' definierad"
ER_OPTION_PREVENTS_STATEMENT
+ chi "MariaDBæœåŠ¡å™¨ä½¿ç”¨%s选项è¿è¡Œï¼Œå› æ­¤æ— æ³•æ‰§è¡Œæ­¤è¯­å¥"
eng "The MariaDB server is running with the %s option so it cannot execute this statement"
ger "Der MariaDB-Server läuft mit der Option %s und kann diese Anweisung deswegen nicht ausführen"
jpn "MariaDBサーãƒãƒ¼ãŒ %s オプションã§å®Ÿè¡Œã•ã‚Œã¦ã„ã‚‹ã®ã§ã€ã“ã®ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆã¯å®Ÿè¡Œã§ãã¾ã›ã‚“。"
@@ -5157,34 +5441,40 @@ ER_OPTION_PREVENTS_STATEMENT
spa "El servidor MariaDB se está ejecutando con la opción %s por lo que no se puede ejecutar esta sentencia"
swe "MariaDB är startad med %s. Pga av detta kan du inte använda detta kommando"
ER_DUPLICATED_VALUE_IN_TYPE
+ chi "列'%-.100s'有é‡å¤çš„值'%-.64s'在%s"
eng "Column '%-.100s' has duplicated value '%-.64s' in %s"
ger "Feld '%-.100s' hat doppelten Wert '%-.64s' in %s"
jpn "列 '%-.100s' ã§ã€é‡è¤‡ã™ã‚‹å€¤ '%-.64s' ㌠%s ã«æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚"
por "Coluna '%-.100s' tem valor duplicado '%-.64s' em %s"
spa "La columna '%-.100s' tiene valor duplicado '%-.64s' en %s"
ER_TRUNCATED_WRONG_VALUE 22007
+ chi "截断的ä¸æ­£ç¡®%-.32T值:'%-.128T'"
eng "Truncated incorrect %-.32T value: '%-.128T'"
ger "Falscher %-.32T-Wert gekürzt: '%-.128T'"
jpn "ä¸æ­£ãª %-.32T ã®å€¤ãŒåˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚: '%-.128T'"
por "Truncado errado %-.32T valor: '%-.128T'"
spa "Truncado incorrecto %-.32T valor: '%-.128T'"
ER_TOO_MUCH_AUTO_TIMESTAMP_COLS
+ chi "表定义ä¸æ­£ç¡®;默认或ON UPDATE中åªèƒ½æœ‰ä¸€ä¸ªå¸¦æœ‰CURRENT_TIMESTAMPçš„TIMESTAMP列"
eng "Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause"
ger "Fehlerhafte Tabellendefinition. Es kann nur eine einzige TIMESTAMP-Spalte mit CURRENT_TIMESTAMP als DEFAULT oder in einer ON-UPDATE-Klausel geben"
jpn "ä¸æ­£ãªè¡¨å®šç¾©ã§ã™ã€‚DEFAULTå¥ã¾ãŸã¯ON UPDATEå¥ã« CURRENT_TIMESTAMP ã‚’ã¨ã‚‚ãªã†TIMESTAMPåž‹ã®åˆ—ã¯1ã¤ã¾ã§ã§ã™ã€‚"
por "Incorreta definição de tabela; Pode ter somente uma coluna TIMESTAMP com CURRENT_TIMESTAMP em DEFAULT ou ON UPDATE cláusula"
spa "Definición incorrecta de tabla; solamente puede haber una columna TIMESTAMP con CURRENT_TIMESTAMP en DEFAULT o en cláusula ON UPDATE"
ER_INVALID_ON_UPDATE
+ chi "在'%-.192s'列的ON UPDATEå­å¥ä¸Šæ— æ•ˆ"
eng "Invalid ON UPDATE clause for '%-.192s' column"
ger "Ungültige ON-UPDATE-Klausel für Spalte '%-.192s'"
jpn "列 '%-.192s' ã« ON UPDATEå¥ã¯ç„¡åŠ¹ã§ã™ã€‚"
por "Inválida cláusula ON UPDATE para campo '%-.192s'"
spa "Cláusula ON UPDATE inválida para la columna '%-.192s'"
ER_UNSUPPORTED_PS
+ chi "尚未在prepared statementå议中支æŒæ­¤å‘½ä»¤"
eng "This command is not supported in the prepared statement protocol yet"
ger "Dieser Befehl wird im Protokoll für vorbereitete Anweisungen noch nicht unterstützt"
spa "Este comando no se encuentra soportado para protocolo de sentencia preparada, aún"
ER_GET_ERRMSG
+ chi "出错%d '%-.200s'æ¥è‡ª%s"
dan "Modtog fejl %d '%-.200s' fra %s"
eng "Got error %d '%-.200s' from %s"
ger "Fehler %d '%-.200s' von %s"
@@ -5193,247 +5483,300 @@ ER_GET_ERRMSG
norwegian-ny "Mottok feil %d '%-.200s' fra %s"
spa "Obtenido error %d '%-.200s' desde %s"
ER_GET_TEMPORARY_ERRMSG
+ chi "出临时错误%d '%-.200s'æ¥è‡ª%s"
dan "Modtog temporary fejl %d '%-.200s' fra %s"
eng "Got temporary error %d '%-.200s' from %s"
- jpn "一時エラー %d '%-.200s' ㌠%s ã‹ã‚‰è¿”ã•ã‚Œã¾ã—ãŸã€‚"
ger "Temporärer Fehler %d '%-.200s' von %s"
+ jpn "一時エラー %d '%-.200s' ㌠%s ã‹ã‚‰è¿”ã•ã‚Œã¾ã—ãŸã€‚"
nor "Mottok temporary feil %d '%-.200s' fra %s"
norwegian-ny "Mottok temporary feil %d '%-.200s' fra %s"
spa "Obtenido error temporal %d '%-.200s' desde %s"
ER_UNKNOWN_TIME_ZONE
+ chi "未知或ä¸æ­£ç¡®çš„时区:'%-.64s'"
eng "Unknown or incorrect time zone: '%-.64s'"
ger "Unbekannte oder falsche Zeitzone: '%-.64s'"
spa "Zona temporal desconocida o incorrecta: '%-.64s'"
ER_WARN_INVALID_TIMESTAMP
+ chi "无效TIMESTAMP值:列'%s' 行'%lu'"
eng "Invalid TIMESTAMP value in column '%s' at row %lu"
ger "Ungültiger TIMESTAMP-Wert in Feld '%s', Zeile %lu"
spa "Valor inválido de SELLO TEMPORAL (TIMESTAMP) en la columna '%s' de la fila %lu"
ER_INVALID_CHARACTER_STRING
+ chi "无效的%s字符串:'%.64T'"
eng "Invalid %s character string: '%.64T'"
ger "Ungültiger %s-Zeichen-String: '%.64T'"
spa "Cadena de carácter %s inválida: '%.64T'"
ER_WARN_ALLOWED_PACKET_OVERFLOWED
+ chi "%s()的结果大于max_allowed_packet(%ld) - 截断"
eng "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
ger "Ergebnis von %s() war größer als max_allowed_packet (%ld) Bytes und wurde deshalb gekürzt"
spa "El resultado de %s() ha sido mayor que max_allowed_packet (%ld) - truncado"
ER_CONFLICTING_DECLARATIONS
+ chi "矛盾语å¥ï¼š'%s%s'å’Œ'%s%s'"
eng "Conflicting declarations: '%s%s' and '%s%s'"
ger "Widersprüchliche Deklarationen: '%s%s' und '%s%s'"
spa "Declaraciones conflictivas: '%s%s' y '%s%s'"
ER_SP_NO_RECURSIVE_CREATE 2F003
+ chi "无法从å¦ä¸€ä¸ªå­˜å‚¨è¿‡ç¨‹ä¸­åˆ›å»º%s"
eng "Can't create a %s from within another stored routine"
ger "Kann kein %s innerhalb einer anderen gespeicherten Routine erzeugen"
spa "No puedo crear una %s desde dentro de otra rutina almacenada"
ER_SP_ALREADY_EXISTS 42000
+ chi "%s%så·²ç»å­˜åœ¨"
eng "%s %s already exists"
ger "%s %s existiert bereits"
hindi "%s %s पहले से ही मौजूद है"
spa "%s %s ya existe"
ER_SP_DOES_NOT_EXIST 42000
+ chi "%s%sä¸å­˜åœ¨"
eng "%s %s does not exist"
ger "%s %s existiert nicht"
hindi "%s %s मौजूद नहीं है"
spa "%s %s no existe"
ER_SP_DROP_FAILED
+ chi "未能DROP%s%s"
eng "Failed to DROP %s %s"
ger "DROP %s %s ist fehlgeschlagen"
hindi "%s %s को डà¥à¤°à¥‰à¤ª करने में असफल रहे"
spa "No pude ELIMINAR (DROP) %s %s"
ER_SP_STORE_FAILED
+ chi "无法创建%s%s"
eng "Failed to CREATE %s %s"
ger "CREATE %s %s ist fehlgeschlagen"
hindi "%s %s को बनाने में असफल रहे"
spa "No pude CREAR %s %s"
ER_SP_LILABEL_MISMATCH 42000
+ chi "%s,没有匹é…标签:%s"
eng "%s with no matching label: %s"
ger "%s ohne passende Marke: %s"
spa "%s sin etiqueta coincidente: %s"
ER_SP_LABEL_REDEFINE 42000
+ chi "é‡æ–°å®šä¹‰æ ‡ç­¾%s"
eng "Redefining label %s"
ger "Neudefinition der Marke %s"
spa "Redefiniendo etiqueta %s"
ER_SP_LABEL_MISMATCH 42000
+ chi "没有匹é…的最终标签%s"
eng "End-label %s without match"
ger "Ende-Marke %s ohne zugehörigen Anfang"
spa "Etiqueta-Final %s sin coincidencia"
ER_SP_UNINIT_VAR 01000
+ chi "å‚考未åˆå§‹åŒ–çš„å˜é‡%s"
eng "Referring to uninitialized variable %s"
ger "Zugriff auf nichtinitialisierte Variable %s"
spa "Refiriéndose a variable %s sin inicializar"
ER_SP_BADSELECT 0A000
+ chi "PROCEDURE%sä¸èƒ½è¿”回给定上下文中的结果集"
eng "PROCEDURE %s can't return a result set in the given context"
ger "PROCEDURE %s kann im gegebenen Kontext keine Ergebnismenge zurückgeben"
spa "El PROCEDIMIENTO (PROCEDURE) %s no puede devolver un conjunto de resultados en el contexto dado"
ER_SP_BADRETURN 42000
+ chi "RETURNä»…å…许在函数中"
eng "RETURN is only allowed in a FUNCTION"
ger "RETURN ist nur innerhalb einer FUNCTION erlaubt"
hindi "RETURN को केवल FUNCTION में इसà¥à¤¤à¥‡à¤®à¤¾à¤² किया जा सकता है"
spa "RETURN sólo se permite dentro de una FUNCIÓN"
ER_SP_BADSTATEMENT 0A000
+ chi "%sä¸å…许在存储过程中"
eng "%s is not allowed in stored procedures"
ger "%s ist in gespeicherten Prozeduren nicht erlaubt"
hindi "%s को STORED PROCEDURE में इसà¥à¤¤à¥‡à¤®à¤¾à¤² नहीं किया जा सकता है"
spa "%s no permitido en procedimientos almacenados"
ER_UPDATE_LOG_DEPRECATED_IGNORED 42000
+ chi "更新日志被弃用并由二进制日志替æ¢;SET SQL_LOG_UPDATE已被忽略。此选项将在MariaDB 5.6中删除"
eng "The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored. This option will be removed in MariaDB 5.6"
ger "Das Update-Log ist veraltet und wurde durch das Binär-Log ersetzt. SET SQL_LOG_UPDATE wird ignoriert. Diese Option wird in MariaDB 5.6 entfernt"
spa "El historial (log) de actualización se encuentra obsoleto y reemplazado por el historial (log) binario; SET SQL_LOG_UPDATE ha sido ignorado. Esta opción será quitada en MariaDB 5.6"
ER_UPDATE_LOG_DEPRECATED_TRANSLATED 42000
+ chi "更新日志被弃用并由二进制日志替æ¢;SET SQL_LOG_UPDATE已被转æ¢ä¸ºè®¾ç½®SQL_LOG_BIN。此选项将在MariaDB 5.6中删除"
eng "The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been translated to SET SQL_LOG_BIN. This option will be removed in MariaDB 5.6"
ger "Das Update-Log ist veraltet und wurde durch das Binär-Log ersetzt. SET SQL_LOG_UPDATE wurde in SET SQL_LOG_BIN übersetzt. Diese Option wird in MariaDB 5.6 entfernt"
spa "El historial (log) de actualización se encuentra obsoleto y reemplazado por el historial binario; SET SQL_LOG_UPDATE ha sido traducido a SET SQL_LOG_BIN. Esta opción será quitada en MariaDB 5.6"
ER_QUERY_INTERRUPTED 70100
+ chi "查询执行中断"
eng "Query execution was interrupted"
ger "Ausführung der Abfrage wurde unterbrochen"
spa "Se ha interrumpido la ejecución de la consulta (query)"
ER_SP_WRONG_NO_OF_ARGS 42000
+ chi "%s%sçš„å‚æ•°æ•°é‡ä¸æ­£ç¡®;预期%u,得到%u"
eng "Incorrect number of arguments for %s %s; expected %u, got %u"
ger "Falsche Anzahl von Argumenten für %s %s; erwarte %u, erhalte %u"
spa "Número incorrecto de argumentos para %s %s; se esperaba %u, se obtuvo %u"
ER_SP_COND_MISMATCH 42000
+ chi "未定义的CONDITION:%s"
eng "Undefined CONDITION: %s"
ger "Undefinierte CONDITION: %s"
spa "CONDICIÓN no definida: %s"
ER_SP_NORETURN 42000
+ chi "FUNCTION%s中没有RETURN"
eng "No RETURN found in FUNCTION %s"
ger "Kein RETURN in FUNCTION %s gefunden"
hindi "FUNCTION %s में कोई RETURN है"
spa "No se hallado RETURN en FUNCIÓN %s"
ER_SP_NORETURNEND 2F005
+ chi "FUNCTION%s结æŸä½†æ— RETURN"
eng "FUNCTION %s ended without RETURN"
ger "FUNCTION %s endete ohne RETURN"
hindi "FUNCTION %s RETURN के बिना समापà¥à¤¤ हो गया"
spa "La FUNCIÓN %s termina sin RETURN"
ER_SP_BAD_CURSOR_QUERY 42000
+ chi "Cursor语å¥å¿…须是选择"
eng "Cursor statement must be a SELECT"
ger "Cursor-Anweisung muss ein SELECT sein"
spa "La sentencia de cursor debe de ser un SELECT"
ER_SP_BAD_CURSOR_SELECT 42000
+ chi "Cursor SELECTä¸èƒ½æœ‰INTO"
eng "Cursor SELECT must not have INTO"
ger "Cursor-SELECT darf kein INTO haben"
spa "El SELECT de cursor no debe de tener INTO"
ER_SP_CURSOR_MISMATCH 42000
+ chi "未定义的CURSOR:%s"
eng "Undefined CURSOR: %s"
ger "Undefinierter CURSOR: %s"
hindi "CURSOR %s अपरिभाषित है"
spa "CURSOR indefinido: %s"
ER_SP_CURSOR_ALREADY_OPEN 24000
+ chi "Cursorå·²ç»æ‰“å¼€"
eng "Cursor is already open"
ger "Cursor ist schon geöffnet"
hindi "CURSOR पहले से ही खà¥à¤²à¤¾ है"
spa "Cursor ya abierto"
ER_SP_CURSOR_NOT_OPEN 24000
+ chi "Cursor未打开"
eng "Cursor is not open"
ger "Cursor ist nicht geöffnet"
spa "Cursor no abierto"
ER_SP_UNDECLARED_VAR 42000
+ chi "未定义的å˜é‡ï¼š%s"
eng "Undeclared variable: %s"
ger "Nicht deklarierte Variable: %s"
spa "Variable sin declarar: %s"
ER_SP_WRONG_NO_OF_FETCH_ARGS
+ chi "FETCHå˜é‡æ•°ä¸æ­£ç¡®"
eng "Incorrect number of FETCH variables"
ger "Falsche Anzahl von FETCH-Variablen"
spa "Incorrecto número de variables FETCH"
ER_SP_FETCH_NO_DATA 02000
+ chi "æ²¡æœ‰æ•°æ® - 零行被选择或处ç†"
eng "No data - zero rows fetched, selected, or processed"
ger "Keine Daten - null Zeilen geholt (fetch), ausgewählt oder verarbeitet"
spa "No hay datos - cero filas logradas, seleccionadas o procesadas"
ER_SP_DUP_PARAM 42000
+ chi "é‡å¤å‚数:%s"
eng "Duplicate parameter: %s"
ger "Doppelter Parameter: %s"
spa "Parámetro duplicado: %s"
ER_SP_DUP_VAR 42000
+ chi "é‡å¤å˜é‡ï¼š%s"
eng "Duplicate variable: %s"
ger "Doppelte Variable: %s"
spa "Variable duplicada: %s"
ER_SP_DUP_COND 42000
+ chi "é‡å¤æ¡ä»¶ï¼š%s"
eng "Duplicate condition: %s"
ger "Doppelte Bedingung: %s"
spa "Condición duplicada: %s"
ER_SP_DUP_CURS 42000
+ chi "é‡å¤Cursor:%s"
eng "Duplicate cursor: %s"
ger "Doppelter Cursor: %s"
spa "Cursor duplicado: %s"
ER_SP_CANT_ALTER
+ chi "未能ALTER %s%s"
eng "Failed to ALTER %s %s"
ger "ALTER %s %s fehlgeschlagen"
hindi "%s %s को ALTER करने में असफल रहे"
spa "Fallo en ALTER %s %s"
ER_SP_SUBSELECT_NYI 0A000
+ chi "ä¸æ”¯æŒå­æŸ¥è¯¢å€¼"
eng "Subquery value not supported"
ger "Subquery-Wert wird nicht unterstützt"
spa "Valor de Subconsulta (subquery) no soportado"
ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG 0A000
+ chi "在存储的函数或触å‘中ä¸å…许%s"
eng "%s is not allowed in stored function or trigger"
ger "%s ist in gespeicherten Funktionen und in Triggern nicht erlaubt"
spa "%s no permitido en función almacenada o en disparador"
ER_SP_VARCOND_AFTER_CURSHNDLR 42000
+ chi "å˜é‡æˆ–æ¡ä»¶å£°æ˜Žåœ¨cursor或处ç†ç¨‹åºå®šä¹‰ä¹‹åŽ"
eng "Variable or condition declaration after cursor or handler declaration"
ger "Deklaration einer Variablen oder einer Bedingung nach der Deklaration eines Cursors oder eines Handlers"
spa "Declaración de variable o condición tras declaración de cursor o manejador"
ER_SP_CURSOR_AFTER_HANDLER 42000
+ chi "处ç†ç¨‹åºå£°æ˜ŽåŽçš„cursor声明"
eng "Cursor declaration after handler declaration"
ger "Deklaration eines Cursors nach der Deklaration eines Handlers"
spa "Declaración de cursor tras declaración de manejador"
ER_SP_CASE_NOT_FOUND 20000
+ chi "未能在CASE语å¥æ‰¾åˆ°Case"
eng "Case not found for CASE statement"
ger "Fall für CASE-Anweisung nicht gefunden"
spa "Caso no hallado para sentencia CASE"
ER_FPARSER_TOO_BIG_FILE
+ chi "é…置文件'%-.192s'太大了"
eng "Configuration file '%-.192s' is too big"
ger "Konfigurationsdatei '%-.192s' ist zu groß"
rus "Слишком большой конфигурационный файл '%-.192s'"
spa "El fichero/archivo de configuración '%-.192s' es demasiado grande"
ukr "Занадто великий конфігураційний файл '%-.192s'"
ER_FPARSER_BAD_HEADER
+ chi "文件'%-.192s'中的文件类型格å¼æœ‰é—®é¢˜"
eng "Malformed file type header in file '%-.192s'"
ger "Nicht wohlgeformter Dateityp-Header in Datei '%-.192s'"
rus "Ðеверный заголовок типа файла '%-.192s'"
spa "Cabecera de tipo de fichero/archivo malformada en fichero/archivo '%-.192s'"
ukr "Ðевірний заголовок типу у файлі '%-.192s'"
ER_FPARSER_EOF_IN_COMMENT
+ chi "解æžè¯„论'%-.200s'æ—¶æ„外碰到EOF"
eng "Unexpected end of file while parsing comment '%-.200s'"
ger "Unerwartetes Dateiende beim Parsen des Kommentars '%-.200s'"
rus "Ðеожиданный конец файла в коментарии '%-.200s'"
spa "Inesperado fin de fichero/archivo mientras se analizaba comentario '%-.200s'"
ukr "ÐеÑподіванний кінець файлу у коментарі '%-.200s'"
ER_FPARSER_ERROR_IN_PARAMETER
+ chi "解æžå‚æ•°'%-.192s'时出错(行:'%-.192s')"
eng "Error while parsing parameter '%-.192s' (line: '%-.192s')"
ger "Fehler beim Parsen des Parameters '%-.192s' (Zeile: '%-.192s')"
rus "Ошибка при раÑпознавании параметра '%-.192s' (Ñтрока: '%-.192s')"
spa "Error mientras se analizaba parámetro '%-.192s' (línea: '%-.192s')"
ukr "Помилка в роÑпізнаванні параметру '%-.192s' (Ñ€Ñдок: '%-.192s')"
ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER
+ chi "跳过未知å‚æ•°'%-.192s'æ—¶æ„外碰到EOF"
eng "Unexpected end of file while skipping unknown parameter '%-.192s'"
ger "Unerwartetes Dateiende beim Ãœberspringen des unbekannten Parameters '%-.192s'"
rus "Ðеожиданный конец файла при пропуÑке неизвеÑтного параметра '%-.192s'"
spa "Inesperado fin de fichero/archivo mientras se saltaba parámetro desconocido '%-.192s'"
ukr "ÐеÑподіванний кінець файлу у Ñпробі проминути невідомий параметр '%-.192s'"
ER_VIEW_NO_EXPLAIN
+ chi "ANALYZE/EXPLAIN/SHOW无法进行;缺ä¹åº•å±‚表的特æƒ"
eng "ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table"
ger "ANALYZE/EXPLAIN/SHOW kann nicht verlangt werden. Rechte für zugrunde liegende Tabelle fehlen"
rus "ANALYZE/EXPLAIN/SHOW не может быть выполнено; недоÑтаточно прав на таблицы запроÑа"
spa "ANALYZE/EXPLAIN/SHOW no puede ser emitdo; privilegios insuficientes para tabla subyacente"
ukr "ANALYZE/EXPLAIN/SHOW не може бути виконано; немає прав на таблиці запиту"
ER_FRM_UNKNOWN_TYPE
+ chi "文件'%-.192s'在其标题中有未知的'%-.64s'"
eng "File '%-.192s' has unknown type '%-.64s' in its header"
ger "Datei '%-.192s' hat unbekannten Typ '%-.64s' im Header"
rus "Файл '%-.192s' Ñодержит неизвеÑтный тип '%-.64s' в заголовке"
spa "El fichero/archivo '%-.192s' es de un tipo desconocido '%-.64s' en su cabecera"
ukr "Файл '%-.192s' має невідомий тип '%-.64s' у заголовку"
ER_WRONG_OBJECT
+ chi "'%-.192s.%-.192s'ä¸æ˜¯'%s'ç±»"
eng "'%-.192s.%-.192s' is not of type '%s'"
ger "'%-.192s.%-.192s' ist nicht %s"
rus "'%-.192s.%-.192s' - не %s"
spa "'%-.192s.%-.192s' no es del tipo '%s'"
ukr "'%-.192s.%-.192s' не є %s"
ER_NONUPDATEABLE_COLUMN
+ chi "列'%-.192s'ä¸å¯æ›´æ–°"
eng "Column '%-.192s' is not updatable"
ger "Feld '%-.192s' ist nicht aktualisierbar"
rus "Столбец '%-.192s' не обновлÑемый"
spa "La columna '%-.192s' no es actualiable"
ukr "Стовбець '%-.192s' не може бути зминений"
ER_VIEW_SELECT_DERIVED
+ chi "Viewçš„Selectçš„FROM包å«å­æŸ¥è¯¢"
eng "View's SELECT contains a subquery in the FROM clause"
ger "SELECT der View enthält eine Subquery in der FROM-Klausel"
rus "View SELECT Ñодержит Ð¿Ð¾Ð´Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð² конÑтрукции FROM"
@@ -5442,685 +5785,841 @@ ER_VIEW_SELECT_DERIVED
# Not used any more, syntax error is returned instead
ER_VIEW_SELECT_CLAUSE
+ chi "Viewçš„Select包å«â€œ%sâ€å­å¥"
eng "View's SELECT contains a '%s' clause"
ger "SELECT der View enthält eine '%s'-Klausel"
rus "View SELECT Ñодержит конÑтрукцию '%s'"
spa "El SELECT de la vista contiene una cláusula '%s'"
ukr "View SELECT має конÑтрукцію '%s'"
ER_VIEW_SELECT_VARIABLE
+ chi "View的选择包å«å˜é‡æˆ–å‚æ•°"
eng "View's SELECT contains a variable or parameter"
ger "SELECT der View enthält eine Variable oder einen Parameter"
rus "View SELECT Ñодержит переменную или параметр"
spa "El SELECT de la vista contiene una variable o un parámetro"
ukr "View SELECT має зминну або параметер"
ER_VIEW_SELECT_TMPTABLE
+ chi "View的SELECT指的是临时表'%-.192s'"
eng "View's SELECT refers to a temporary table '%-.192s'"
ger "SELECT der View verweist auf eine temporäre Tabelle '%-.192s'"
rus "View SELECT Ñодержит ÑÑылку на временную таблицу '%-.192s'"
spa "El SELECT de la vista se refiere a una tabla temporal '%-.192s'"
ukr "View SELECT викориÑтовує тимчаÑову таблицю '%-.192s'"
ER_VIEW_WRONG_LIST
+ chi "View的选择和VIEW的字段列表具有ä¸åŒçš„列计数"
eng "View's SELECT and view's field list have different column counts"
ger "SELECT- und Feldliste der Views haben unterschiedliche Anzahlen von Spalten"
rus "View SELECT и ÑпиÑок полей view имеют разное количеÑтво Ñтолбцов"
spa "El SELECT de la vista y la lista de campos de la vista tienen un contador diferente de columnas"
ukr "View SELECT Ñ– перелік Ñтовбців view мають різну кількіÑÑ‚ÑŒ Ñковбців"
ER_WARN_VIEW_MERGE
+ chi "Viewåˆå¹¶ç®—法目å‰ä¸èƒ½ä½¿ç”¨ï¼ˆå‡è®¾æœªå®šä¹‰çš„算法)"
eng "View merge algorithm can't be used here for now (assumed undefined algorithm)"
ger "View-Merge-Algorithmus kann hier momentan nicht verwendet werden (undefinierter Algorithmus wird angenommen)"
rus "Ðлгоритм ÑлиÑÐ½Ð¸Ñ view не может быть иÑпользован ÑÐµÐ¹Ñ‡Ð°Ñ (алгоритм будет неопеределенным)"
spa "El algoritmo de fusión de la vista no se puede usar aquí por ahora (se asume algoritmo indefinido)"
ukr "Ðлгоритм Ð·Ð»Ð¸Ð²Ð°Ð½Ð½Ñ view не може бути викориÑтаний зараз (алгоритм буде невизначений)"
ER_WARN_VIEW_WITHOUT_KEY
+ chi "更新的视图没有底层表的完整键"
eng "View being updated does not have complete key of underlying table in it"
ger "Die aktualisierte View enthält nicht den vollständigen Schlüssel der zugrunde liegenden Tabelle"
rus "ОбновлÑемый view не Ñодержит ключа иÑпользованных(ой) в нем таблиц(Ñ‹)"
spa "La vista que se está actualizando no tiene clave completa de la tabla subyacente que contiene"
ukr "View, що оновлюетьÑÑ, не міÑтить повного ключа таблиці(ÑŒ), що викоріÑтана в ньюому"
ER_VIEW_INVALID
+ chi "View'%-.192s.%-.192s'引用无效的表ã€åˆ—ã€å‡½æ•°ã€æˆ–者函数或View缺ä¹ä½¿ç”¨æƒ"
eng "View '%-.192s.%-.192s' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them"
spa "La vista '%-.192s.%-.192s' hace referencia a tabla(s) o columna(s) o función(es) inválida(s) o al definidor/invocador de vista le faltan derechos para usarlos"
ER_SP_NO_DROP_SP
+ chi "无法从å¦ä¸€ä¸ªå­˜å‚¨çš„例程中删除或更改%s"
eng "Can't drop or alter a %s from within another stored routine"
ger "Kann eine %s nicht von innerhalb einer anderen gespeicherten Routine löschen oder ändern"
spa "No puedo eliminar o alterar una %s desde dentro de otra rutina almacenada"
ER_SP_GOTO_IN_HNDLR
+ chi "在存储过程处ç†ç¨‹åºä¸­ä¸å…许GOTO"
eng "GOTO is not allowed in a stored procedure handler"
ger "GOTO ist im Handler einer gespeicherten Prozedur nicht erlaubt"
spa "GOTO no permitido en manejador de procedimiento almacenado"
ER_TRG_ALREADY_EXISTS
+ chi "触å‘'%s'å·²ç»å­˜åœ¨"
eng "Trigger '%s' already exists"
ger "Trigger '%s' existiert bereits"
hindi "TRIGGER '%s' पहले से मौजूद है"
spa "Ya existe el disparador `%s`"
ER_TRG_DOES_NOT_EXIST
+ chi "触å‘ä¸å­˜åœ¨"
eng "Trigger does not exist"
ger "Trigger existiert nicht"
hindi "TRIGGER मौजूद नहीं है"
spa "El disparador no existe"
ER_TRG_ON_VIEW_OR_TEMP_TABLE
+ chi "触å‘器的'%-.192s'是视图或临时表"
eng "Trigger's '%-.192s' is a view, temporary table or sequence"
ger "'%-.192s' des Triggers ist ein View, temporäre Tabelle oder Sequence"
spa "El disparador '%-.192s' es una vista, tabla temporal o secuencia"
hindi "Trigger का '%-.192s' à¤à¤• वà¥à¤¯à¥‚, टेमà¥à¤ªà¤°à¤°à¥€ टेबल या सीकà¥à¤µà¥‡à¤‚स है"
ER_TRG_CANT_CHANGE_ROW
+ chi "æ›´æ–°%s行在%s触å‘器中ä¸å…许"
eng "Updating of %s row is not allowed in %strigger"
ger "Aktualisieren einer %s-Zeile ist in einem %s-Trigger nicht erlaubt"
spa "Actualizar la fila %s no está permitido en disparador %s"
ER_TRG_NO_SUCH_ROW_IN_TRG
+ chi "没有%s行,触å‘%s"
eng "There is no %s row in %s trigger"
ger "Es gibt keine %s-Zeile im %s-Trigger"
spa "No hay fila %s en disparador %s"
ER_NO_DEFAULT_FOR_FIELD
+ chi "字段'%-.192s'没有默认值"
eng "Field '%-.192s' doesn't have a default value"
ger "Feld '%-.192s' hat keinen Vorgabewert"
spa "El campo '%-.192s' no tiene un valor por defecto"
ER_DIVISION_BY_ZERO 22012
+ chi "除0错误"
eng "Division by 0"
ger "Division durch 0"
hindi "0 से विभाजन"
spa "División por 0"
ER_TRUNCATED_WRONG_VALUE_FOR_FIELD 22007
+ chi "ä¸æ­£ç¡®çš„%-.32s值:'%-.128T'用于列`%.192s`%.192s`%.192s`在%luè¡Œ"
eng "Incorrect %-.32s value: '%-.128T' for column `%.192s`.`%.192s`.`%.192s` at row %lu"
ger "Falscher %-.32s-Wert: '%-.128T' für Feld '`%.192s`.`%.192s`.`%.192s` in Zeile %lu"
spa "Incorrecto %-.32s valor: '%-.128T' para columna `%.192s`.`%.192s`.`%.192s` en la fila %lu"
ER_ILLEGAL_VALUE_FOR_TYPE 22007
+ chi "在解æžæœŸé—´å‘现的éžæ³•%s '%-.192T'值"
eng "Illegal %s '%-.192T' value found during parsing"
ger "Nicht zulässiger %s-Wert '%-.192T' beim Parsen gefunden"
spa "Hallado valor ilegal %s '%-.192T' durante el análisi"
ER_VIEW_NONUPD_CHECK
+ chi "在ä¸å¯æ›´æ–°çš„视图%`-.192s.%`-.192s上CHECK OPTION"
eng "CHECK OPTION on non-updatable view %`-.192s.%`-.192s"
ger "CHECK OPTION auf nicht-aktualisierbarem View %`-.192s.%`-.192s"
rus "CHECK OPTION Ð´Ð»Ñ Ð½ÐµÐ¾Ð±Ð½Ð¾Ð²Ð»Ñемого VIEW %`-.192s.%`-.192s"
spa "CHECK OPTION en vista no actualizable %`-.192s.%`-.192s"
ukr "CHECK OPTION Ð´Ð»Ñ VIEW %`-.192s.%`-.192s що не може бути оновленним"
ER_VIEW_CHECK_FAILED 44000
+ chi "CHECK OPTION失败%`-.192s.%`-.192s"
eng "CHECK OPTION failed %`-.192s.%`-.192s"
ger "CHECK OPTION fehlgeschlagen: %`-.192s.%`-.192s"
rus "Проверка CHECK OPTION Ð´Ð»Ñ VIEW %`-.192s.%`-.192s провалилаÑÑŒ"
spa "CHECK OPTION falló %`-.192s.%`-.192s"
ukr "Перевірка CHECK OPTION Ð´Ð»Ñ VIEW %`-.192s.%`-.192s не пройшла"
ER_PROCACCESS_DENIED_ERROR 42000
+ chi "%-.32s命令被拒ç»ã€‚用户为'%s'@'%s' 例程'%-.192s'"
eng "%-.32s command denied to user '%s'@'%s' for routine '%-.192s'"
ger "Befehl %-.32s nicht zulässig für Benutzer '%s'@'%s' in Routine '%-.192s'"
spa "Comando %-.32s denegado para el usuario '%s'@'%s' para rutina '%-.192s'"
ER_RELAY_LOG_FAIL
+ chi "清除旧继relay日志失败:%s"
eng "Failed purging old relay logs: %s"
ger "Bereinigen alter Relais-Logs fehlgeschlagen: %s"
spa "Falló la purga de viejos historiales (logs) de reenvío: %s"
ER_PASSWD_LENGTH
+ chi "密ç å“ˆå¸Œåº”该是一个%d-digitå六进制数"
eng "Password hash should be a %d-digit hexadecimal number"
ger "Passwort-Hash sollte eine Hexdaezimalzahl mit %d Stellen sein"
spa "El valor calculado de la contraseña debería de ser un número hexadecimal de %d-dígitos"
ER_UNKNOWN_TARGET_BINLOG
+ chi "在Binlog索引中找ä¸åˆ°ç›®æ ‡æ—¥å¿—"
eng "Target log not found in binlog index"
ger "Ziel-Log im Binlog-Index nicht gefunden"
spa "Historial (log) de destino no hallado en índice binlog"
ER_IO_ERR_LOG_INDEX_READ
+ chi "读å–日志索引文件时I/O错误"
eng "I/O error reading log index file"
ger "Fehler beim Lesen der Log-Index-Datei"
spa "Error de E/S leyendo fichero/archivo índice de historial (log)"
ER_BINLOG_PURGE_PROHIBITED
+ chi "æœåŠ¡å™¨é…ç½®ä¸å…许Binlog清除"
eng "Server configuration does not permit binlog purge"
ger "Server-Konfiguration erlaubt keine Binlog-Bereinigung"
spa "La configuración del servidor no permite purgar binlog"
ER_FSEEK_FAIL
+ chi "fseek()失败"
eng "Failed on fseek()"
ger "fseek() fehlgeschlagen"
hindi "fseek() विफल रहा"
spa "Fallo en fseek()"
ER_BINLOG_PURGE_FATAL_ERR
+ chi "日志清除期间的致命错误"
eng "Fatal error during log purge"
ger "Schwerwiegender Fehler bei der Log-Bereinigung"
spa "Error fatal durante la purga del historial (log)"
ER_LOG_IN_USE
+ chi "日志在用,ä¸ä¼šæ¸…除"
eng "A purgeable log is in use, will not purge"
ger "Ein zu bereinigendes Log wird gerade benutzt, daher keine Bereinigung"
spa "Se encuentra en uso un historial purgable, no lo purgaré"
ER_LOG_PURGE_UNKNOWN_ERR
+ chi "日志清除期间未知错误"
eng "Unknown error during log purge"
ger "Unbekannter Fehler bei Log-Bereinigung"
spa "Error desconocido durante la purga del historial (log)"
ER_RELAY_LOG_INIT
+ chi "åˆå§‹åŒ–relay日志失败。ä½ç½®ï¼š%s"
eng "Failed initializing relay log position: %s"
ger "Initialisierung der Relais-Log-Position fehlgeschlagen: %s"
spa "Fallo inicializando la posición del historial de reenvío: %s"
ER_NO_BINARY_LOGGING
+ chi "您ä¸ä½¿ç”¨äºŒè¿›åˆ¶æ—¥å¿—记录"
eng "You are not using binary logging"
ger "Sie verwenden keine Binärlogs"
spa "No está usando historial (log) binario"
ER_RESERVED_SYNTAX
+ chi "'%-.64s'语法ä¿ç•™ç”¨äºŽMariaDBæœåŠ¡å™¨å†…部"
eng "The '%-.64s' syntax is reserved for purposes internal to the MariaDB server"
ger "Die Schreibweise '%-.64s' ist für interne Zwecke des MariaDB-Servers reserviert"
spa "La sintaxis '%-.64s' está reservada para propósitos internos del servidor MariaDB"
ER_WSAS_FAILED
+ chi "WSAStartup失败了"
eng "WSAStartup Failed"
ger "WSAStartup fehlgeschlagen"
spa "Falló WSAStartup"
ER_DIFF_GROUPS_PROC
+ chi "无法处ç†å…·æœ‰ä¸åŒç»„的过程"
eng "Can't handle procedures with different groups yet"
ger "Kann Prozeduren mit unterschiedlichen Gruppen noch nicht verarbeiten"
spa "No puedo manejar procedimientos con grupos diferentes, aún"
ER_NO_GROUP_FOR_PROC
+ chi "SELECT必须具有此过程的组"
eng "Select must have a group with this procedure"
ger "SELECT muss bei dieser Prozedur ein GROUP BY haben"
spa "La selección debe de tener un grupo con este procedimiento"
ER_ORDER_WITH_PROC
+ chi "无法在次存储过程使用ORDERå­å¥"
eng "Can't use ORDER clause with this procedure"
ger "Kann bei dieser Prozedur keine ORDER-BY-Klausel verwenden"
spa "No puedo usar la cláusula ORDER con este procedimiento"
ER_LOGGING_PROHIBIT_CHANGING_OF
+ chi "二进制日志记录和å¤åˆ¶ç¦æ­¢æ›´æ”¹å…¨å±€æœåŠ¡å™¨%s"
eng "Binary logging and replication forbid changing the global server %s"
ger "Binärlogs und Replikation verhindern Wechsel des globalen Servers %s"
spa "El historial (log) binario y la réplica prohibe cambiar el servidor global %s"
ER_NO_FILE_MAPPING
+ chi "无法映射文件:%-.200s,错误å·ç ï¼š%M"
eng "Can't map file: %-.200s, errno: %M"
ger "Kann Datei nicht abbilden: %-.200s, Fehler: %M"
spa "No puedo mapear fichero/archivo: %-.200s, error: %M"
ER_WRONG_MAGIC
+ chi "魔法错误%-.64s"
eng "Wrong magic in %-.64s"
ger "Falsche magische Zahlen in %-.64s"
spa "Magia equivocada en %-.64s"
ER_PS_MANY_PARAM
+ chi "Prepared statement包å«å¤ªå¤šå ä½ç¬¦"
eng "Prepared statement contains too many placeholders"
ger "Vorbereitete Anweisung enthält zu viele Platzhalter"
spa "Sentencia preparada contiene demasiados marcadores de posición"
ER_KEY_PART_0
+ chi "索引部分'%-.192s'长度ä¸èƒ½ä¸º0"
eng "Key part '%-.192s' length cannot be 0"
ger "Länge des Schlüsselteils '%-.192s' kann nicht 0 sein"
spa "El tamaño de trozo de clave '%-.192s' no puede ser 0"
ER_VIEW_CHECKSUM
+ chi "查看文本checksum失败"
eng "View text checksum failed"
ger "View-Text-Prüfsumme fehlgeschlagen"
rus "Проверка контрольной Ñуммы текÑта VIEW провалилаÑÑŒ"
spa "Ha fallado la suma de comprobación del texto de la vista"
ukr "Перевірка контрольної Ñуми текÑту VIEW не пройшла"
ER_VIEW_MULTIUPDATE
+ chi "无法通过JOIN视图'%-.192s.%-.192s'修改多个基础表。"
eng "Can not modify more than one base table through a join view '%-.192s.%-.192s'"
ger "Kann nicht mehr als eine Basistabelle über Join-View '%-.192s.%-.192s' ändern"
rus "ÐÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ больше чем одну базовую таблицу иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¼Ð½Ð¾Ð³Ð¾Ñ‚Ð°Ð±Ð»Ð¸Ñ‡Ð½Ñ‹Ð¹ VIEW '%-.192s.%-.192s'"
spa "No puedo modificar más de una tabla base a través de una vista de unión '%-.192s.%-.192s'"
ukr "Ðеможливо оновити більш ниж одну базову таблицю выкориÑтовуючи VIEW '%-.192s.%-.192s', що міÑÑ‚Ñ–Ñ‚ÑŒ декілька таблиць"
ER_VIEW_NO_INSERT_FIELD_LIST
+ chi "无法写入JOIN视图'%-.192s.%-.192s'没有字段列表"
eng "Can not insert into join view '%-.192s.%-.192s' without fields list"
ger "Kann nicht ohne Feldliste in Join-View '%-.192s.%-.192s' einfügen"
rus "ÐÐµÐ»ÑŒÐ·Ñ Ð²ÑтавлÑÑ‚ÑŒ запиÑи в многотабличный VIEW '%-.192s.%-.192s' без ÑпиÑка полей"
spa "No puedo insertar dentro de vista de unión '%-.192s.%-.192s' sin lista de campos"
ukr "Ðеможливо уÑтавити Ñ€Ñдки у VIEW '%-.192s.%-.192s', що міÑтить декілька таблиць, без ÑпиÑку Ñтовбців"
ER_VIEW_DELETE_MERGE_VIEW
+ chi "无法从JOIN视图'%-.192s.%-.192s'删除"
eng "Can not delete from join view '%-.192s.%-.192s'"
ger "Kann nicht aus Join-View '%-.192s.%-.192s' löschen"
rus "ÐÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»ÑÑ‚ÑŒ из многотабличного VIEW '%-.192s.%-.192s'"
spa "No puedo borrar desde vista de unión '%-.192s.%-.192s'"
ukr "Ðеможливо видалити Ñ€Ñдки у VIEW '%-.192s.%-.192s', що міÑтить декілька таблиць"
ER_CANNOT_USER
+ chi "æ“作%s失败%.256s"
eng "Operation %s failed for %.256s"
ger "Operation %s schlug fehl für %.256s"
norwegian-ny "Operation %s failed for '%.256s'"
spa "Ha fallado la operación %s para %.256s"
ER_XAER_NOTA XAE04
+ chi "XAER_NOTA:未知的XID"
eng "XAER_NOTA: Unknown XID"
ger "XAER_NOTA: Unbekannte XID"
spa "XAER_NOTA: XID desconocido"
ER_XAER_INVAL XAE05
+ chi "XAER_INVAL:无效的å‚数(或ä¸æ”¯æŒçš„命令)"
eng "XAER_INVAL: Invalid arguments (or unsupported command)"
ger "XAER_INVAL: Ungültige Argumente (oder nicht unterstützter Befehl)"
spa "XAER_INVAL: Argumentos inválidos (o comando no soportado)"
ER_XAER_RMFAIL XAE07
+ chi "XAER_RMFAIL:当全局事务处于%.64s状æ€æ—¶ï¼Œæ— æ³•æ‰§è¡Œè¯¥å‘½ä»¤"
eng "XAER_RMFAIL: The command cannot be executed when global transaction is in the %.64s state"
ger "XAER_RMFAIL: DEr Befehl kann nicht ausgeführt werden, wenn die globale Transaktion im Zustand %.64s ist"
rus "XAER_RMFAIL: Ñту команду Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑÑ‚ÑŒ когда Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚ÑÑ Ð² ÑоÑтоÑнии '%.64s'"
spa "XAER_RMFAIL: El comando no se puede ejecutar cuando la transacción global se encuentra en estado %.64s"
ER_XAER_OUTSIDE XAE09
+ chi "XAER_OUTSIDE:一些工作是在全局交易之外完æˆçš„"
eng "XAER_OUTSIDE: Some work is done outside global transaction"
ger "XAER_OUTSIDE: Einige Arbeiten werden außerhalb der globalen Transaktion verrichtet"
spa "XAER_OUTSIDE: Algún trabajo se ha realizado fuera de la transacción global"
ER_XAER_RMERR XAE03
+ chi "XAER_RMERR:事务分支中å‘生致命错误 - 检查您的数æ®ä»¥èŽ·å¾—一致性"
eng "XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency"
ger "XAER_RMERR: Schwerwiegender Fehler im Transaktionszweig - prüfen Sie Ihre Daten auf Konsistenz"
spa "XAER_RMERR: Ha ocurrido un error fatal en la rama de la transacción - revise la consitencia de sus datos"
ER_XA_RBROLLBACK XA100
+ chi "XA_RBROLBACK:交易分支回滚"
eng "XA_RBROLLBACK: Transaction branch was rolled back"
ger "XA_RBROLLBACK: Transaktionszweig wurde zurückgerollt"
spa "XA_RBROLLBACK: La rama de la transacción ha sido retrocedida (rolled back)"
ER_NONEXISTING_PROC_GRANT 42000
+ chi "无授æƒï¼šç”¨æˆ·'%-.48s'主机'%-.64s'ROUTINE'%-.192s'"
eng "There is no such grant defined for user '%-.48s' on host '%-.64s' on routine '%-.192s'"
ger "Es gibt diese Berechtigung für Benutzer '%-.48s' auf Host '%-.64s' für Routine '%-.192s' nicht"
spa "No existe tal concesión definida para el usuario '%-.48s' en equipo '%-.64s' en rutina '%-.192s'"
ER_PROC_AUTO_GRANT_FAIL
+ chi "无法授予EXECUTEå’ŒALTER ROUTINEæƒé™"
eng "Failed to grant EXECUTE and ALTER ROUTINE privileges"
ger "Gewährung von EXECUTE- und ALTER-ROUTINE-Rechten fehlgeschlagen"
spa "Fallo al conceder privilegios de EXECUTE y ALTER ROUTINE"
ER_PROC_AUTO_REVOKE_FAIL
+ chi "无法撤消所有æƒé™ä»¥åˆ é™¤ä¾‹ç¨‹"
eng "Failed to revoke all privileges to dropped routine"
ger "Rücknahme aller Rechte für die gelöschte Routine fehlgeschlagen"
spa "Fallo al rescindir todos los privilegios de la rutina anulada"
ER_DATA_TOO_LONG 22001
+ chi "列'%s'è¡Œ%luæ•°æ®å¤ªé•¿"
eng "Data too long for column '%s' at row %lu"
ger "Daten zu lang für Feld '%s' in Zeile %lu"
spa "Datos demasiado largos para la columna '%s' en la fila %lu"
ER_SP_BAD_SQLSTATE 42000
+ chi "åSQLSTATE:'%s'"
eng "Bad SQLSTATE: '%s'"
ger "Ungültiger SQLSTATE: '%s'"
spa "Mal SQLSTATE: '%s'"
ER_STARTUP
+ chi "%s:已ç»å‡†å¤‡å¥½æŽ¥å—连接\nVersion:'%s'套接字:'%s'端å£ï¼š%d %s"
eng "%s: ready for connections.\nVersion: '%s' socket: '%s' port: %d %s"
ger "%s: bereit für Verbindungen.\nVersion: '%s' Socket: '%s' Port: %d %s"
spa "%s: preparada para conexiones.\nVersión: '%s' conector: '%s' puerto: %d %s"
ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR
+ chi "无法从带有固定大å°è¡Œçš„文件中加载值到å˜é‡"
eng "Can't load value from file with fixed size rows to variable"
ger "Kann Wert aus Datei mit Zeilen fester Größe nicht in Variable laden"
spa "No puedo cargar valor desde fichero/archivo con filas de tamaño fijo en variable"
ER_CANT_CREATE_USER_WITH_GRANT 42000
+ chi "您ä¸å…许使用创建用户时给予GRANT"
eng "You are not allowed to create a user with GRANT"
ger "Sie dürfen keinen Benutzer mit GRANT anlegen"
spa "No está autorizado a crear un usuario con GRANT"
ER_WRONG_VALUE_FOR_TYPE
+ chi "ä¸æ­£ç¡®çš„%-.32s值:'%-.128T' 函数:%-.32s"
eng "Incorrect %-.32s value: '%-.128T' for function %-.32s"
ger "Falscher %-.32s-Wert: '%-.128T' für Funktion %-.32s"
spa "Incorrecto valor %-.32s: '%-.128T' para la función %-.32s"
ER_TABLE_DEF_CHANGED
+ chi "表定义已更改,请é‡è¯•"
eng "Table definition has changed, please retry transaction"
ger "Tabellendefinition wurde geändert, bitte starten Sie die Transaktion neu"
spa "Ha cambiado la definición de la tabla, por favor reintente la transacción"
ER_SP_DUP_HANDLER 42000
+ chi "在åŒä¸€å—中声明的处ç†ç¨‹åºé‡å¤"
eng "Duplicate handler declared in the same block"
ger "Doppelter Handler im selben Block deklariert"
spa "Manejador duplicado declarado en mismo bloque"
ER_SP_NOT_VAR_ARG 42000
+ chi "OUT或INOUTå‚æ•°%d 例程 %sçš„ä¸æ˜¯BEFORE触å‘器里的å˜é‡æˆ–新伪å˜é‡"
eng "OUT or INOUT argument %d for routine %s is not a variable or NEW pseudo-variable in BEFORE trigger"
ger "OUT- oder INOUT-Argument %d für Routine %s ist keine Variable"
spa "El argumento %d OUT o INOUT para la rutina %s no es una variable o pseudo-variable NEW en disparador BEFORE"
ER_SP_NO_RETSET 0A000
+ chi "ä¸å…许从%s返回结果集"
eng "Not allowed to return a result set from a %s"
ger "Rückgabe einer Ergebnismenge aus einer %s ist nicht erlaubt"
spa "No autorizado a devolver un conjunto de resultados desde un %s"
ER_CANT_CREATE_GEOMETRY_OBJECT 22003
+ chi "无法从å‘é€åˆ°å‡ ä½•å­—段的数æ®ä¸­èŽ·å–几何对象"
eng "Cannot get geometry object from data you send to the GEOMETRY field"
ger "Kann kein Geometrieobjekt aus den Daten machen, die Sie dem GEOMETRY-Feld übergeben haben"
spa "No puedo obtener objeto de geometría desde los datos que vd envía al campo GEOMETRY"
ER_FAILED_ROUTINE_BREAK_BINLOG
+ chi "ROUTINE失败,定义中既没有NO SQL也没有READ SQL DAT。å¯ç”¨äºŒè¿›åˆ¶æ—¥å¿—记录;如果更新éžäº‹åŠ¡æ€§è¡¨ï¼Œåˆ™äºŒè¿›åˆ¶æ—¥å¿—将会错过其更改"
eng "A routine failed and has neither NO SQL nor READS SQL DATA in its declaration and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes"
ger "Eine Routine, die weder NO SQL noch READS SQL DATA in der Deklaration hat, schlug fehl und Binärlogging ist aktiv. Wenn Nicht-Transaktions-Tabellen aktualisiert wurden, enthält das Binärlog ihre Änderungen nicht"
spa "Ha fallado una rutina y no tiene ni NO SQL ni READS SQL DATA en su declaración y el historial (log) binario se encuentra activado; si han sido actualizadas tablas no transaccionales, el fichero/archivo binario de historial (log) perderá sus cambios"
ER_BINLOG_UNSAFE_ROUTINE
+ chi "此函数定义中没有DETERMINISTIC,NO SQL,或者READS SQL DATA,并且已å¯ç”¨äºŒè¿›åˆ¶æ—¥å¿—记录(您*å¯èƒ½*希望使用较少的安全性的log_bin_trust_function_creatorså˜é‡ï¼‰"
eng "This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)"
ger "Diese Routine hat weder DETERMINISTIC, NO SQL noch READS SQL DATA in der Deklaration und Binärlogging ist aktiv (*vielleicht* sollten Sie die weniger sichere Variable log_bin_trust_function_creators verwenden)"
spa "Esta función no tiene ninguno de DETERMINISTIC, NO SQL o READS SQL DATA en su declaración y está activado el historial binario (vd *podría* querer usar la variable menos segura log_bin_trust_function_creators)"
ER_BINLOG_CREATE_ROUTINE_NEED_SUPER
+ chi "您没有超级特æƒå’ŒäºŒè¿›åˆ¶æ—¥å¿—记录已å¯ç”¨ï¼ˆæ‚¨*å¯èƒ½*想è¦ä½¿ç”¨è¾ƒå°‘的安全log_bin_trust_function_creatorså˜é‡ï¼‰"
eng "You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)"
ger "Sie haben keine SUPER-Berechtigung und Binärlogging ist aktiv (*vielleicht* sollten Sie die weniger sichere Variable log_bin_trust_function_creators verwenden)"
spa "No tiene el privilegio SUPER y está activado el historial binario (*podría* querer usar la variable menos segura log_bin_trust_function_creators)"
ER_EXEC_STMT_WITH_OPEN_CURSOR
+ chi "您无法执行具有与之关è”的打开Cursorçš„prepared statement。é‡ç½®è¯­å¥ä»¥é‡æ–°æ‰§è¡Œå®ƒ"
eng "You can't execute a prepared statement which has an open cursor associated with it. Reset the statement to re-execute it"
ger "Sie können keine vorbereitete Anweisung ausführen, die mit einem geöffneten Cursor verknüpft ist. Setzen Sie die Anweisung zurück, um sie neu auszuführen"
spa "No puede ejecutar una sentencia preparada que tiene abierto un cursor asociado con ella. Renueve la sentencia para re-ejecutarla"
ER_STMT_HAS_NO_OPEN_CURSOR
+ chi "语å¥ï¼ˆ%lu)没有开放的Cursor"
eng "The statement (%lu) has no open cursor"
ger "Die Anweisung (%lu) hat keinen geöffneten Cursor"
spa "La sentencia (%lu) no tiene cursor abierto"
ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
+ chi "在存储的函数或触å‘器中ä¸å…许显å¼æˆ–éšå¼æ交"
eng "Explicit or implicit commit is not allowed in stored function or trigger"
ger "Explizites oder implizites Commit ist in gespeicherten Funktionen und in Triggern nicht erlaubt"
spa "Comisión (commit) implícita o explícita no permitida en funciones almacenadas o en disparadores"
ER_NO_DEFAULT_FOR_VIEW_FIELD
+ chi "VIEW的列'%-.192s.%-.192s'底层表没有默认值"
eng "Field of view '%-.192s.%-.192s' underlying table doesn't have a default value"
ger "Ein Feld der dem View '%-.192s.%-.192s' zugrundeliegenden Tabelle hat keinen Vorgabewert"
spa "El campo de tabla subyacente de vista '%-.192s.%-.192s' no tiene valor por defecto"
ER_SP_NO_RECURSION
+ chi "ä¸å…许递归存储功能和触å‘器"
eng "Recursive stored functions and triggers are not allowed"
ger "Rekursive gespeicherte Routinen und Triggers sind nicht erlaubt"
spa "No autorizadas funciones almacenadas recursivas ni disparadores"
ER_TOO_BIG_SCALE 42000 S1009
+ chi "指定的大规模%llu为'%-.192s'。最大是%u"
eng "Too big scale %llu specified for '%-.192s'. Maximum is %u"
ger "Zu großer Skalierungsfaktor %llu für '%-.192s' angegeben. Maximum ist %u"
spa "Escala %llu demasiado grande especificada para '%-.192s'. El máximo es de %u"
ER_TOO_BIG_PRECISION 42000 S1009
+ chi "指定的精度%llu太大 '%-.192s'。最大是%u"
eng "Too big precision %llu specified for '%-.192s'. Maximum is %u"
ger "Zu große Genauigkeit %llu für '%-.192s' angegeben. Maximum ist %u"
spa "Precisión %llu demasiado grande especificada para '%-.192s'. El máximo es de %u"
ER_M_BIGGER_THAN_D 42000 S1009
+ chi "对于FLOAT(M,D),DOUBLE(M,D)或DECIMAL(M,D),M必须> = D(列'%-.192s')"
eng "For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '%-.192s')"
ger "Für FLOAT(M,D), DOUBLE(M,D) oder DECIMAL(M,D) muss M >= D sein (Feld '%-.192s')"
spa "Para flotante(M,D), doble(M,D) o decimal(M,D), M debe de ser >= D (columna '%-.192s')"
ER_WRONG_LOCK_OF_SYSTEM_TABLE
+ chi "您无法将系统表的写入é”定与其他表或é”定类型相结åˆ"
eng "You can't combine write-locking of system tables with other tables or lock types"
- ger "Sie können Schreibsperren auf der Systemtabelle nicht mit anderen Tabellen kombinieren"
+ ger "Sie können Schreibsperren auf der Systemtabelle nicht mit anderen Tabellen kombinieren"
spa "No puede combinar bloqueo de escritura de tablas de sistema con otras tablas o tipos de bloqueo"
ER_CONNECT_TO_FOREIGN_DATA_SOURCE
+ chi "无法连接到外数æ®æºï¼š%.64s"
eng "Unable to connect to foreign data source: %.64s"
ger "Kann nicht mit Fremddatenquelle verbinden: %.64s"
spa "No puedo conectar a fuente foránea de datos: %.64s"
ER_QUERY_ON_FOREIGN_DATA_SOURCE
+ chi "处ç†å¯¹å¤–æ•°æ®æºä¸Šçš„查询时出现问题。数æ®æºé”™è¯¯ï¼š%-.64s"
eng "There was a problem processing the query on the foreign data source. Data source error: %-.64s"
ger "Bei der Verarbeitung der Abfrage ist in der Fremddatenquelle ein Problem aufgetreten. Datenquellenfehlermeldung: %-.64s"
spa "Hubo un problema procesando la consulta (query) en la fuente foránea de datos. Error de fuente de datos: %-.64s"
ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST
+ chi "您å°è¯•å¼•ç”¨çš„外数æ®æºä¸å­˜åœ¨ã€‚æ•°æ®æºé”™è¯¯ï¼š%-.64s"
eng "The foreign data source you are trying to reference does not exist. Data source error: %-.64s"
ger "Die Fremddatenquelle, auf die Sie zugreifen wollen, existiert nicht. Datenquellenfehlermeldung: %-.64s"
spa "La fuente foránea de datos que intenta referenciar no existe. Error en fuente de datos: %-.64s"
ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE
+ chi "无法创建è”åˆè¡¨ã€‚æ•°æ®æºè¿žæŽ¥å­—符串'%-.64s'ä¸æ˜¯æ­£ç¡®çš„æ ¼å¼"
eng "Can't create federated table. The data source connection string '%-.64s' is not in the correct format"
ger "Kann föderierte Tabelle nicht erzeugen. Der Datenquellen-Verbindungsstring '%-.64s' hat kein korrektes Format"
spa "No puedo crear tabla federada. La cadena de conexión de la fuente de datos '%-.64s' no tiene el formato correcto"
ER_FOREIGN_DATA_STRING_INVALID
+ chi "æ•°æ®æºè¿žæŽ¥å­—符串'%-.64s'ä¸æ˜¯æ­£ç¡®çš„æ ¼å¼"
eng "The data source connection string '%-.64s' is not in the correct format"
ger "Der Datenquellen-Verbindungsstring '%-.64s' hat kein korrektes Format"
spa "La cadena de conexón de la fuente de datos '%-.64s' no tiene el formato correcto"
ER_CANT_CREATE_FEDERATED_TABLE
+ chi "无法创建è”åˆè¡¨ã€‚外数æ®SRC错误:%-.64s"
eng "Can't create federated table. Foreign data src error: %-.64s"
ger "Kann föderierte Tabelle nicht erzeugen. Fremddatenquellenfehlermeldung: %-.64s"
spa "No puedo crear tabla federada. Error en fuente de datos foráneos: %-.64s"
ER_TRG_IN_WRONG_SCHEMA
+ chi "触å‘在错的SCHEMA"
eng "Trigger in wrong schema"
ger "Trigger im falschen Schema"
spa "Disparador en esquema equivocado"
ER_STACK_OVERRUN_NEED_MORE
+ chi "线程堆栈溢出:%ld字节堆栈的%ld字节,以åŠæ‰€éœ€çš„%ld字节。使用'mariadbd --thread_stack =#'指定更大的堆栈"
eng "Thread stack overrun: %ld bytes used of a %ld byte stack, and %ld bytes needed. Consider increasing the thread_stack system variable."
ger "Thread-Stack-Überlauf: %ld Bytes eines %ld-Byte-Stacks in Verwendung, und %ld Bytes benötigt. Verwenden Sie 'mariadbd --thread_stack=#', um einen größeren Stack anzugeben"
jpn "スレッドスタックä¸è¶³ã§ã™(使用: %ld ; サイズ: %ld ; è¦æ±‚: %ld)。より大ãã„値㧠'mariadbd --thread_stack=#' ã®æŒ‡å®šã‚’ã—ã¦ãã ã•ã„。"
spa "Desbordamiento en pila de hilos (threads): %ld bytes usados de una pila de %ld y son necesarios %ld bytes. Considere el incrementar la variable de sistema --thread_stack=#."
ER_TOO_LONG_BODY 42000 S1009
+ chi "'%-.100sâ€çš„ROUTINE太长了"
eng "Routine body for '%-.100s' is too long"
ger "Routinen-Body für '%-.100s' ist zu lang"
spa "El cuerpo de rutina para '%-.100s' es demasiado largo"
ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
+ chi "无法删除默认索引缓存"
eng "Cannot drop default keycache"
ger "Der vorgabemäßige Schlüssel-Cache kann nicht gelöscht werden"
spa "No puedo eliminar keycache por defecto"
ER_TOO_BIG_DISPLAYWIDTH 42000 S1009
+ chi "显示宽度超过'%-.192s'的范围(max =%lu)"
eng "Display width out of range for '%-.192s' (max = %lu)"
ger "Anzeigebreite außerhalb des zulässigen Bereichs für '%-.192s' (Maximum = %lu)"
spa "Ancho a mostrar fuera de rango para '%-.192s' (máx = %lu)"
ER_XAER_DUPID XAE08
+ chi "XAER_DUPID:xid已存在"
eng "XAER_DUPID: The XID already exists"
ger "XAER_DUPID: Die XID existiert bereits"
spa "XAER_DUPID: El XID ya existe"
ER_DATETIME_FUNCTION_OVERFLOW 22008
+ chi "DateTime函数:%-.32s字段溢出"
eng "Datetime function: %-.32s field overflow"
ger "Datetime-Funktion: %-.32s Feldüberlauf"
spa "Función Datetime: %-.32s desbordamiento de campo"
ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
+ chi "在存储的函数/触å‘器中无法更新表'%-.192s',因为它已被调用此存储的函数/触å‘器调用的语å¥"
eng "Can't update table '%-.192s' in stored function/trigger because it is already used by statement which invoked this stored function/trigger"
ger "Kann Tabelle '%-.192s' in gespeicherter Funktion oder Trigger nicht aktualisieren, weil sie bereits von der Anweisung verwendet wird, die diese gespeicherte Funktion oder den Trigger aufrief"
spa "No puedo actualizar tabla '%-.192s' en función almacenada/disparador porque ya está siendo usada por la sentencia que invocó esta función almacenada/disparador"
ER_VIEW_PREVENT_UPDATE
- eng "The definition of table '%-.192s' prevents operation %.192s on table '%-.192s'"
- ger "Die Definition der Tabelle '%-.192s' verhindert die Operation %.192s auf Tabelle '%-.192s'"
- spa "La definición de la tabla '%-.192s' previene la operación %.192s en la tabla '%-.192s'"
+ chi "表'%-.192s'的定义å¯é˜²æ­¢åœ¨è¡¨'%-.192s'上的æ“作'%-.192s'"
+ eng "The definition of table '%-.192s' prevents operation %-.192s on table '%-.192s'"
+ ger "Die Definition der Tabelle '%-.192s' verhindert die Operation %-.192s auf Tabelle '%-.192s'"
+ spa "La definición de la tabla '%-.192s' previene la operación %-.192s en la tabla '%-.192s'"
ER_PS_NO_RECURSION
+ chi "prepared statement包å«ä¸€ä¸ªæœ‰å…³è¯¥è¯­å¥çš„存储例程调用。它ä¸å…许以这ç§é€’å½’æ–¹å¼æ‰§è¡Œprepared statement"
eng "The prepared statement contains a stored routine call that refers to that same statement. It's not allowed to execute a prepared statement in such a recursive manner"
ger "Die vorbereitete Anweisung enthält einen Aufruf einer gespeicherten Routine, die auf eben dieselbe Anweisung verweist. Es ist nicht erlaubt, eine vorbereitete Anweisung in solch rekursiver Weise auszuführen"
spa "La sentencia preparada contiene una llamada a rutina almacenada que se refiere a esa misma sentencia. No está permitido ejecutar una sentencia preparada de esta manera recursiva"
ER_SP_CANT_SET_AUTOCOMMIT
+ chi "ä¸å…许从存储的函数或触å‘器设置自动判处"
eng "Not allowed to set autocommit from a stored function or trigger"
ger "Es ist nicht erlaubt, innerhalb einer gespeicherten Funktion oder eines Triggers AUTOCOMMIT zu setzen"
spa "No permitido usar auto acometida (autocommit) desde una función almacenada o disparador"
ER_MALFORMED_DEFINER 0L000
+ chi "无效的定义"
eng "Invalid definer"
spa "Definidor inválido"
ER_VIEW_FRM_NO_USER
+ chi "VIEW'%-.192s'。'%-.192s'没有ç»å®šçš„ä¿¡æ¯ï¼ˆæ—§è¡¨æ ¼å¼ï¼‰ã€‚当å‰ç”¨æˆ·ç”¨ä½œå®šä¹‰ã€‚请é‡æ–°åˆ›å»ºè§†å›¾ï¼"
eng "View '%-.192s'.'%-.192s' has no definer information (old table format). Current user is used as definer. Please recreate the view!"
ger "View '%-.192s'.'%-.192s' hat keine Definierer-Information (altes Tabellenformat). Der aktuelle Benutzer wird als Definierer verwendet. Bitte erstellen Sie den View neu"
spa "La vista '%-.192s'.'%-.192s' no tiene información de definidor (formato viejo de tabla). Se usa el usuario actual como definidor. Por favor, ¡recrea la vista!"
ER_VIEW_OTHER_USER
+ chi "您需è¦ä½¿ç”¨'%-.192s'@'%-.192s'的创建视图的超级特æƒ"
eng "You need the SUPER privilege for creation view with '%-.192s'@'%-.192s' definer"
ger "Sie brauchen die SUPER-Berechtigung, um einen View mit dem Definierer '%-.192s'@'%-.192s' zu erzeugen"
spa "Vd necesita el privilegio SUPER para la creación de la vista con definidor '%-.192s'@'%-.192s'"
ER_NO_SUCH_USER
+ chi "指定为定义的用户('%-.64s'@'%-.64s')ä¸å­˜åœ¨"
eng "The user specified as a definer ('%-.64s'@'%-.64s') does not exist"
ger "Der als Definierer angegebene Benutzer ('%-.64s'@'%-.64s') existiert nicht"
spa "El usuario especificado como definidor ('%-.64s'@'%-.64s') no existe"
ER_FORBID_SCHEMA_CHANGE
+ chi "ä¸å…许从'%-.192s'到'%-.192s'çš„SCHEMA更改"
eng "Changing schema from '%-.192s' to '%-.192s' is not allowed"
ger "Wechsel des Schemas von '%-.192s' auf '%-.192s' ist nicht erlaubt"
spa "Vd no está autorizado a cambiar el esquema de '%-.192s' a '%-.192s'"
ER_ROW_IS_REFERENCED_2 23000
+ chi "无法删除或更新父行:外键约æŸå¤±è´¥ï¼ˆ%.192s)"
eng "Cannot delete or update a parent row: a foreign key constraint fails (%.192s)"
ger "Kann Eltern-Zeile nicht löschen oder aktualisieren: eine Fremdschlüsselbedingung schlägt fehl (%.192s)"
spa "No puedo borrar o actualizar una fila padre: falla una restricción de clave foránea (%.192s)"
ER_NO_REFERENCED_ROW_2 23000
+ chi "无法添加或更新å­è¡Œï¼šå¤–键约æŸå¤±è´¥ï¼ˆ%.192s)"
eng "Cannot add or update a child row: a foreign key constraint fails (%.192s)"
ger "Kann Kind-Zeile nicht hinzufügen oder aktualisieren: eine Fremdschlüsselbedingung schlägt fehl (%.192s)"
spa "No puedo añadir o actualizar una fila hija: falla una restricción de clave foránea (%.192s)"
ER_SP_BAD_VAR_SHADOW 42000
+ chi "å˜é‡'%-.64s'必须用`...`,或é‡å‘½å"
eng "Variable '%-.64s' must be quoted with `...`, or renamed"
ger "Variable '%-.64s' muss mit `...` geschützt oder aber umbenannt werden"
spa "La variable '%-.64s' debe de ser entrecomillada con `...` o renombrada"
ER_TRG_NO_DEFINER
+ chi "触å‘'%-.192s'çš„ç»å¯¹å±žæ€§ã€‚'%-.192s'。触å‘器将在调用者的授æƒä¸‹æ¿€æ´»ï¼Œè¯¥æƒé™å¯èƒ½ä¸è¶³ã€‚请é‡æ–°åˆ›å»ºè§¦å‘器"
eng "No definer attribute for trigger '%-.192s'.'%-.192s'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger"
ger "Kein Definierer-Attribut für Trigger '%-.192s'.'%-.192s'. Der Trigger wird mit der Autorisierung des Aufrufers aktiviert, der möglicherweise keine zureichenden Berechtigungen hat. Bitte legen Sie den Trigger neu an"
spa "No hay atributo de definidor para disparador '%-.192s'.'%-.192s'. El disparador será activado bajo la autorización del invocador, el cual puede tener insuficientes privilegios. Por favor, vuelva a crear el disparador"
ER_OLD_FILE_FORMAT
+ chi "'%-.192s'具有旧格å¼ï¼Œæ‚¨åº”该é‡æ–°åˆ›å»º'%s'对象"
eng "'%-.192s' has an old format, you should re-create the '%s' object(s)"
ger "'%-.192s' hat altes Format, Sie sollten die '%s'-Objekt(e) neu erzeugen"
spa "'%-.192s' tiene un formato viejo, debería vd de volver a crear el/los objeto(s) '%s'"
ER_SP_RECURSION_LIMIT
+ chi "递归é™åˆ¶%d(如max_sp_recursion_depthå˜é‡è®¾ç½®ï¼‰çš„例程%.192s"
eng "Recursive limit %d (as set by the max_sp_recursion_depth variable) was exceeded for routine %.192s"
ger "Rekursionsgrenze %d (durch Variable max_sp_recursion_depth gegeben) wurde für Routine %.192s überschritten"
spa "El límite recursivo %d (según se indica mediante la variable max_sp_recursion_depth) se ha excedido para la rutina %.192s"
ER_SP_PROC_TABLE_CORRUPT
+ chi "无法加载常规%-.192s(内部代ç %d)。有关更多详细信æ¯ï¼Œè¯·è¿è¡ŒSHOW WARNINGS"
eng "Failed to load routine %-.192s (internal code %d). For more details, run SHOW WARNINGS"
ger "Routine %-.192s (interner Code %d) konnte nicht geladen werden. Weitere Einzelheiten erhalten Sie, wenn Sie SHOW WARNINGS ausführen"
ukr "Ðевдала Ñпроба завантажити процедуру %-.192s (внутрішний код %d). Ð”Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´ÐµÑ‚Ð°Ð»ÑŒÐ½Ð¾Ñ— інформації викориÑтовуйте SHOW WARNINGS"
spa "No pude cargar la rutina %-.192s (código interno %d). Para más detalles, ejecute SHOW WARNINGS"
ER_SP_WRONG_NAME 42000
+ chi "常规å称错误ä¸æ­£ç¡®'%-.192s'"
eng "Incorrect routine name '%-.192s'"
ger "Ungültiger Routinenname '%-.192s'"
spa "Nombre incorrecto de rutina '%-.192s'"
ER_TABLE_NEEDS_UPGRADE
+ chi "需è¦å‡çº§ã€‚请åš\"ä¿®å¤%s%`s \"或转储/é‡æ–°åŠ è½½ä»¥ä¿®å¤ï¼"
eng "Upgrade required. Please do \"REPAIR %s %`s\" or dump/reload to fix it!"
ger "Aktualisierung erforderlich. Bitte zum Reparieren \"REPAIR %s %`s\" eingeben!"
spa "Es necesaria una mejora. Por favor, ¡haga \"REPAIR %s %`s\" o vuelque/recargue para arreglarlo!"
ER_SP_NO_AGGREGATE 42000
+ chi "存储函数ä¸æ”¯æŒèšåˆ"
eng "AGGREGATE is not supported for stored functions"
ger "AGGREGATE wird bei gespeicherten Funktionen nicht unterstützt"
spa "AGGREGATE no está soportado en funciones almacenadas"
ER_MAX_PREPARED_STMT_COUNT_REACHED 42000
+ chi "无法创建超过max_prepared_stmt_count语å¥ï¼ˆå½“å‰å€¼ï¼š%u)"
eng "Can't create more than max_prepared_stmt_count statements (current value: %u)"
ger "Kann nicht mehr Anweisungen als max_prepared_stmt_count erzeugen (aktueller Wert: %u)"
spa "No puedo crear más de max_prepared_stmt_count sentencias (valor en curso: %u)"
ER_VIEW_RECURSIVE
+ chi "%`s.%`s包å«è§†å›¾é€’å½’"
eng "%`s.%`s contains view recursion"
ger "%`s.%`s enthält View-Rekursion"
spa "`%-.192s`.`%-.192s` contiene recursividad de vista""
ER_NON_GROUPING_FIELD_USED 42000
+ chi "éžåˆ†ç»„字段'%-.192s'用于%-.64sæ¡æ¬¾"
eng "Non-grouping field '%-.192s' is used in %-.64s clause"
ger "In der %-.192s-Klausel wird das die Nicht-Gruppierungsspalte '%-.64s' verwendet"
spa "No hay campo agrupado '%-.192s' usado en cláusula %-.64s"
ER_TABLE_CANT_HANDLE_SPKEYS
+ chi "存储引擎%sä¸æ”¯æŒSPATIAL索引"
eng "The storage engine %s doesn't support SPATIAL indexes"
ger "Der verwendete Tabellentyp (%s) unterstützt keine SPATIAL-Indizes"
spa "El motor de almacenaje %s no soporta índices SPATIAL"
ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA
+ chi "无法在系统表上创建触å‘器"
eng "Triggers can not be created on system tables"
ger "Trigger können nicht auf Systemtabellen erzeugt werden"
spa "Los disparadores no pueden ser creados en las tablas del sistema"
ER_REMOVED_SPACES
+ chi "å‰é¢çš„空格从å称'%s'删除"
eng "Leading spaces are removed from name '%s'"
ger "Führende Leerzeichen werden aus dem Namen '%s' entfernt"
spa "Se quitan los espacios iniciales del nombre '%s'"
ER_AUTOINC_READ_FAILED
+ chi "无法从存储引擎读å–自动增é‡å€¼"
eng "Failed to read auto-increment value from storage engine"
ger "Lesen des Autoincrement-Werts von der Speicher-Engine fehlgeschlagen"
hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन से auto-increment का मान पà¥à¤¨à¥‡ में असफल रहे"
spa "No pude leer valor de auto-incremento del motor de almacenaje"
ER_USERNAME
+ chi "用户å"
eng "user name"
ger "Benutzername"
hindi "यूज़र का नाम"
spa "nombre de usuario"
ER_HOSTNAME
+ chi "主机å"
eng "host name"
ger "Hostname"
hindi "होसà¥à¤Ÿ का नाम"
spa "nombre de equipo"
ER_WRONG_STRING_LENGTH
+ chi "字符串'%-.70T'对于%s(应ä¸è¶…过%d)太长"
eng "String '%-.70T' is too long for %s (should be no longer than %d)"
ger "String '%-.70T' ist zu lang für %s (sollte nicht länger sein als %d)"
spa "La cadena '%-.70T' es demasiado larga para %s (no debería de ser mayor de %d)"
ER_NON_INSERTABLE_TABLE
+ chi "目标表%-.100s %sä¸å¯æ’å…¥"
eng "The target table %-.100s of the %s is not insertable-into"
ger "Die Zieltabelle %-.100s von %s ist nicht einfügbar"
jpn "対象表 %-.100s ã¯æŒ¿å…¥å¯èƒ½ã§ã¯ãªã„ã®ã§ã€%s ã‚’è¡Œãˆã¾ã›ã‚“。"
spa "La tabla destino %-.100s de la %s no es insertable-dentro"
ER_ADMIN_WRONG_MRG_TABLE
- eng "Table '%-.64s' is differently defined or of non-MyISAM type or doesn't exist"
- ger "Tabelle '%-.64s' ist unterschiedlich definiert, nicht vom Typ MyISAM oder existiert nicht"
- spa "La tabla '%-.64s' está definida de forma diferente o es del tipo no-MyISAM o no existe"
+ chi "表'%-.64s'ä¸åŒå®šä¹‰ã€æˆ–éžmyisam类型ã€æˆ–ä¸å­˜åœ¨"
+ eng "Table '%-.64s' is differently defined or of non-MyISAM type or doesn't exist"
+ ger "Tabelle '%-.64s' ist unterschiedlich definiert, nicht vom Typ MyISAM oder existiert nicht"
+ spa "La tabla '%-.64s' está definida de forma diferente o es del tipo no-MyISAM o no existe"
ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT
- eng "Too high level of nesting for select"
- ger "Zu tief verschachtelte SELECT-Anweisungen"
- spa "Demasiado alto el nivel de anidamiento para la selección"
+ chi "太高的嵌套SELECT"
+ eng "Too high level of nesting for select"
+ ger "Zu tief verschachtelte SELECT-Anweisungen"
+ spa "Demasiado alto el nivel de anidamiento para la selección"
ER_NAME_BECOMES_EMPTY
- eng "Name '%-.64s' has become ''"
- ger "Name '%-.64s' wurde zu ''"
- spa "El nombre '%-.64s' ha pasado a ser ''"
+ chi "å'%-.64s'å·²æˆä¸º''"
+ eng "Name '%-.64s' has become ''"
+ ger "Name '%-.64s' wurde zu ''"
+ spa "El nombre '%-.64s' ha pasado a ser ''"
ER_AMBIGUOUS_FIELD_TERM
- eng "First character of the FIELDS TERMINATED string is ambiguous; please use non-optional and non-empty FIELDS ENCLOSED BY"
- ger "Das erste Zeichen der Zeichenkette FIELDS TERMINATED ist mehrdeutig; bitte benutzen Sie nicht optionale und nicht leere FIELDS ENCLOSED BY"
- spa "El primer carácter de la cadena de los FIELDS TERMINATED es ambiguo; por favor, use FIELDS ENCLOSED BY no opcionales y no vacíos"
+ chi "FIELDS TERMINATED字符串的第一个字符是模棱两å¯çš„;请使用éžç©ºå­—段FIELDS ENCLOSED BY"
+ eng "First character of the FIELDS TERMINATED string is ambiguous; please use non-optional and non-empty FIELDS ENCLOSED BY"
+ ger "Das erste Zeichen der Zeichenkette FIELDS TERMINATED ist mehrdeutig; bitte benutzen Sie nicht optionale und nicht leere FIELDS ENCLOSED BY"
+ spa "El primer carácter de la cadena de los FIELDS TERMINATED es ambiguo; por favor, use FIELDS ENCLOSED BY no opcionales y no vacíos"
ER_FOREIGN_SERVER_EXISTS
- eng "The foreign server, %s, you are trying to create already exists"
- ger "Der entfernte Server %s, den Sie versuchen zu erzeugen, existiert schon"
- spa "El servidor foráneo %s que intenta crear ya existe"
+ chi "您正在å°è¯•åˆ›å»ºçš„外æ¥æœåŠ¡å™¨%s已存在"
+ eng "The foreign server, %s, you are trying to create already exists"
+ ger "Der entfernte Server %s, den Sie versuchen zu erzeugen, existiert schon"
+ spa "El servidor foráneo %s que intenta crear ya existe"
ER_FOREIGN_SERVER_DOESNT_EXIST
+ chi "您å°è¯•å¼•ç”¨çš„外部æœåŠ¡å™¨å称ä¸å­˜åœ¨ã€‚æ•°æ®æºé”™è¯¯ï¼š%-.64s"
eng "The foreign server name you are trying to reference does not exist. Data source error: %-.64s"
- ger "Die externe Verbindung, auf die Sie zugreifen wollen, existiert nicht. Datenquellenfehlermeldung: %-.64s"
+ ger "Die externe Verbindung, auf die Sie zugreifen wollen, existiert nicht. Datenquellenfehlermeldung: %-.64s"
spa "El nombre del servidor foráneo que intenta referenciar no existe. Error en fuentes de datos: %-.64s"
ER_ILLEGAL_HA_CREATE_OPTION
+ chi "表存储引擎'%-.64s'ä¸æ”¯æŒåˆ›å»ºé€‰é¡¹'%.64s'"
eng "Table storage engine '%-.64s' does not support the create option '%.64s'"
ger "Speicher-Engine '%-.64s' der Tabelle unterstützt die Option '%.64s' nicht"
spa "El motor de almacenaje de la tabla '%-.64s' no soporta la opción de creación '%.64s'"
ER_PARTITION_REQUIRES_VALUES_ERROR
+ chi "语法错误:%-.64s PARTITIONING需è¦å®šä¹‰ç»™æ¯ä¸ªåˆ†åŒºVALUES %-.64s"
eng "Syntax error: %-.64s PARTITIONING requires definition of VALUES %-.64s for each partition"
ger "Fehler in der SQL-Syntax: %-.64s-PARTITIONierung erfordert Definition von VALUES %-.64s für jede Partition"
spa "Error de sintaxis: %-.64s PARTITIONING requiere de la definición de VALUES %-.64s para cada partición"
swe "Syntaxfel: %-.64s PARTITIONering kräver definition av VALUES %-.64s för varje partition"
ER_PARTITION_WRONG_VALUES_ERROR
+ chi "åªæœ‰%-.64s PARTITIONINGå¯ä»¥ä½¿ç”¨VALUES %-.64s在分区定义中"
eng "Only %-.64s PARTITIONING can use VALUES %-.64s in partition definition"
ger "Nur %-.64s-PARTITIONierung kann VALUES %-.64s in der Partitionsdefinition verwenden"
spa "Sólo %-.64s PARTITIONING puede usar VALUES %-.64s en la definición de la partición"
swe "Endast %-.64s partitionering kan använda VALUES %-.64s i definition av partitionen"
ER_PARTITION_MAXVALUE_ERROR
+ chi "MAXVALUEåªèƒ½åœ¨æœ€åŽä¸€ä¸ªåˆ†åŒºå®šä¹‰ä¸­ä½¿ç”¨"
eng "MAXVALUE can only be used in last partition definition"
ger "MAXVALUE kann nur für die Definition der letzten Partition verwendet werden"
spa "MAXVALUE sólo se puede usar en la definición de la última partición"
swe "MAXVALUE kan bara användas i definitionen av den sista partitionen"
ER_PARTITION_SUBPARTITION_ERROR
+ chi "å­åˆ†åŒºåªèƒ½æ˜¯å“ˆå¸Œåˆ†åŒºå’Œåˆ†åŒºåˆ—"
eng "Subpartitions can only be hash partitions and by key"
ger "Unterpartitionen dürfen nur HASH- oder KEY-Partitionen sein"
spa "Las subparticiones sólo pueden ser particiones dispersas (hash) y mediante clave"
swe "Subpartitioner kan bara vara hash och key partitioner"
ER_PARTITION_SUBPART_MIX_ERROR
+ chi "如果在一个分区上,必须在所有分区上定义å­ç»„分"
eng "Must define subpartitions on all partitions if on one partition"
ger "Wenn Sie Unterpartitionen auf einer Partition definieren, müssen Sie das für alle Partitionen tun"
spa "Se deben de definir subparticiones en todas las particiones si se está en una partición"
swe "Subpartitioner måste definieras på alla partitioner om på en"
ER_PARTITION_WRONG_NO_PART_ERROR
+ chi "定义了错误的分区数,与以å‰çš„设置ä¸åŒ¹é…"
eng "Wrong number of partitions defined, mismatch with previous setting"
ger "Falsche Anzahl von Partitionen definiert, stimmt nicht mit vorherigen Einstellungen überein"
spa "Definido un número equivocado de particiones, no coincide con configuración previa"
swe "Antal partitioner definierade och antal partitioner är inte lika"
ER_PARTITION_WRONG_NO_SUBPART_ERROR
+ chi "错误的å­ç»„分数定义,与以å‰çš„设置ä¸åŒ¹é…"
eng "Wrong number of subpartitions defined, mismatch with previous setting"
ger "Falsche Anzahl von Unterpartitionen definiert, stimmt nicht mit vorherigen Einstellungen überein"
spa "Definido un número equivocado de subparticiones, no coincide con configuración previa"
swe "Antal subpartitioner definierade och antal subpartitioner är inte lika"
ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
+ chi "ä¸å…许(å­ï¼‰åˆ†åŒºåŠŸèƒ½ä¸­çš„常é‡ï¼Œéšæœºæˆ–时区ä¾èµ–表达å¼"
eng "Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed"
ger "Konstante oder Random-Ausdrücke in (Unter-)Partitionsfunktionen sind nicht erlaubt"
spa "Las expresiones constantes, al azar o dependientes de zona en función de (sub)particionado no están permitidas"
swe "Konstanta uttryck eller slumpmässiga uttryck är inte tillåtna (sub)partitioneringsfunktioner"
ER_NOT_CONSTANT_EXPRESSION
+ chi "%s中的表达必须是æ’定的"
eng "Expression in %s must be constant"
ger "Ausdrücke in %s müssen konstant sein"
spa "Las expresiones incluidas en %s deben de ser constantes"
swe "Uttryck i %s måste vara ett konstant uttryck"
ER_FIELD_NOT_FOUND_PART_ERROR
+ chi "在表中找ä¸åˆ°åˆ†åŒºåŠŸèƒ½çš„字段列表中的字段"
eng "Field in list of fields for partition function not found in table"
ger "Felder in der Feldliste der Partitionierungsfunktion wurden in der Tabelle nicht gefunden"
spa "Campo en la lista de campos para función de partición no hallado en tabla"
swe "Fält i listan av fält för partitionering med key inte funnen i tabellen"
ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR
+ chi "åªå…许在索引分区中å…许字段列表"
eng "List of fields is only allowed in KEY partitions"
ger "Eine Feldliste ist nur in KEY-Partitionen erlaubt"
spa "Lista de campos sólo se permite en particiones KEY"
swe "En lista av fält är endast tillåtet för KEY partitioner"
ER_INCONSISTENT_PARTITION_INFO_ERROR
+ chi "FRM文件中的分区信æ¯ä¸ä¸Žå¯ä»¥å†™å…¥FRM文件的内容一致"
eng "The partition info in the frm file is not consistent with what can be written into the frm file"
ger "Die Partitionierungsinformationen in der frm-Datei stimmen nicht mit dem überein, was in die frm-Datei geschrieben werden kann"
spa "La información de partición en el fichero/archivo frm no es consistente con lo que se puede grabar en un fichero/archivo frm"
swe "Partitioneringsinformationen i frm-filen är inte konsistent med vad som kan skrivas i frm-filen"
ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
+ chi "%-.192s函数返回错误的类型"
eng "The %-.192s function returns the wrong type"
ger "Die %-.192s-Funktion gibt einen falschen Typ zurück"
spa "La función %-.192s devueve un tipo equivocado"
swe "%-.192s-funktionen returnerar felaktig typ"
ER_PARTITIONS_MUST_BE_DEFINED_ERROR
+ chi "对于%-.64s分区必须定义æ¯ä¸ªåˆ†åŒº"
eng "For %-.64s partitions each partition must be defined"
ger "Für %-.64s-Partitionen muss jede Partition definiert sein"
spa "Para las particiones %-.64s, se debe de definir cada partición"
swe "För %-.64s partitionering så måste varje partition definieras"
ER_RANGE_NOT_INCREASING_ERROR
+ chi "æ¯ä¸ªåˆ†åŒºçš„VALUES LESS THAN的值必须严格增加"
eng "VALUES LESS THAN value must be strictly increasing for each partition"
ger "Werte in VALUES LESS THAN müssen für jede Partition strikt aufsteigend sein"
spa "El valor VALUES LESS THAN debe de ser estrictamente incremental para cada partición"
swe "Värden i VALUES LESS THAN måste vara strikt växande för varje partition"
ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR
+ chi "VALUES值必须与分区函数相åŒ"
eng "VALUES value must be of same type as partition function"
ger "VALUES-Werte müssen vom selben Typ wie die Partitionierungsfunktion sein"
spa "El valor VALUES debe de ser del mismo tipo que la función de partición"
swe "Värden i VALUES måste vara av samma typ som partitioneringsfunktionen"
ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR
+ chi "列表分区中相åŒå¸¸é‡çš„多个定义"
eng "Multiple definition of same constant in list partitioning"
ger "Mehrfachdefinition derselben Konstante bei Listen-Partitionierung"
spa "Definición múltiple de la misma constante en el particionamiento de la lista"
swe "Multipel definition av samma konstant i list partitionering"
ER_PARTITION_ENTRY_ERROR
+ chi "分区ä¸èƒ½åœ¨æŸ¥è¯¢ä¸­ç‹¬ç«‹ä½¿ç”¨"
eng "Partitioning can not be used stand-alone in query"
ger "Partitionierung kann in einer Abfrage nicht alleinstehend benutzt werden"
spa "El particionado no puede ser usado de forma autónoma en consulta (query)"
swe "Partitioneringssyntax kan inte användas på egen hand i en SQL-fråga"
ER_MIX_HANDLER_ERROR
+ chi "此版本的MariaDB中ä¸å…许分区中的处ç†ç¨‹åºæ··åˆ"
eng "The mix of handlers in the partitions is not allowed in this version of MariaDB"
ger "Das Vermischen von Handlern in Partitionen ist in dieser Version von MariaDB nicht erlaubt"
spa "La mezcla de manejadores en las particiones no está autorizada en esta versión de MariaDB"
swe "Denna mix av lagringsmotorer är inte tillåten i denna version av MariaDB"
ER_PARTITION_NOT_DEFINED_ERROR
+ chi "对于分区引擎,需è¦å®šä¹‰æ‰€æœ‰%-.64s"
eng "For the partitioned engine it is necessary to define all %-.64s"
ger "Für die partitionierte Engine müssen alle %-.64s definiert sein"
spa "Para el motor de particionado es necesario definir todas %-.64s"
swe "För partitioneringsmotorn så är det nödvändigt att definiera alla %-.64s"
ER_TOO_MANY_PARTITIONS_ERROR
+ chi "定义了太多分区(包括å­ç»„分)"
eng "Too many partitions (including subpartitions) were defined"
ger "Es wurden zu vielen Partitionen (einschließlich Unterpartitionen) definiert"
spa "Definidas demasiadas particiones (incluyendo las subparticiones)"
swe "För många partitioner (inkluderande subpartitioner) definierades"
ER_SUBPARTITION_ERROR
+ chi "åªæœ‰åœ¨å­èŠ‚分节的HASH/KEY分区中å¯ä»¥æ··åˆRANGE/LIST分区"
eng "It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning"
ger "RANGE/LIST-Partitionierung kann bei Unterpartitionen nur zusammen mit HASH/KEY-Partitionierung verwendet werden"
spa "Sólo es posible mezclar particionado RANGE/LIST con particionado HASH/KEY para el subparticionado"
swe "Det är endast möjligt att blanda RANGE/LIST partitionering med HASH/KEY partitionering för subpartitionering"
ER_CANT_CREATE_HANDLER_FILE
+ chi "无法创建特定的处ç†ç¨‹åºæ–‡ä»¶"
eng "Failed to create specific handler file"
ger "Erzeugen einer spezifischen Handler-Datei fehlgeschlagen"
spa "No pude crear fichero/archivo de manejador específico"
swe "Misslyckades med att skapa specifik fil i lagringsmotor"
ER_BLOB_FIELD_IN_PART_FUNC_ERROR
+ chi "分区功能中ä¸å…许BLOB字段"
eng "A BLOB field is not allowed in partition function"
ger "In der Partitionierungsfunktion sind BLOB-Spalten nicht erlaubt"
spa "No se autoriza campo BLOB en la función de partición"
swe "Ett BLOB-fält är inte tillåtet i partitioneringsfunktioner"
ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
+ chi "A%-.192s必须包å«è¡¨çš„分区功能中的所有列"
eng "A %-.192s must include all columns in the table's partitioning function"
spa "Un %-.192s debe de incluir todas las columnas en la función de particionado de la tabla"
ER_NO_PARTS_ERROR
+ chi "ä¸å…许%-.64s = 0"
eng "Number of %-.64s = 0 is not an allowed value"
ger "Eine Anzahl von %-.64s = 0 ist kein erlaubter Wert"
spa "El número de %-.64s = 0 no es un valor autorizado"
swe "Antal %-.64s = 0 är inte ett tillåten värde"
ER_PARTITION_MGMT_ON_NONPARTITIONED
+ chi "ä¸åˆ†åŒºè¡¨ä¸Šçš„分区管ç†æ˜¯ä¸å¯èƒ½çš„"
eng "Partition management on a not partitioned table is not possible"
ger "Partitionsverwaltung einer nicht partitionierten Tabelle ist nicht möglich"
spa "La gestión de particiones en una tabla no particionada no es posible"
@@ -6129,358 +6628,436 @@ ER_FEATURE_NOT_SUPPORTED_WITH_PARTITIONING
eng "Partitioned tables do not support %s"
spa "Las tablas particionadas no soportan %s"
ER_PARTITION_DOES_NOT_EXIST
+ chi "分区å称或分区列表错误"
eng "Wrong partition name or partition list"
ger "Falscher Name einer Partition oder Fehler in der Partitionsliste"
spa "Error en lista de particiones"
swe "Fel namn av en partition eller fel i listan av partitioner"
ER_DROP_LAST_PARTITION
+ chi "无法删除所有分区,请使用删除表"
eng "Cannot remove all partitions, use DROP TABLE instead"
ger "Es lassen sich nicht sämtliche Partitionen löschen, benutzen Sie statt dessen DROP TABLE"
spa "No puedo quitar todas las particiones, use DROP TABLE en su lugar"
swe "Det är inte tillåtet att ta bort alla partitioner, använd DROP TABLE istället"
ER_COALESCE_ONLY_ON_HASH_PARTITION
+ chi "COALESCE分区åªèƒ½ç”¨äºŽå“ˆå¸Œ/索引分区"
eng "COALESCE PARTITION can only be used on HASH/KEY partitions"
ger "COALESCE PARTITION kann nur auf HASH- oder KEY-Partitionen benutzt werden"
spa "COALESCE PARTITION sólo se puede usar en particiones HASH/KEY"
swe "COALESCE PARTITION kan bara användas på HASH/KEY partitioner"
ER_REORG_HASH_ONLY_ON_SAME_NO
+ chi "REORGANIZE PARTITIONåªèƒ½ç”¨äºŽé‡æ–°ç»„织ä¸æ”¹å˜ä»–们的数字的分区"
eng "REORGANIZE PARTITION can only be used to reorganize partitions not to change their numbers"
ger "REORGANIZE PARTITION kann nur zur Reorganisation von Partitionen verwendet werden, nicht, um ihre Nummern zu ändern"
spa "REORGANIZE PARTITION sólo se puede usar para reorganizar particiones no para cambiar sus números"
swe "REORGANIZE PARTITION kan bara användas för att omorganisera partitioner, inte för att ändra deras antal"
ER_REORG_NO_PARAM_ERROR
+ chi "没有å‚æ•°çš„REORGANIZE PARTITIONåªèƒ½ç”¨äºŽHASH PARTITION的自动分区表"
eng "REORGANIZE PARTITION without parameters can only be used on auto-partitioned tables using HASH PARTITIONs"
ger "REORGANIZE PARTITION ohne Parameter kann nur für auto-partitionierte Tabellen verwendet werden, die HASH-Partitionierung benutzen"
spa "REORGANIZE PARTITION sin parámetros sólo se puede usar en tablas auto-particionadas usando HASH PARTITIONs"
swe "REORGANIZE PARTITION utan parametrar kan bara användas på auto-partitionerade tabeller som använder HASH partitionering"
ER_ONLY_ON_RANGE_LIST_PARTITION
+ chi "%-.64s分区åªèƒ½ç”¨äºŽRANGE/LIST分区"
eng "%-.64s PARTITION can only be used on RANGE/LIST partitions"
ger "%-.64s PARTITION kann nur für RANGE- oder LIST-Partitionen verwendet werden"
spa "%-.64s PARTITION sólo puede ser usada en particiones RANGE/LIST"
swe "%-.64s PARTITION kan bara användas på RANGE/LIST-partitioner"
ER_ADD_PARTITION_SUBPART_ERROR
+ chi "å°è¯•ç”¨é”™è¯¯æ•°é‡çš„å­åˆ†åŒºæ·»åŠ åˆ†åŒº"
eng "Trying to Add partition(s) with wrong number of subpartitions"
ger "Es wurde versucht, eine oder mehrere Partitionen mit der falschen Anzahl von Unterpartitionen hinzuzufügen"
spa "Intentando añadir particion(es) usando un número equivocado de subparticiones"
swe "ADD PARTITION med fel antal subpartitioner"
ER_ADD_PARTITION_NO_NEW_PARTITION
+ chi "必须添加至少一个分区"
eng "At least one partition must be added"
ger "Es muss zumindest eine Partition hinzugefügt werden"
spa "Se debe de añadir una partición, al menos"
swe "Åtminstone en partition måste läggas till vid ADD PARTITION"
ER_COALESCE_PARTITION_NO_PARTITION
+ chi "至少一个分区必须åˆå¹¶"
eng "At least one partition must be coalesced"
ger "Zumindest eine Partition muss mit COALESCE PARTITION zusammengefügt werden"
spa "Se debe de fusionar una partición, al menos"
swe "Åtminstone en partition måste slås ihop vid COALESCE PARTITION"
ER_REORG_PARTITION_NOT_EXIST
+ chi "分区é‡ç»„é‡è¶…过而ä¸æ˜¯åˆ†åŒºé‡"
eng "More partitions to reorganize than there are partitions"
ger "Es wurde versucht, mehr Partitionen als vorhanden zu reorganisieren"
spa "Hay más particiones a reorganizar que las que existen"
swe "Fler partitioner att reorganisera än det finns partitioner"
ER_SAME_NAME_PARTITION
+ chi "é‡å¤åˆ†åŒºå称%-.192s"
eng "Duplicate partition name %-.192s"
ger "Doppelter Partitionsname: %-.192s"
spa "Nombre de partición duplicado %-.192s"
swe "Duplicerat partitionsnamn %-.192s"
ER_NO_BINLOG_ERROR
+ chi "在此命令上ä¸å…许关闭binlog"
eng "It is not allowed to shut off binlog on this command"
ger "Es es nicht erlaubt, bei diesem Befehl binlog abzuschalten"
spa "No se autoriza a apagar binlog con este comando"
swe "Det är inte tillåtet att stänga av binlog på detta kommando"
ER_CONSECUTIVE_REORG_PARTITIONS
+ chi "在é‡æ–°ç»„织一组分区时,它们必须按照次åº"
eng "When reorganizing a set of partitions they must be in consecutive order"
ger "Bei der Reorganisation eines Satzes von Partitionen müssen diese in geordneter Reihenfolge vorliegen"
spa "Para reorganizar un conjunto de particiones, éstas deben de estar ordenadas consecutivamente"
swe "När ett antal partitioner omorganiseras måste de vara i konsekutiv ordning"
ER_REORG_OUTSIDE_RANGE
+ chi "é‡ç»„范围分区无法更改除最åŽåˆ†åŒºä¹‹å¤–的总范围,无法扩展范围"
eng "Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range"
ger "Die Reorganisation von RANGE-Partitionen kann Gesamtbereiche nicht verändern, mit Ausnahme der letzten Partition, die den Bereich erweitern kann"
spa "El reorganizar un rango de particiones no puede cambiar los rangos totales excepto para la última partición donde se puede extender el rango"
swe "Reorganisering av rangepartitioner kan inte ändra den totala intervallet utom för den sista partitionen där intervallet kan utökas"
ER_PARTITION_FUNCTION_FAILURE
+ chi "此版ä¸æ”¯æŒæ­¤å¤„ç†ç¨‹åºçš„分区功能"
eng "Partition function not supported in this version for this handler"
ger "Partitionsfunktion in dieser Version dieses Handlers nicht unterstützt"
spa "Función de partición no soportada en esta versión para este manejador"
ER_PART_STATE_ERROR
+ chi "无法从CREATE/ALTER表中定义分区状æ€"
eng "Partition state cannot be defined from CREATE/ALTER TABLE"
ger "Partitionszustand kann nicht von CREATE oder ALTER TABLE aus definiert werden"
spa "El estado de una partición no se puede definir desde CREATE/ALTER TABLE"
swe "Partition state kan inte definieras från CREATE/ALTER TABLE"
ER_LIMITED_PART_RANGE
+ chi "%-.64s处ç†ç¨‹åºä»…支æŒ32-bitæ•´æ•°"
eng "The %-.64s handler only supports 32 bit integers in VALUES"
ger "Der Handler %-.64s unterstützt in VALUES nur 32-Bit-Integers"
spa "El manejador %-.64s sólo soporta enteros de 32 bit en VALUES"
swe "%-.64s stödjer endast 32 bitar i integers i VALUES"
ER_PLUGIN_IS_NOT_LOADED
+ chi "æ’件'%-.192s'未加载"
eng "Plugin '%-.192s' is not loaded"
ger "Plugin '%-.192s' ist nicht geladen"
spa "Enchufe (plugin) '%-.192s' no cargado"
ER_WRONG_VALUE
+ chi "错误%-.32s值:'%-.128T'"
eng "Incorrect %-.32s value: '%-.128T'"
ger "Falscher %-.32s-Wert: '%-.128T'"
spa "Incorrecto %-.32s valor: '%-.128T'"
ER_NO_PARTITION_FOR_GIVEN_VALUE
+ chi "表没有%-.64s的分区"
eng "Table has no partition for value %-.64s"
ger "Tabelle hat für den Wert %-.64s keine Partition"
spa "La tabla no tiene partición para valor %-.64s"
ER_FILEGROUP_OPTION_ONLY_ONCE
+ chi "设置%sä¸èƒ½è¶…过一次"
eng "It is not allowed to specify %s more than once"
ger "%s darf nicht mehr als einmal angegegeben werden"
spa "No se permite especificar %s más de unva vez"
ER_CREATE_FILEGROUP_FAILED
+ chi "无法创建%s"
eng "Failed to create %s"
ger "Anlegen von %s fehlgeschlagen"
hindi "%s को बनाने में असफल रहे"
spa "No pude crear %s"
ER_DROP_FILEGROUP_FAILED
+ chi "未能DROP%s"
eng "Failed to drop %s"
ger "Löschen von %s fehlgeschlagen"
hindi "%s को हटाने में असफल रहे"
spa "No pude eliminar %s"
ER_TABLESPACE_AUTO_EXTEND_ERROR
+ chi "处ç†ç¨‹åºä¸æ”¯æŒè¡¨ç©ºé—´çš„自动扩展å"
eng "The handler doesn't support autoextend of tablespaces"
ger "Der Handler unterstützt keine automatische Erweiterung (Autoextend) von Tablespaces"
spa "El manejador no soporta autoextensión de espacios de tabla"
ER_WRONG_SIZE_NUMBER
+ chi "尺寸å‚数被错误地指定,编å·æˆ–表å•10M"
eng "A size parameter was incorrectly specified, either number or on the form 10M"
ger "Ein Größen-Parameter wurde unkorrekt angegeben, muss entweder Zahl sein oder im Format 10M"
spa "Se ha especificado de forma incorrecta un parámetro de medida o el número o en la forma 10M"
ER_SIZE_OVERFLOW_ERROR
+ chi "尺寸编å·æ˜¯æ­£ç¡®çš„,但我们ä¸å…许数字部分超过20亿"
eng "The size number was correct but we don't allow the digit part to be more than 2 billion"
ger "Die Zahl für die Größe war korrekt, aber der Zahlanteil darf nicht größer als 2 Milliarden sein"
spa "El número de medida es correcto pero no permitimos que la parte del dígito tenga más de 2 billones"
ER_ALTER_FILEGROUP_FAILED
+ chi "未能改å˜ï¼š%s"
eng "Failed to alter: %s"
ger "Änderung von %s fehlgeschlagen"
hindi "%s को ALTER करने में असफल रहे"
spa "No pude alterar: %s"
ER_BINLOG_ROW_LOGGING_FAILED
+ chi "将一行写入基于行的二进制日志失败"
eng "Writing one row to the row-based binary log failed"
ger "Schreiben einer Zeilen ins zeilenbasierte Binärlog fehlgeschlagen"
spa "Ha fallado el grabar una fila en historial (log) binario basado en fila"
ER_BINLOG_ROW_WRONG_TABLE_DEF
+ chi "表定义主机和从站ä¸åŒ¹é…:%s"
eng "Table definition on master and slave does not match: %s"
ger "Tabellendefinition auf Master und Slave stimmt nicht überein: %s"
spa "La definición de tabla en maestro (master) y esclavo no coincide: %s"
ER_BINLOG_ROW_RBR_TO_SBR
+ chi "使用--log-slave-updates的从站必须使用基于行的二进制日志记录,以便能够å¤åˆ¶åŸºäºŽè¡Œçš„二进制日志事件"
eng "Slave running with --log-slave-updates must use row-based binary logging to be able to replicate row-based binary log events"
ger "Slave, die mit --log-slave-updates laufen, müssen zeilenbasiertes Loggen verwenden, um zeilenbasierte Binärlog-Ereignisse loggen zu können"
spa "La ejecución esclava con --log-slave-updates debe de usar un historial (log) binario basado en fila para que pueda replicar eventos de historial (log) binario basados en fila"
ER_EVENT_ALREADY_EXISTS
+ chi "事件'%-.192s'å·²ç»å­˜åœ¨"
eng "Event '%-.192s' already exists"
ger "Event '%-.192s' existiert bereits"
spa "El evento '%-.192s' ya existe"
ER_EVENT_STORE_FAILED
+ chi "无法存储事件%s。错误代ç %Mæ¥è‡ªå­˜å‚¨å¼•æ“Ž"
eng "Failed to store event %s. Error code %M from storage engine"
ger "Speichern von Event %s fehlgeschlagen. Fehlercode der Speicher-Engine: %M"
spa "No pude almacenar evento %s. Código de error %M desde motor de almacenaje"
ER_EVENT_DOES_NOT_EXIST
+ chi "未知事件'%-.192s'"
eng "Unknown event '%-.192s'"
ger "Unbekanntes Event '%-.192s'"
spa "Evento desconocido '%-.192s'"
ER_EVENT_CANT_ALTER
+ chi "无法改å˜äº‹ä»¶'%-.192s'"
eng "Failed to alter event '%-.192s'"
ger "Ändern des Events '%-.192s' fehlgeschlagen"
hindi "'%-.192s' EVENT को ALTER करने में असफल रहे"
spa "No pude alterar evento '%-.192s'"
ER_EVENT_DROP_FAILED
+ chi "未能DROP%s"
eng "Failed to drop %s"
ger "Löschen von %s fehlgeschlagen"
hindi "%s को हटाने में असफल रहे"
spa "No pude eliminar %s"
ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG
+ chi "INTERVAL为负或太大"
eng "INTERVAL is either not positive or too big"
ger "INTERVAL ist entweder nicht positiv oder zu groß"
spa "O INTERVAL no es positivo o es demasiado grande"
ER_EVENT_ENDS_BEFORE_STARTS
+ chi "ENDS无效的或在STARTS之å‰"
eng "ENDS is either invalid or before STARTS"
ger "ENDS ist entweder ungültig oder liegt vor STARTS"
spa "O ENDS es inválido o anterior a STARTS"
ER_EVENT_EXEC_TIME_IN_THE_PAST
- eng "Event execution time is in the past. Event has been disabled"
- ger "Ausführungszeit des Events liegt in der Vergangenheit. Event wurde deaktiviert"
- spa "El tiempo de ejecución de evento se encuentra en el pasado. El evento ha sido desactivado"
+ chi "事件执行时间在过去。事件已被ç¦ç”¨"
+ eng "Event execution time is in the past. Event has been disabled"
+ ger "Ausführungszeit des Events liegt in der Vergangenheit. Event wurde deaktiviert"
+ spa "El tiempo de ejecución de evento se encuentra en el pasado. El evento ha sido desactivado"
ER_EVENT_OPEN_TABLE_FAILED
+ chi "无法打开mysql.event"
eng "Failed to open mysql.event"
ger "Öffnen von mysql.event fehlgeschlagen"
hindi "mysql.event को खोलने में असफल रहे"
spa "No puede abrir mysql.event"
ER_EVENT_NEITHER_M_EXPR_NOR_M_AT
+ chi "没有æä¾›DateTime表达å¼"
eng "No datetime expression provided"
ger "Kein DATETIME-Ausdruck angegeben"
spa "No se ha suministrado expresión datetime"
-
ER_UNUSED_2
+ chi "你永远ä¸åº”该看到它"
eng "You should never see it"
spa "No lo debería vd de ver nunca"
ER_UNUSED_3
+ chi "你永远ä¸åº”该看到它"
eng "You should never see it"
spa "No lo debería vd de ver nunca"
ER_EVENT_CANNOT_DELETE
+ chi "无法从mysql.event删除该事件"
eng "Failed to delete the event from mysql.event"
ger "Löschen des Events aus mysql.event fehlgeschlagen"
hindi "EVENT को mysql.event से हटाने मैं असफल रहे"
spa "No pude borrar el evento desde mysql.event"
ER_EVENT_COMPILE_ERROR
+ chi "在汇编事件的主体时出错"
eng "Error during compilation of event's body"
ger "Fehler beim Kompilieren des Event-Bodys"
spa "Error durante compilación de cuerpo de evento"
ER_EVENT_SAME_NAME
+ chi "相åŒçš„旧活动å称"
eng "Same old and new event name"
ger "Alter und neuer Event-Name sind gleich"
spa "Mismo nombre de evento viejo y nuevo"
ER_EVENT_DATA_TOO_LONG
+ chi "列'%s'æ•°æ®å¤ªé•¿"
eng "Data for column '%s' too long"
ger "Daten der Spalte '%s' zu lang"
spa "Datos demasiado largos para la columna '%s'"
ER_DROP_INDEX_FK
+ chi "无法删除索引'%-.192s':外部索引约æŸä¸­éœ€è¦å®ƒ"
eng "Cannot drop index '%-.192s': needed in a foreign key constraint"
ger "Kann Index '%-.192s' nicht löschen: wird für eine Fremdschlüsselbeschränkung benötigt"
spa "No puedo eliminar índice '%-.192s': necesario en una restricción de clave foránea"
# When using this error message, use the ER_WARN_DEPRECATED_SYNTAX error
# code.
ER_WARN_DEPRECATED_SYNTAX_WITH_VER
+ chi "语法'%s'被弃用,将在Mariadb%s中删除。请使用%s"
eng "The syntax '%s' is deprecated and will be removed in MariaDB %s. Please use %s instead"
ger "Die Syntax '%s' ist veraltet und wird in MariaDB %s entfernt. Bitte benutzen Sie statt dessen %s"
spa "La sintaxis '%s' está obsoleta y será quitada en MariaDB %s. Por favor, use %s en su lugar"
ER_CANT_WRITE_LOCK_LOG_TABLE
+ chi "您无法获得日志表的写é”。åªæœ‰è¯»è®¿é—®æ˜¯å¯èƒ½çš„"
eng "You can't write-lock a log table. Only read access is possible"
ger "Eine Log-Tabelle kann nicht schreibgesperrt werden. Es ist ohnehin nur Lesezugriff möglich"
spa "No puede hacer bloqueo de escritura en una tabla de historial (log). Sólo es posible acceso de lectura"
ER_CANT_LOCK_LOG_TABLE
+ chi "您无法使用带日志表的é”"
eng "You can't use locks with log tables"
ger "Log-Tabellen können nicht gesperrt werden"
spa "No puede usar bloqueos con tablas de historial (log)"
ER_UNUSED_4
+ chi "你永远ä¸åº”该看到它"
eng "You should never see it"
spa "Nunca debería vd de ver esto"
ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE
+ chi "mysql的列计数。%s是错误的。预期%d,找到%d。使用MariaDB%d创建,现在è¿è¡Œ%d。请使用mariadb-upgradeæ¥ä¿®å¤æ­¤é”™è¯¯"
eng "Column count of mysql.%s is wrong. Expected %d, found %d. Created with MariaDB %d, now running %d. Please use mariadb-upgrade to fix this error"
ger "Spaltenanzahl von mysql.%s falsch. %d erwartet, aber %d erhalten. Erzeugt mit MariaDB %d, jetzt unter %d. Bitte benutzen Sie mariadb-upgrade, um den Fehler zu beheben"
spa "El contador de columnas de mysql.%s está equivocado. Se esperaba %d, hallado %d. Creado con MariaDB %d, ahora ejecuando %d. Por favor, use mariadb-upgrade para solucionar este error"
ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR
+ chi "当会è¯æ‰“开临时表时,无法切æ¢å‡ºåŸºäºŽè¡Œçš„二进制日志格å¼"
eng "Cannot switch out of the row-based binary log format when the session has open temporary tables"
ger "Kann nicht aus dem zeilenbasierten Binärlog-Format herauswechseln, wenn die Sitzung offene temporäre Tabellen hat"
spa "No puedo conmutar fuera del formato de historial (log) binario basado en fila cuando la sesión ha abierto tablas temporales"
ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT
+ chi "无法更改存储函数或触å‘器内的二进制记录格å¼"
eng "Cannot change the binary logging format inside a stored function or trigger"
ger "Das Binärlog-Format kann innerhalb einer gespeicherten Funktion oder eines Triggers nicht geändert werden"
spa "No puedo cambiar el formato de historial (log) binario dentro de funciones almacenadas o disparadores"
ER_UNUSED_13
+ chi "你永远ä¸åº”该看到它"
eng "You should never see it"
spa "Nunca debería vd de ver esto"
ER_PARTITION_NO_TEMPORARY
+ chi "无法使用分区创建临时表"
eng "Cannot create temporary table with partitions"
ger "Anlegen temporärer Tabellen mit Partitionen nicht möglich"
hindi "असà¥à¤¥à¤¾à¤ˆ टेबल को पारà¥à¤Ÿà¤¿à¤¶à¤¨à¥à¤¸ के साथ नहीं बनाया जा सकता"
spa "No puedo crear tabla temporal con particiones"
ER_PARTITION_CONST_DOMAIN_ERROR
+ chi "分区常é‡è¶…出分区功能域"
eng "Partition constant is out of partition function domain"
ger "Partitionskonstante liegt außerhalb der Partitionsfunktionsdomäne"
spa "La constante de partición está fuera del dominio de función de partición"
swe "Partitionskonstanten är utanför partitioneringsfunktionens domän"
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
+ chi "ä¸å…许此分区功能"
eng "This partition function is not allowed"
ger "Diese Partitionierungsfunktion ist nicht erlaubt"
spa "Esta función de partición no está permitida"
swe "Denna partitioneringsfunktion är inte tillåten"
ER_DDL_LOG_ERROR
+ chi "DDL日志中的错误"
eng "Error in DDL log"
ger "Fehler im DDL-Log"
hindi "DDL लॉग में तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
spa "Error en historial (log) DDL"
ER_NULL_IN_VALUES_LESS_THAN
+ chi "VALUES LESS THANä¸å…许使用NULL"
eng "Not allowed to use NULL value in VALUES LESS THAN"
ger "In VALUES LESS THAN dürfen keine NULL-Werte verwendet werden"
spa "No autorizado a usar valor NULL en VALUES LESS THAN"
swe "Det är inte tillåtet att använda NULL-värden i VALUES LESS THAN"
ER_WRONG_PARTITION_NAME
+ chi "分区å称ä¸æ­£ç¡®"
eng "Incorrect partition name"
ger "Falscher Partitionsname"
hindi "पारà¥à¤Ÿà¥€à¤¶à¤¨ का नाम गलत है"
spa "Nombre incorrecto de partición"
swe "Felaktigt partitionsnamn"
ER_CANT_CHANGE_TX_CHARACTERISTICS 25001
+ chi "交易正在进行,无法更改事务特性"
eng "Transaction characteristics can't be changed while a transaction is in progress"
spa "No se pueden cambiar las característias de transacción mientras que una transacción se ecuentre en proceso"
ER_DUP_ENTRY_AUTOINCREMENT_CASE
+ chi "ALTER TABLE表会导致AUTO_INCREMENTé‡å»ºï¼Œå¯¼è‡´é‡å¤çš„æ¡ç›®'%-.192T'用于索引'%-.192s'"
eng "ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '%-.192T' for key '%-.192s'"
ger "ALTER TABLE führt zur Neusequenzierung von auto_increment, wodurch der doppelte Eintrag '%-.192T' für Schlüssel '%-.192s' auftritt"
spa "ALTER TABLE causa resecuenciado de auto_incremento resultando en entrada duplicada '%-.192T' para la clave '%-.192s'"
ER_EVENT_MODIFY_QUEUE_ERROR
+ chi "内部调度器错误%d"
eng "Internal scheduler error %d"
ger "Interner Scheduler-Fehler %d"
spa "Error en organizador interno %d"
ER_EVENT_SET_VAR_ERROR
+ chi "在开始/åœæ­¢è°ƒåº¦ç¨‹åºæœŸé—´å‡ºé”™ã€‚错误代ç %M"
eng "Error during starting/stopping of the scheduler. Error code %M"
ger "Fehler während des Startens oder Anhalten des Schedulers. Fehlercode %M"
spa "Error durante arranque/parada del organizador. Código de error %M"
ER_PARTITION_MERGE_ERROR
+ chi "引擎ä¸èƒ½ç”¨äºŽåˆ†åŒºè¡¨"
eng "Engine cannot be used in partitioned tables"
ger "Engine kann in partitionierten Tabellen nicht verwendet werden"
spa "No se puede usar el motor en tablas particionadas"
swe "Engine inte användas i en partitionerad tabell"
ER_CANT_ACTIVATE_LOG
+ chi "无法激活'%-.64s'日志"
eng "Cannot activate '%-.64s' log"
ger "Kann Logdatei '%-.64s' nicht aktivieren"
spa "No puedo activar historial (log) '%-.64s'"
ER_RBR_NOT_AVAILABLE
+ chi "æœåŠ¡å™¨ä¸æ˜¯åŸºäºŽè¡Œçš„å¤åˆ¶æž„建的"
eng "The server was not built with row-based replication"
ger "Der Server wurde nicht mit zeilenbasierter Replikation gebaut"
spa "El servidor no ha sido construido con réplica basada en fila"
ER_BASE64_DECODE_ERROR
+ chi "Base64字符串的解ç å¤±è´¥"
eng "Decoding of base64 string failed"
ger "Der Server hat keine zeilenbasierte Replikation"
spa "Ha fallado la decodificación de cadena base64"
swe "Avkodning av base64 sträng misslyckades"
ER_EVENT_RECURSION_FORBIDDEN
+ chi "EVENT主体存在时EVENT DDL语å¥é€’归被ç¦æ­¢"
eng "Recursion of EVENT DDL statements is forbidden when body is present"
ger "Rekursivität von EVENT-DDL-Anweisungen ist unzulässig wenn ein Hauptteil (Body) existiert"
spa "Se prohiben sentencias de EVENT DDL cuando se encuentra presente el cuerpo"
ER_EVENTS_DB_ERROR
+ chi "无法继续,因为事件调度程åºå·²ç¦ç”¨"
eng "Cannot proceed, because event scheduler is disabled"
ger "Die Operation kann nicht fortgesetzt werden, da Event Scheduler deaktiviert ist."
spa "No puedo proceder porque el organizado de eventos está desactivado"
ER_ONLY_INTEGERS_ALLOWED
+ chi "这里åªå…许整数作为数字"
eng "Only integers allowed as number here"
ger "An dieser Stelle sind nur Ganzzahlen zulässig"
spa "Sólo se permiten enteros como número aquí"
ER_UNSUPORTED_LOG_ENGINE
+ chi "存储引擎%sä¸èƒ½ç”¨äºŽæ—¥å¿—表"
eng "Storage engine %s cannot be used for log tables"
ger "Speicher-Engine %s kann für Logtabellen nicht verwendet werden"
hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s को लॉग टेबलà¥à¤¸ के लिठइसà¥à¤¤à¥‡à¤®à¤¾à¤² नहीं किया जा सकता है"
spa "No se puede usar el motor de almacenaje %s para tablas de historial (log)"
ER_BAD_LOG_STATEMENT
+ chi "如果å¯ç”¨æ—¥å¿—记录,则无法'%s'日志表"
eng "You cannot '%s' a log table if logging is enabled"
ger "Sie können eine Logtabelle nicht '%s', wenn Loggen angeschaltet ist"
spa "No puede '%s' una tabla de historial (log) cuando se encuentra activado el llevar historial (log)"
ER_CANT_RENAME_LOG_TABLE
+ chi "无法é‡å‘½å'%s'。å¯ç”¨æ—¥å¿—记录时,é‡å‘½å日志表必须é‡å‘½å两个表:日志表到存档表,å¦ä¸€ä¸ªè¡¨è¿”回'%s'"
eng "Cannot rename '%s'. When logging enabled, rename to/from log table must rename two tables: the log table to an archive table and another table back to '%s'"
ger "Kann '%s' nicht umbenennen. Wenn Loggen angeschaltet ist, müssen zwei Tabellen umbenannt werden: die Logtabelle zu einer Archivtabelle, und eine weitere Tabelle zu '%s'"
spa "No puedo renombrar '%s'. Si se encuentra activo el llevar historial (log), el renombrar a/desde tabla de historial (log) debe de renombrar dos tablas: la tabla de historial (log) a una tabla archivo y otra tabla de vuelta a '%s'"
ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT 42000
+ chi "对本机函数的呼å«ä¸­çš„å‚数计数ä¸æ­£ç¡®'%-.192s'"
eng "Incorrect parameter count in the call to native function '%-.192s'"
ger "Falsche Anzahl von Parametern beim Aufruf der nativen Funktion '%-.192s'"
spa "Contador de parámetro incorrecto en la llamada a función nativa '%-.192s'"
ER_WRONG_PARAMETERS_TO_NATIVE_FCT 42000
+ chi "对本机函数'%-.192s'呼å«ä¸­çš„å‚æ•°ä¸æ­£ç¡®"
eng "Incorrect parameters in the call to native function '%-.192s'"
ger "Falscher Parameter beim Aufruf der nativen Funktion '%-.192s'"
spa "Parámetros incorrectos en la llamada a función nativa '%-.192s'"
ER_WRONG_PARAMETERS_TO_STORED_FCT 42000
+ chi "呼å«ä¸­çš„å‚æ•°ä¸æ­£ç¡®ä¸ºå­˜å‚¨å‡½æ•°'%-.192s'"
eng "Incorrect parameters in the call to stored function '%-.192s'"
ger "Falsche Parameter beim Aufruf der gespeicherten Funktion '%-.192s'"
spa "Parámetros incorrectos en la llamada a función almacenada '%-.192s'"
ER_NATIVE_FCT_NAME_COLLISION
+ chi "此功能'%-.192s'具有与本机函数相åŒçš„å称"
eng "This function '%-.192s' has the same name as a native function"
ger "Die Funktion '%-.192s' hat denselben Namen wie eine native Funktion"
spa "Esta función '%-.192s' tiene el mismo nombre que una función nativa"
# When using this error message, use the ER_DUP_ENTRY error code. See, for
# example, code in handler.cc.
ER_DUP_ENTRY_WITH_KEY_NAME 23000 S1009
+ chi "é‡å¤æ¡ç›®'%-.64T'é”®'%-.192s'"
cze "Zvojený klÃ­Ä '%-.64T' (Äíslo klíÄe '%-.192s')"
dan "Ens værdier '%-.64T' for indeks '%-.192s'"
- nla "Dubbele ingang '%-.64T' voor zoeksleutel '%-.192s'"
eng "Duplicate entry '%-.64T' for key '%-.192s'"
est "Kattuv väärtus '%-.64T' võtmele '%-.192s'"
fre "Duplicata du champ '%-.64T' pour la clef '%-.192s'"
@@ -6490,6 +7067,7 @@ ER_DUP_ENTRY_WITH_KEY_NAME 23000 S1009
ita "Valore duplicato '%-.64T' per la chiave '%-.192s'"
jpn "'%-.64T' ã¯ç´¢å¼• '%-.192s' ã§é‡è¤‡ã—ã¦ã„ã¾ã™ã€‚"
kor "ì¤‘ë³µëœ ìž…ë ¥ ê°’ '%-.64T': key '%-.192s'"
+ nla "Dubbele ingang '%-.64T' voor zoeksleutel '%-.192s'"
nor "Like verdier '%-.64T' for nøkkel '%-.192s'"
norwegian-ny "Like verdiar '%-.64T' for nykkel '%-.192s'"
pol "Powtórzone wystąpienie '%-.64T' dla klucza '%-.192s'"
@@ -6502,455 +7080,548 @@ ER_DUP_ENTRY_WITH_KEY_NAME 23000 S1009
swe "Dublett '%-.64T' för nyckel '%-.192s'"
ukr "Дублюючий Ð·Ð°Ð¿Ð¸Ñ '%-.64T' Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° '%-.192s'"
ER_BINLOG_PURGE_EMFILE
- eng "Too many files opened, please execute the command again"
- ger "Zu viele offene Dateien, bitte führen Sie den Befehl noch einmal aus"
- spa "Demasiados ficheros/archivos abiertos. Por favor, ejecute el comando otra vez"
+ chi "打开太多文件,请å†æ¬¡æ‰§è¡Œå‘½ä»¤"
+ eng "Too many files opened, please execute the command again"
+ ger "Zu viele offene Dateien, bitte führen Sie den Befehl noch einmal aus"
+ spa "Demasiados ficheros/archivos abiertos. Por favor, ejecute el comando otra vez"
ER_EVENT_CANNOT_CREATE_IN_THE_PAST
- eng "Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation"
- ger "Ausführungszeit des Events liegt in der Vergangenheit, und es wurde ON COMPLETION NOT PRESERVE gesetzt. Das Event wurde unmittelbar nach Erzeugung gelöscht"
- spa "El tiempo de jecución del evento se encuentra en el pasado y está configurado ON COMPLETION NOT PRESERVE. El evento fue eliminado inmediatamente tras su creación"
+ chi "事件执行时间在过去,并ON COMPLETION NOT PRESERVE。创建åŽï¼Œäº‹ä»¶ç«‹å³ä¸¢å¼ƒ"
+ eng "Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation"
+ ger "Ausführungszeit des Events liegt in der Vergangenheit, und es wurde ON COMPLETION NOT PRESERVE gesetzt. Das Event wurde unmittelbar nach Erzeugung gelöscht"
+ spa "El tiempo de jecución del evento se encuentra en el pasado y está configurado ON COMPLETION NOT PRESERVE. El evento fue eliminado inmediatamente tras su creación"
ER_EVENT_CANNOT_ALTER_IN_THE_PAST
- eng "Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was not changed. Specify a time in the future"
- ger "Execution Zeitpunkt des Ereignisses in der Vergangenheit liegt, und es war NACH ABSCHLUSS Set nicht erhalten. Die Veranstaltung wurde nicht verändert. Geben Sie einen Zeitpunkt in der Zukunft"
- spa "El tiempo de jecución del evento se encuentra en el pasado y está configurado ON COMPLETION NOT PRESERVE. El evento no fue cambiado. Especifique un tiempo del futuro"
+ chi "事件执行时间在过去,并ON COMPLETION NOT PRESERVE。事件没有改å˜ã€‚指定将æ¥çš„时间"
+ eng "Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was not changed. Specify a time in the future"
+ ger "Execution Zeitpunkt des Ereignisses in der Vergangenheit liegt, und es war NACH ABSCHLUSS Set nicht erhalten. Die Veranstaltung wurde nicht verändert. Geben Sie einen Zeitpunkt in der Zukunft"
+ spa "El tiempo de jecución del evento se encuentra en el pasado y está configurado ON COMPLETION NOT PRESERVE. El evento no fue cambiado. Especifique un tiempo del futuro"
ER_SLAVE_INCIDENT
- eng "The incident %s occurred on the master. Message: %-.64s"
- ger "Der Vorfall %s passierte auf dem Master. Meldung: %-.64s"
- spa "Ha ocurrido un incidente %s en el maestro (master). Mensaje: %-.64s"
+ chi "事件%så‘生在master上。消æ¯ï¼š%-.64s"
+ eng "The incident %s occurred on the master. Message: %-.64s"
+ ger "Der Vorfall %s passierte auf dem Master. Meldung: %-.64s"
+ spa "Ha ocurrido un incidente %s en el maestro (master). Mensaje: %-.64s"
ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT
- eng "Table has no partition for some existing values"
- ger "Tabelle hat für einige bestehende Werte keine Partition"
- spa "La tabla no tiene partición para algunos valores existentes"
+ chi "表对æŸäº›çŽ°æœ‰å€¼æ²¡æœ‰åˆ†åŒº"
+ eng "Table has no partition for some existing values"
+ ger "Tabelle hat für einige bestehende Werte keine Partition"
+ spa "La tabla no tiene partición para algunos valores existentes"
ER_BINLOG_UNSAFE_STATEMENT
- eng "Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. %s"
- ger "Unsichere Anweisung ins Binärlog geschrieben, weil Anweisungsformat BINLOG_FORMAT = STATEMENT. %s"
- spa "Se ha grabado una sentencia no segura en historial (log) binario usando el formato de sentencia desde BINLOG_FORMAT = STATEMENT. %s"
- swe "Detta är inte säkert att logga i statement-format, för BINLOG_FORMAT = STATEMENT. %s"
+ chi "自从BINLOG_FORMAT =STATEMENT以æ¥ï¼Œä½¿ç”¨è¯­å¥æ ¼å¼å†™å…¥äºŒè¿›åˆ¶æ—¥å¿—çš„ä¸å®‰å…¨è¯­å¥ã€‚%s."
+ eng "Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. %s"
+ ger "Unsichere Anweisung ins Binärlog geschrieben, weil Anweisungsformat BINLOG_FORMAT = STATEMENT. %s"
+ spa "Se ha grabado una sentencia no segura en historial (log) binario usando el formato de sentencia desde BINLOG_FORMAT = STATEMENT. %s"
+ swe "Detta är inte säkert att logga i statement-format, för BINLOG_FORMAT = STATEMENT. %s"
ER_SLAVE_FATAL_ERROR
- eng "Fatal error: %s"
- ger "Fataler Fehler: %s"
- spa "Error fatal: %s"
+ chi "致命错误:%s"
+ eng "Fatal error: %s"
+ ger "Fataler Fehler: %s"
+ spa "Error fatal: %s"
ER_SLAVE_RELAY_LOG_READ_FAILURE
- eng "Relay log read failure: %s"
- ger "Relaylog-Lesefehler: %s"
- spa "Fallo de lectura en historial (log) de reenvío: %s"
+ chi "relay日志读å–失败:%s"
+ eng "Relay log read failure: %s"
+ ger "Relaylog-Lesefehler: %s"
+ spa "Fallo de lectura en historial (log) de reenvío: %s"
ER_SLAVE_RELAY_LOG_WRITE_FAILURE
- eng "Relay log write failure: %s"
- ger "Relaylog-Schreibfehler: %s"
- spa "Fallo de grabación en historial (log) de reenvío: %s"
+ chi "relay日志写入失败:%s"
+ eng "Relay log write failure: %s"
+ ger "Relaylog-Schreibfehler: %s"
+ spa "Fallo de grabación en historial (log) de reenvío: %s"
ER_SLAVE_CREATE_EVENT_FAILURE
- eng "Failed to create %s"
- ger "Erzeugen von %s fehlgeschlagen"
- hindi "%s को बनाने मैं असफल रहे"
- spa "Fallo al crear %s"
+ chi "无法创建%s"
+ eng "Failed to create %s"
+ ger "Erzeugen von %s fehlgeschlagen"
+ hindi "%s को बनाने मैं असफल रहे"
+ spa "Fallo al crear %s"
ER_SLAVE_MASTER_COM_FAILURE
- eng "Master command %s failed: %s"
- ger "Master-Befehl %s fehlgeschlagen: %s"
- spa "El comando maestro (master) %s ha fallado: %s"
+ chi "Master命令%s失败:%s"
+ eng "Master command %s failed: %s"
+ ger "Master-Befehl %s fehlgeschlagen: %s"
+ spa "El comando maestro (master) %s ha fallado: %s"
ER_BINLOG_LOGGING_IMPOSSIBLE
- eng "Binary logging not possible. Message: %s"
- ger "Binärlogging nicht möglich. Meldung: %s"
- spa "No es posible llevar historial (log) binario. Mensaje: %s"
+ chi "二进制记录ä¸å¯èƒ½ã€‚消æ¯ï¼š%s"
+ eng "Binary logging not possible. Message: %s"
+ ger "Binärlogging nicht möglich. Meldung: %s"
+ spa "No es posible llevar historial (log) binario. Mensaje: %s"
ER_VIEW_NO_CREATION_CTX
- eng "View %`s.%`s has no creation context"
- ger "View %`s.%`s hat keinen Erzeugungskontext"
- spa "La vista %`s.%`s no tiene contexto de creación"
+ chi "View%`s.%`s没有创建上下文"
+ eng "View %`s.%`s has no creation context"
+ ger "View %`s.%`s hat keinen Erzeugungskontext"
+ spa "La vista %`s.%`s no tiene contexto de creación"
ER_VIEW_INVALID_CREATION_CTX
- eng "Creation context of view %`s.%`s is invalid"
- ger "Erzeugungskontext des Views%`s.%`s ist ungültig"
- spa "El contexto de creación de la vista %`s.%`s es inválido"
+ chi "Creation View%`s.%`s的上下文无效"
+ eng "Creation context of view %`s.%`s is invalid"
+ ger "Erzeugungskontext des Views%`s.%`s ist ungültig"
+ spa "El contexto de creación de la vista %`s.%`s es inválido"
ER_SR_INVALID_CREATION_CTX
- eng "Creation context of stored routine %`s.%`s is invalid"
- ger "Erzeugungskontext der gespeicherten Routine%`s.%`s ist ungültig"
- spa "El contexto de creación de la rutina almacenada %`s.%`s es inválido"
+ chi "存储例程%`s.%`s的创建上下文无效"
+ eng "Creation context of stored routine %`s.%`s is invalid"
+ ger "Erzeugungskontext der gespeicherten Routine%`s.%`s ist ungültig"
+ spa "El contexto de creación de la rutina almacenada %`s.%`s es inválido"
ER_TRG_CORRUPTED_FILE
- eng "Corrupted TRG file for table %`s.%`s"
- ger "Beschädigte TRG-Datei für Tabelle %`s.%`s"
- spa "Fichero/archivo TRG estropeado para la tabla %`s.%`s`"
+ chi "表的trg文件æŸå了。%`s.%`s"
+ eng "Corrupted TRG file for table %`s.%`s"
+ ger "Beschädigte TRG-Datei für Tabelle %`s.%`s"
+ spa "Fichero/archivo TRG estropeado para la tabla %`s.%`s`"
ER_TRG_NO_CREATION_CTX
- eng "Triggers for table %`s.%`s have no creation context"
- ger "Trigger für Tabelle %`s.%`s haben keinen Erzeugungskontext"
- spa "Los disparadores para la tabla %`s.%`s no tienen contexto de creación"
+ chi "表%`s.%`s的触å‘器没有创建上下文"
+ eng "Triggers for table %`s.%`s have no creation context"
+ ger "Trigger für Tabelle %`s.%`s haben keinen Erzeugungskontext"
+ spa "Los disparadores para la tabla %`s.%`s no tienen contexto de creación"
ER_TRG_INVALID_CREATION_CTX
- eng "Trigger creation context of table %`s.%`s is invalid"
- ger "Trigger-Erzeugungskontext der Tabelle %`s.%`s ist ungültig"
- spa "El contexto de creación del disparador de la tabla %`s.%`s es inválido"
+ chi "触å‘表%`s.%`s的创建上下文无效"
+ eng "Trigger creation context of table %`s.%`s is invalid"
+ ger "Trigger-Erzeugungskontext der Tabelle %`s.%`s ist ungültig"
+ spa "El contexto de creación del disparador de la tabla %`s.%`s es inválido"
ER_EVENT_INVALID_CREATION_CTX
- eng "Creation context of event %`s.%`s is invalid"
- ger "Erzeugungskontext des Events %`s.%`s ist ungültig"
- spa "El contexto de creación del evento %`s.%`s es inválido"
+ chi "事件%`s.%`s的创建上下文无效"
+ eng "Creation context of event %`s.%`s is invalid"
+ ger "Erzeugungskontext des Events %`s.%`s ist ungültig"
+ spa "El contexto de creación del evento %`s.%`s es inválido"
ER_TRG_CANT_OPEN_TABLE
- eng "Cannot open table for trigger %`s.%`s"
- ger "Kann Tabelle für den Trigger %`s.%`s nicht öffnen"
- spa "No puedo abrir tabla para disparador %`s.%`s"
+ chi "无法打开触å‘%`s.%`s的表"
+ eng "Cannot open table for trigger %`s.%`s"
+ ger "Kann Tabelle für den Trigger %`s.%`s nicht öffnen"
+ spa "No puedo abrir tabla para disparador %`s.%`s"
ER_CANT_CREATE_SROUTINE
- eng "Cannot create stored routine %`s. Check warnings"
- ger "Kann gespeicherte Routine %`s nicht erzeugen. Beachten Sie die Warnungen"
- spa "No puedo crear rutina alnacenada %`s. Revise los avisos"
+ chi "无法创建存储过程%`s。检查警告"
+ eng "Cannot create stored routine %`s. Check warnings"
+ ger "Kann gespeicherte Routine %`s nicht erzeugen. Beachten Sie die Warnungen"
+ spa "No puedo crear rutina alnacenada %`s. Revise los avisos"
ER_UNUSED_11
+ chi "你永远ä¸åº”该看到它"
eng "You should never see it"
spa "Nunca debería vd de ver esto"
ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT
- eng "The BINLOG statement of type %s was not preceded by a format description BINLOG statement"
- ger "Der BINLOG-Anweisung vom Typ %s ging keine BINLOG-Anweisung zur Formatbeschreibung voran"
- spa "La sentencia BINLOG del tipo `%s` no ha sido precedida por una sentencia de descripción de formato BINLOG"
+ chi "类型%sçš„Binlog语å¥æœªåœ¨æ ¼å¼æè¿°binlog语å¥ä¹‹å‰"
+ eng "The BINLOG statement of type %s was not preceded by a format description BINLOG statement"
+ ger "Der BINLOG-Anweisung vom Typ %s ging keine BINLOG-Anweisung zur Formatbeschreibung voran"
+ spa "La sentencia BINLOG del tipo `%s` no ha sido precedida por una sentencia de descripción de formato BINLOG"
ER_SLAVE_CORRUPT_EVENT
- eng "Corrupted replication event was detected"
- ger "Beschädigtes Replikationsereignis entdeckt"
- spa "Se ha detectado un evento de réplica estropeado"
+ chi "检测到æŸåçš„å¤åˆ¶äº‹ä»¶"
+ eng "Corrupted replication event was detected"
+ ger "Beschädigtes Replikationsereignis entdeckt"
+ spa "Se ha detectado un evento de réplica estropeado"
ER_LOAD_DATA_INVALID_COLUMN
- eng "Invalid column reference (%-.64s) in LOAD DATA"
- ger "Ungültige Spaltenreferenz (%-.64s) bei LOAD DATA"
- spa "Referencia inválida a columna (%-.64s) en LOAD DATA"
+ chi "LOAD DATA中的列引用(%-.64s)无效"
+ eng "Invalid column reference (%-.64s) in LOAD DATA"
+ ger "Ungültige Spaltenreferenz (%-.64s) bei LOAD DATA"
+ spa "Referencia inválida a columna (%-.64s) en LOAD DATA"
ER_LOG_PURGE_NO_FILE
- eng "Being purged log %s was not found"
- ger "Zu bereinigende Logdatei %s wurde nicht gefunden"
- spa "No ha sido hallado historial (log) %s siendo purgado"
+ chi "未找到清除的log%s"
+ eng "Being purged log %s was not found"
+ ger "Zu bereinigende Logdatei %s wurde nicht gefunden"
+ spa "No ha sido hallado historial (log) %s siendo purgado"
ER_XA_RBTIMEOUT XA106
- eng "XA_RBTIMEOUT: Transaction branch was rolled back: took too long"
- ger "XA_RBTIMEOUT: Transaktionszweig wurde zurückgerollt: Zeitüberschreitung"
- spa "XA_RBTIMEOUT: Rama de transacción ha sido retrocedida (rolled back): transcurrido demasiado tiempo"
+ chi "XA_RBTIMEOUT:交易分支回滚:花了太久了"
+ eng "XA_RBTIMEOUT: Transaction branch was rolled back: took too long"
+ ger "XA_RBTIMEOUT: Transaktionszweig wurde zurückgerollt: Zeitüberschreitung"
+ spa "XA_RBTIMEOUT: Rama de transacción ha sido retrocedida (rolled back): transcurrido demasiado tiempo"
ER_XA_RBDEADLOCK XA102
- eng "XA_RBDEADLOCK: Transaction branch was rolled back: deadlock was detected"
- ger "XA_RBDEADLOCK: Transaktionszweig wurde zurückgerollt: Deadlock entdeckt"
- spa "XA_RBDEADLOCK: Rama de transacción ha dido retrocedida (rolled back): se ha detectado estancamiento (deadlock)"
+ chi "XA_RBDEADLOCK:交易分支回滚:检测到死é”"
+ eng "XA_RBDEADLOCK: Transaction branch was rolled back: deadlock was detected"
+ ger "XA_RBDEADLOCK: Transaktionszweig wurde zurückgerollt: Deadlock entdeckt"
+ spa "XA_RBDEADLOCK: Rama de transacción ha dido retrocedida (rolled back): se ha detectado estancamiento (deadlock)"
ER_NEED_REPREPARE
- eng "Prepared statement needs to be re-prepared"
- ger "Vorbereitete Anweisungen müssen noch einmal vorbereitet werden"
- spa "Sentencia preparada necesita volver a ser preparada"
+ chi "prepared statement需è¦é‡æ–°å‡†å¤‡"
+ eng "Prepared statement needs to be re-prepared"
+ ger "Vorbereitete Anweisungen müssen noch einmal vorbereitet werden"
+ spa "Sentencia preparada necesita volver a ser preparada"
ER_DELAYED_NOT_SUPPORTED
- eng "DELAYED option not supported for table '%-.192s'"
- ger "Die DELAYED-Option wird für Tabelle '%-.192s' nicht unterstützt"
- spa "Opción DELAYED no soportada para la tabla '%-.192s'"
-WARN_NO_MASTER_INFO
- eng "There is no master connection '%.*s'"
- ger "Die Master-Info-Struktur existiert nicht '%.*s'"
- spa "No existe conexión maestra '%.*s'"
+ chi "表'%-.192s'ä¸æ”¯æŒå»¶è¿Ÿé€‰é¡¹"
+ eng "DELAYED option not supported for table '%-.192s'"
+ ger "Die DELAYED-Option wird für Tabelle '%-.192s' nicht unterstützt"
+ spa "Opción DELAYED no soportada para la tabla '%-.192s'"
+WARN_NO_MASTER_INFO
+ eng "There is no master connection '%.*s'"
+ ger "Die Master-Info-Struktur existiert nicht '%.*s'"
+ spa "No existe conexión maestra '%.*s'"
WARN_OPTION_IGNORED
- eng "<%-.64s> option ignored"
- ger "Option <%-.64s> ignoriert"
- spa "Opción <%-.64s> ignorada"
+ eng "<%-.64s> option ignored"
+ ger "Option <%-.64s> ignoriert"
+ spa "Opción <%-.64s> ignorada"
ER_PLUGIN_DELETE_BUILTIN
- eng "Built-in plugins cannot be deleted"
- ger "Eingebaute Plugins können nicht gelöscht werden"
- spa "No se pueden borrar los enchufes (plugins) internos"
+ chi "内置æ’件无法删除"
+ eng "Built-in plugins cannot be deleted"
+ ger "Eingebaute Plugins können nicht gelöscht werden"
+ spa "No se pueden borrar los enchufes (plugins) internos"
WARN_PLUGIN_BUSY
- eng "Plugin is busy and will be uninstalled on shutdown"
- ger "Plugin wird verwendet und wird erst beim Herunterfahren deinstalliert"
- spa "El enchufe (plugin) está ocupado y será desinstalado cuando se apague"
+ chi "æ’件很忙,将在关机时å¸è½½"
+ eng "Plugin is busy and will be uninstalled on shutdown"
+ ger "Plugin wird verwendet und wird erst beim Herunterfahren deinstalliert"
+ spa "El enchufe (plugin) está ocupado y será desinstalado cuando se apague"
ER_VARIABLE_IS_READONLY
- eng "%s variable '%s' is read-only. Use SET %s to assign the value"
- ger "%s Variable '%s' ist nur lesbar. Benutzen Sie SET %s, um einen Wert zuzuweisen"
- spa "%s variable '%s' es de sólo lectura. Use SET %s para asignar el valor"
+ chi "%så˜é‡'%s'是åªè¯»çš„。使用set%s付值"
+ eng "%s variable '%s' is read-only. Use SET %s to assign the value"
+ ger "%s Variable '%s' ist nur lesbar. Benutzen Sie SET %s, um einen Wert zuzuweisen"
+ spa "%s variable '%s' es de sólo lectura. Use SET %s para asignar el valor"
ER_WARN_ENGINE_TRANSACTION_ROLLBACK
- eng "Storage engine %s does not support rollback for this statement. Transaction rolled back and must be restarted"
- ger "Speicher-Engine %s unterstützt für diese Anweisung kein Rollback. Transaktion wurde zurückgerollt und muss neu gestartet werden"
- spa "El motor de almacenaje %s no soporta retroceso (rollback) para esta sentencia. Transacción retrocedida (rolled back) y debe de ser rearrancada"
+ chi "存储引擎%sä¸æ”¯æŒæ­¤è¯­å¥çš„回滚。交易回滚并必须é‡æ–°å¯åŠ¨"
+ eng "Storage engine %s does not support rollback for this statement. Transaction rolled back and must be restarted"
+ ger "Speicher-Engine %s unterstützt für diese Anweisung kein Rollback. Transaktion wurde zurückgerollt und muss neu gestartet werden"
+ spa "El motor de almacenaje %s no soporta retroceso (rollback) para esta sentencia. Transacción retrocedida (rolled back) y debe de ser rearrancada"
ER_SLAVE_HEARTBEAT_FAILURE
- eng "Unexpected master's heartbeat data: %s"
- ger "Unerwartete Daten vom Heartbeat des Masters: %s"
- spa "Datos inesperados de latido (heartbeat) de maestro (master): %s"
+ chi "æ„外的master心跳数æ®ï¼š%s"
+ eng "Unexpected master's heartbeat data: %s"
+ ger "Unerwartete Daten vom Heartbeat des Masters: %s"
+ spa "Datos inesperados de latido (heartbeat) de maestro (master): %s"
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE
- eng "The requested value for the heartbeat period is either negative or exceeds the maximum allowed (%u seconds)"
- spa "El valor requerido para el período de latido o es negativo o excede al máximo permitido (%u segundos)"
+ chi "心跳周期的请求值是负的或超过å…许的最大值(%u秒)"
+ eng "The requested value for the heartbeat period is either negative or exceeds the maximum allowed (%u seconds)"
+ spa "El valor requerido para el período de latido o es negativo o excede al máximo permitido (%u segundos)"
ER_UNUSED_14
- eng "You should never see it"
- spa "Nunca debería vd de ver esto"
+ chi "你永远ä¸åº”该看到它"
+ eng "You should never see it"
+ spa "Nunca debería vd de ver esto"
ER_CONFLICT_FN_PARSE_ERROR
- eng "Error in parsing conflict function. Message: %-.64s"
- ger "Fehler beim Parsen einer Konflikt-Funktion. Meldung: %-.64s"
- spa "Error al analizar función de conflicto. Mensaje: %-.64s"
+ chi "解æžå†²çªåŠŸèƒ½æ—¶å‡ºé”™ã€‚消æ¯ï¼š%-.64s"
+ eng "Error in parsing conflict function. Message: %-.64s"
+ ger "Fehler beim Parsen einer Konflikt-Funktion. Meldung: %-.64s"
+ spa "Error al analizar función de conflicto. Mensaje: %-.64s"
ER_EXCEPTIONS_WRITE_ERROR
- eng "Write to exceptions table failed. Message: %-.128s""
- ger "Schreiben in Ausnahme-Tabelle fehlgeschlagen. Meldung: %-.128s""
- spa "Ha fallado el grabar en tabla de excepciones. Mensaje: %-.128s""
+ chi "写入异常表失败。消æ¯ï¼š%-.128s"
+ eng "Write to exceptions table failed. Message: %-.128s""
+ ger "Schreiben in Ausnahme-Tabelle fehlgeschlagen. Meldung: %-.128s""
+ spa "Ha fallado el grabar en tabla de excepciones. Mensaje: %-.128s""
ER_TOO_LONG_TABLE_COMMENT
- eng "Comment for table '%-.64s' is too long (max = %u)"
- por "Comentário para a tabela '%-.64s' é longo demais (max = %u)"
- ger "Kommentar für Tabelle '%-.64s' ist zu lang (max = %u)"
- spa "El comentario para tabla '%-.64s' es demasiado largo (máx = %u)"
+ chi "表格备注'%-.64s'太长(max =%u)"
+ eng "Comment for table '%-.64s' is too long (max = %u)"
+ ger "Kommentar für Tabelle '%-.64s' ist zu lang (max = %u)"
+ por "Comentário para a tabela '%-.64s' é longo demais (max = %u)"
+ spa "El comentario para tabla '%-.64s' es demasiado largo (máx = %u)"
ER_TOO_LONG_FIELD_COMMENT
- eng "Comment for field '%-.64s' is too long (max = %u)"
- por "Comentário para o campo '%-.64s' é longo demais (max = %u)"
- ger "Kommentar für Feld '%-.64s' ist zu lang (max = %u)"
- spa "El comentario para el campo '%-.64s' es demasiado largo (máx = %u)"
+ chi "字段'%-.64s'太长(max =%u)"
+ eng "Comment for field '%-.64s' is too long (max = %u)"
+ ger "Kommentar für Feld '%-.64s' ist zu lang (max = %u)"
+ por "Comentário para o campo '%-.64s' é longo demais (max = %u)"
+ spa "El comentario para el campo '%-.64s' es demasiado largo (máx = %u)"
ER_FUNC_INEXISTENT_NAME_COLLISION 42000
- eng "FUNCTION %s does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual"
- ger "FUNCTION %s existiert nicht. Erläuterungen im Abschnitt 'Function Name Parsing and Resolution' im Referenzhandbuch"
- spa "La FUNCTION %s no existe. Revise la sección de 'Function Name Parsing and Resolution' en el Manual de Referencia"
+ chi "FUNCTION %sä¸å­˜åœ¨ã€‚在å‚考手册中查看“函数å称解æžâ€éƒ¨åˆ†"
+ eng "FUNCTION %s does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual"
+ ger "FUNCTION %s existiert nicht. Erläuterungen im Abschnitt 'Function Name Parsing and Resolution' im Referenzhandbuch"
+ spa "La FUNCTION %s no existe. Revise la sección de 'Function Name Parsing and Resolution' en el Manual de Referencia"
# When updating these, please update EXPLAIN_FILENAME_MAX_EXTRA_LENGTH in
# sql_table.h with the new maximal additional length for explain_filename.
ER_DATABASE_NAME
- eng "Database"
- swe "Databas"
- ger "Datenbank"
- hindi "डेटाबेस"
- spa "Base de datos"
+ chi "æ•°æ®åº“"
+ eng "Database"
+ ger "Datenbank"
+ hindi "डेटाबेस"
+ spa "Base de datos"
+ swe "Databas"
ER_TABLE_NAME
- eng "Table"
- swe "Tabell"
- ger "Tabelle"
- hindi "टेबल"
- spa "Tabla"
+ chi "表"
+ eng "Table"
+ ger "Tabelle"
+ hindi "टेबल"
+ spa "Tabla"
+ swe "Tabell"
ER_PARTITION_NAME
- eng "Partition"
- swe "Partition"
- ger "Partition"
- hindi "पारà¥à¤Ÿà¥€à¤¶à¤¨"
- spa "Partición"
+ chi "分区"
+ eng "Partition"
+ ger "Partition"
+ hindi "पारà¥à¤Ÿà¥€à¤¶à¤¨"
+ spa "Partición"
+ swe "Partition"
ER_SUBPARTITION_NAME
- eng "Subpartition"
- swe "Subpartition"
- ger "Unterpartition"
- hindi "सब-पारà¥à¤Ÿà¥€à¤¶à¤¨"
- spa "Subpartición"
+ chi "下分区"
+ eng "Subpartition"
+ ger "Unterpartition"
+ hindi "सब-पारà¥à¤Ÿà¥€à¤¶à¤¨"
+ spa "Subpartición"
+ swe "Subpartition"
ER_TEMPORARY_NAME
- eng "Temporary"
- swe "Temporär"
- ger "Temporär"
- hindi "असà¥à¤¥à¤¾à¤¯à¥€"
- spa "Temporal"
+ chi "暂时的"
+ eng "Temporary"
+ ger "Temporär"
+ hindi "असà¥à¤¥à¤¾à¤¯à¥€"
+ spa "Temporaria"
+ swe "Temporär"
ER_RENAMED_NAME
- eng "Renamed"
- swe "Namnändrad"
- ger "Umbenannt"
- spa "Renombrado"
+ chi "é‡å‘½å"
+ eng "Renamed"
+ ger "Umbenannt"
+ spa "Renombrado"
+ swe "Namnändrad"
ER_TOO_MANY_CONCURRENT_TRXS
- eng "Too many active concurrent transactions"
- ger "Zu viele aktive simultane Transaktionen"
- spa "Demasiadas transacciones concurrentes activas"
+ chi "“太多并å‘交易"
+ eng "Too many active concurrent transactions"
+ ger "Zu viele aktive simultane Transaktionen"
+ spa "Demasiadas transacciones concurrentes activas"
WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED
- eng "Non-ASCII separator arguments are not fully supported"
- ger "Nicht-ASCII-Trennargumente werden nicht vollständig unterstützt"
- spa "Los argumentos con separador No ASCII no están completamente soportados"
+ chi "éžASCII分隔符å‚æ•°ä¸å®Œå…¨æ”¯æŒ"
+ eng "Non-ASCII separator arguments are not fully supported"
+ ger "Nicht-ASCII-Trennargumente werden nicht vollständig unterstützt"
+ spa "Los argumentos con separador No ASCII no están completamente soportados"
ER_DEBUG_SYNC_TIMEOUT
- eng "debug sync point wait timed out"
- ger "Debug Sync Point Wartezeit überschritten"
- spa "agotado tiempo de espera de punto de sincronización de depuración"
+ chi "调试åŒæ­¥ç‚¹ç­‰å¾…超时"
+ eng "debug sync point wait timed out"
+ ger "Debug Sync Point Wartezeit überschritten"
+ spa "agotado tiempo de espera de punto de sincronización de depuración"
ER_DEBUG_SYNC_HIT_LIMIT
- eng "debug sync point hit limit reached"
- ger "Debug Sync Point Hit Limit erreicht"
- spa "alcanzado límite de punto de sincronización de depuración"
+ chi "调试åŒæ­¥ç‚¹é™åˆ¶è¾¾åˆ°"
+ eng "debug sync point hit limit reached"
+ ger "Debug Sync Point Hit Limit erreicht"
+ spa "alcanzado límite de punto de sincronización de depuración"
ER_DUP_SIGNAL_SET 42000
- eng "Duplicate condition information item '%s'"
- ger "Informationselement '%s' für Duplikatbedingung"
- spa "Duplicado elemento de información de condición '%s'"
+ chi "é‡å¤æ¡ä»¶ä¿¡æ¯é¡¹'%s'"
+ eng "Duplicate condition information item '%s'"
+ ger "Informationselement '%s' für Duplikatbedingung"
+ spa "Duplicado elemento de información de condición '%s'"
# Note that the SQLSTATE is not 01000, it is provided by SIGNAL/RESIGNAL
ER_SIGNAL_WARN 01000
- eng "Unhandled user-defined warning condition"
- ger "Unbehandelte benutzerdefinierte Warnbedingung"
- spa "Condición de aviso definida por usuario sin manejar"
+ chi "未处ç†ç”¨æˆ·å®šä¹‰çš„警告æ¡ä»¶"
+ eng "Unhandled user-defined warning condition"
+ ger "Unbehandelte benutzerdefinierte Warnbedingung"
+ spa "Condición de aviso definida por usuario sin manejar"
# Note that the SQLSTATE is not 02000, it is provided by SIGNAL/RESIGNAL
ER_SIGNAL_NOT_FOUND 02000
- eng "Unhandled user-defined not found condition"
- ger "Unbehandelte benutzerdefinierte Nicht-gefunden-Bedingung"
- spa "Condición de no hallado definida por usuario sin manejar"
+ chi "未找到的用户定义未找到æ¡ä»¶"
+ eng "Unhandled user-defined not found condition"
+ ger "Unbehandelte benutzerdefinierte Nicht-gefunden-Bedingung"
+ spa "Condición de no hallado definida por usuario sin manejar"
# Note that the SQLSTATE is not HY000, it is provided by SIGNAL/RESIGNAL
ER_SIGNAL_EXCEPTION HY000
- eng "Unhandled user-defined exception condition"
- ger "Unbehandelte benutzerdefinierte Ausnahmebedingung"
- spa "Condición de excepción definida por usuario sin manejar"
+ chi "未处ç†ç”¨æˆ·å®šä¹‰çš„异常æ¡ä»¶"
+ eng "Unhandled user-defined exception condition"
+ ger "Unbehandelte benutzerdefinierte Ausnahmebedingung"
+ spa "Condición de excepción definida por usuario sin manejar"
ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER 0K000
- eng "RESIGNAL when handler not active"
- ger "RESIGNAL bei nicht aktivem Handler"
- spa "RESIGNAL cuando el manejador no activo"
+ chi "RESIGNAL处ç†ç¨‹åºä¸æ´»è·ƒ"
+ eng "RESIGNAL when handler not active"
+ ger "RESIGNAL bei nicht aktivem Handler"
+ spa "RESIGNAL cuando el manejador no activo"
ER_SIGNAL_BAD_CONDITION_TYPE
- eng "SIGNAL/RESIGNAL can only use a CONDITION defined with SQLSTATE"
- ger "SIGNAL/RESIGNAL kann nur mit einer Bedingung (CONDITION) benutzt werden, die bei SQLSTATE definiert wurde"
- spa "SIGNAL/RESIGNAL sólo pueden usar una CONDITION definida mediante SQLSTATE"
+ chi "SIGNAL/RESIGNALåªèƒ½ä½¿ç”¨SQLState定义的æ¡ä»¶"
+ eng "SIGNAL/RESIGNAL can only use a CONDITION defined with SQLSTATE"
+ ger "SIGNAL/RESIGNAL kann nur mit einer Bedingung (CONDITION) benutzt werden, die bei SQLSTATE definiert wurde"
+ spa "SIGNAL/RESIGNAL sólo pueden usar una CONDITION definida mediante SQLSTATE"
WARN_COND_ITEM_TRUNCATED
- eng "Data truncated for condition item '%s'"
- ger "Daten gekürzt für Bedingungselement '%s'"
- spa "Datos truncados para elemento de condición '%s'"
+ chi "æ•°æ®è¢«æˆªæ–­ä¸ºæ¡ä»¶é¡¹ç›®'%s'"
+ eng "Data truncated for condition item '%s'"
+ ger "Daten gekürzt für Bedingungselement '%s'"
+ spa "Datos truncados para elemento de condición '%s'"
ER_COND_ITEM_TOO_LONG
- eng "Data too long for condition item '%s'"
- ger "Daten zu lang für Bedingungselement '%s'"
- spa "Datos demasiados largos para elemento de condición '%s'"
+ chi "æ¡ä»¶é¡¹ç›®'%s'çš„æ•°æ®å¤ªé•¿"
+ eng "Data too long for condition item '%s'"
+ ger "Daten zu lang für Bedingungselement '%s'"
+ spa "Datos demasiados largos para elemento de condición '%s'"
ER_UNKNOWN_LOCALE
- eng "Unknown locale: '%-.64s'"
- ger "Unbekannte Locale: '%-.64s'"
- spa "Localización (locale) desconocida: '%-.64s'"
+ chi "未知区域设置:'%-.64s'"
+ eng "Unknown locale: '%-.64s'"
+ ger "Unbekannte Locale: '%-.64s'"
+ spa "Localización (locale) desconocida: '%-.64s'"
ER_SLAVE_IGNORE_SERVER_IDS
- eng "The requested server id %d clashes with the slave startup option --replicate-same-server-id"
- ger "Die angeforderte Server-ID %d steht im Konflikt mit der Startoption --replicate-same-server-id für den Slave"
- spa "La id %d del servidor requerido choca con la opción de arranque del esclavo --replicate-same-server-id"
+ chi "请求的æœåŠ¡å™¨ID%d与SLAVEå¯åŠ¨é€‰é¡¹--replicate-same-server-id冲çª"
+ eng "The requested server id %d clashes with the slave startup option --replicate-same-server-id"
+ ger "Die angeforderte Server-ID %d steht im Konflikt mit der Startoption --replicate-same-server-id für den Slave"
+ spa "La id %d del servidor requerido choca con la opción de arranque del esclavo --replicate-same-server-id"
ER_QUERY_CACHE_DISABLED
- eng "Query cache is disabled; set query_cache_type to ON or DEMAND to enable it"
- spa "Caché de consulta (query) desactivada; configura query_cache_type a ON o DEMAND para activarla"
+ chi "查询缓存已ç¦ç”¨;å°†query_cache_type设置为ON或DEMANDå¯ç”¨å®ƒ"
+ eng "Query cache is disabled; set query_cache_type to ON or DEMAND to enable it"
+ spa "Caché de consulta (query) desactivada; configura query_cache_type a ON o DEMAND para activarla"
ER_SAME_NAME_PARTITION_FIELD
- eng "Duplicate partition field name '%-.192s'"
- ger "Partitionsfeld '%-.192s' ist ein Duplikat"
- spa "Nombre de campo de partición duplicado '%-.192s'"
+ chi "é‡å¤åˆ†åŒºå­—段å称'%-.192s'"
+ eng "Duplicate partition field name '%-.192s'"
+ ger "Partitionsfeld '%-.192s' ist ein Duplikat"
+ spa "Nombre de campo de partición duplicado '%-.192s'"
ER_PARTITION_COLUMN_LIST_ERROR
- eng "Inconsistency in usage of column lists for partitioning"
- ger "Inkonsistenz bei der Benutzung von Spaltenlisten für Partitionierung"
- spa "Inconsistencia en uso de listas de columna para particionar"
+ chi "分区用的列和列表使用ä¸ä¸€è‡´"
+ eng "Inconsistency in usage of column lists for partitioning"
+ ger "Inkonsistenz bei der Benutzung von Spaltenlisten für Partitionierung"
+ spa "Inconsistencia en uso de listas de columna para particionar"
ER_WRONG_TYPE_COLUMN_VALUE_ERROR
- eng "Partition column values of incorrect type"
- ger "Partitionsspaltenwerte sind vom falschen Typ"
- spa "Valores de columna de partición de tipo incorrecto"
+ chi "ä¸æ­£ç¡®ç±»åž‹çš„分区列值"
+ eng "Partition column values of incorrect type"
+ ger "Partitionsspaltenwerte sind vom falschen Typ"
+ spa "Valores de columna de partición de tipo incorrecto"
ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR
- eng "Too many fields in '%-.192s'"
- ger "Zu viele Felder in '%-.192s'"
- spa "Demasiados campos en '%-.192s'"
+ chi "'%-.192s'中的太多字段"
+ eng "Too many fields in '%-.192s'"
+ ger "Zu viele Felder in '%-.192s'"
+ spa "Demasiados campos en '%-.192s'"
ER_MAXVALUE_IN_VALUES_IN
- eng "Cannot use MAXVALUE as value in VALUES IN"
- ger "MAXVALUE kann nicht als Wert in VALUES IN verwendet werden"
- spa "No puedo usar MAXVALUE como valor en VALUES IN"
+ chi "ä¸èƒ½åœ¨VALUES IN使用MAXVALUE"
+ eng "Cannot use MAXVALUE as value in VALUES IN"
+ ger "MAXVALUE kann nicht als Wert in VALUES IN verwendet werden"
+ spa "No puedo usar MAXVALUE como valor en VALUES IN"
ER_TOO_MANY_VALUES_ERROR
- eng "Cannot have more than one value for this type of %-.64s partitioning"
- ger "Für den Partionierungstyp %-.64s darf es nicht mehr als einen Wert geben"
- spa "No puedo tener más de un valor para este tipo de particionamiento %-.64s"
+ chi "è¿™ç§ç±»åž‹ä¸èƒ½æœ‰å¤šä¸ªå€¼%-.64s 分区"
+ eng "Cannot have more than one value for this type of %-.64s partitioning"
+ ger "Für den Partionierungstyp %-.64s darf es nicht mehr als einen Wert geben"
+ spa "No puedo tener más de un valor para este tipo de particionamiento %-.64s"
ER_ROW_SINGLE_PARTITION_FIELD_ERROR
- eng "Row expressions in VALUES IN only allowed for multi-field column partitioning"
- ger "Zeilenausdrücke in VALUES IN sind nur für Mehrfeld-Spaltenpartionierung erlaubt"
- spa "Expresiones de fila en VALUES IN sólo permitidas para particionamiento de columna multi-campo"
+ chi "ä»…å…许的多字段列分区的VALUES IN的行表达å¼"
+ eng "Row expressions in VALUES IN only allowed for multi-field column partitioning"
+ ger "Zeilenausdrücke in VALUES IN sind nur für Mehrfeld-Spaltenpartionierung erlaubt"
+ spa "Expresiones de fila en VALUES IN sólo permitidas para particionamiento de columna multi-campo"
ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD
- eng "Field '%-.192s' is of a not allowed type for this type of partitioning"
- ger "Feld '%-.192s' ist für diese Art von Partitionierung von einem nicht zulässigen Typ"
- spa "El campo '%-.192s' es de un tipo no permitido para este tipo de particionado"
+ chi "字段'%-.192s'类型ä¸å…许为此类型的分区类型"
+ eng "Field '%-.192s' is of a not allowed type for this type of partitioning"
+ ger "Feld '%-.192s' ist für diese Art von Partitionierung von einem nicht zulässigen Typ"
+ spa "El campo '%-.192s' es de un tipo no permitido para este tipo de particionado"
ER_PARTITION_FIELDS_TOO_LONG
- eng "The total length of the partitioning fields is too large"
- ger "Die Gesamtlänge der Partitionsfelder ist zu groß"
- spa "El tamaño total de los campos de particionado es demasiado grande"
+ chi "分区字段的总长度太大"
+ eng "The total length of the partitioning fields is too large"
+ ger "Die Gesamtlänge der Partitionsfelder ist zu groß"
+ spa "El tamaño total de los campos de particionado es demasiado grande"
ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE
- eng "Cannot execute statement: impossible to write to binary log since both row-incapable engines and statement-incapable engines are involved"
- spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que ambos motores de fila-incapaz y de sentencia-incapaz están involucrados"
+ chi "无法执行语å¥ï¼šç”±äºŽå¼•æ“Žä¸èƒ½æ”¯æŒè¡Œå’Œè¯­å¥ï¼Œå› æ­¤æ— æ³•å†™å…¥äºŒè¿›åˆ¶æ—¥å¿—"
+ eng "Cannot execute statement: impossible to write to binary log since both row-incapable engines and statement-incapable engines are involved"
+ spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que ambos motores de fila-incapaz y de sentencia-incapaz están involucrados"
ER_BINLOG_ROW_MODE_AND_STMT_ENGINE
- eng "Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging"
- spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que BINLOG_FORMAT = ROW y al menos una tabla utiliza motor de almacenaje limitado a historiales basados en sentencia"
+ chi "无法执行语å¥ï¼šç”±äºŽBINLOG_FORMAT =ROW和至少一个表使用存储引擎é™åˆ¶ä¸ºåŸºäºŽè¯­å¥çš„日志记录,因此无法写入二进制日志"
+ eng "Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging"
+ spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que BINLOG_FORMAT = ROW y al menos una tabla utiliza motor de almacenaje limitado a historiales basados en sentencia"
ER_BINLOG_UNSAFE_AND_STMT_ENGINE
- eng "Cannot execute statement: impossible to write to binary log since statement is unsafe, storage engine is limited to statement-based logging, and BINLOG_FORMAT = MIXED. %s"
- spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que la sentencia no es segura, el motor de almacenaje está limitado a historial basado en sentencia y BINLOG_FORMAT = MIXED. %s"
+ chi "无法执行语å¥ï¼šç”±äºŽè¯­å¥ä¸å®‰å…¨ï¼Œæ— æ³•å†™å…¥äºŒè¿›åˆ¶æ—¥å¿—,存储引擎仅é™äºŽåŸºäºŽè¯­å¥çš„日志记录,而BINLOG_FORMAT = MIXED。%s."
+ eng "Cannot execute statement: impossible to write to binary log since statement is unsafe, storage engine is limited to statement-based logging, and BINLOG_FORMAT = MIXED. %s"
+ spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que la sentencia no es segura, el motor de almacenaje está limitado a historial basado en sentencia y BINLOG_FORMAT = MIXED. %s"
ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE
- eng "Cannot execute statement: impossible to write to binary log since statement is in row format and at least one table uses a storage engine limited to statement-based logging"
- spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que la sentencia está en un formato de fila y al menos una tabla utiliza un motor de almacenaje limitado a historial basado en sentencia"
+ chi "无法执行语å¥ï¼šç”±äºŽè¯­å¥ä»¥è¡Œæ ¼å¼ï¼Œè‡³å°‘一个表使用基于语å¥çš„日志记录的存储引擎,因此无法写入二进制日志。"
+ eng "Cannot execute statement: impossible to write to binary log since statement is in row format and at least one table uses a storage engine limited to statement-based logging"
+ spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que la sentencia está en un formato de fila y al menos una tabla utiliza un motor de almacenaje limitado a historial basado en sentencia"
ER_BINLOG_STMT_MODE_AND_ROW_ENGINE
- eng "Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging.%s"
- spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que BINLOG_FORMAT = STATEMENT y al menos una tabla utilizan un motor de almacenaje limitado a historial basado en fila. %s"
+ chi "无法执行语å¥ï¼šç”±äºŽBINLOG_FORMAT = STATEMENT,并且至少一个表使用存储引擎é™åˆ¶ä¸ºåŸºäºŽè¡Œçš„日志记录,因此无法写入二进制日志。%s"
+ eng "Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging.%s"
+ spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que BINLOG_FORMAT = STATEMENT y al menos una tabla utilizan un motor de almacenaje limitado a historial basado en fila. %s"
ER_BINLOG_ROW_INJECTION_AND_STMT_MODE
- eng "Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT"
- spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que la sentencia está en formato de fila y BINLOG_FORMAT = STATEMENT"
+ chi "无法执行语å¥ï¼šç”±äºŽè¯­å¥çš„正常格å¼å’ŒBINLOG_FORMAT = STATEMENT,因此无法写入二进制日志"
+ eng "Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT"
+ spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que la sentencia está en formato de fila y BINLOG_FORMAT = STATEMENT"
ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE
- eng "Cannot execute statement: impossible to write to binary log since more than one engine is involved and at least one engine is self-logging"
- spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que hay más de un motor involucrado y al menos un motor usa auto-historial"
-
+ chi "无法执行语å¥ï¼šç”±äºŽæ¶‰åŠå¤šä¸ªå¼•æ“Žå¹¶ä¸”至少有一个引擎是自记录的,因此无法写入二进制日志。"
+ eng "Cannot execute statement: impossible to write to binary log since more than one engine is involved and at least one engine is self-logging"
+ spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que hay más de un motor involucrado y al menos un motor usa auto-historial"
ER_BINLOG_UNSAFE_LIMIT
- eng "The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted"
- spa "La sentencia no es segura debido a usar una cláusula LIMIT. No es segura porque el conjunto incluido de filas no se puede predecir"
+ chi "该语å¥ä¸å®‰å…¨ï¼Œå› ä¸ºå®ƒä½¿ç”¨é™åˆ¶å­å¥ã€‚è¿™ä¸å®‰å…¨ï¼Œå› ä¸ºæ‰€åŒ…å«çš„一组行无法预测"
+ eng "The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted"
+ spa "La sentencia no es segura debido a usar una cláusula LIMIT. No es segura porque el conjunto incluido de filas no se puede predecir"
ER_BINLOG_UNSAFE_INSERT_DELAYED
- eng "The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted"
- spa "La sentencia no es segura debido a usar una INSERT DELAYED. No es segura porque los momentos en que las filas han de insertarse no se pueden predecir"
+ chi "该声明ä¸å®‰å…¨ï¼Œå› ä¸ºå®ƒä½¿ç”¨æ’入延迟。这是ä¸å®‰å…¨çš„,因为无法预测æ’入行的时间"
+ eng "The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted"
+ spa "La sentencia no es segura debido a usar una INSERT DELAYED. No es segura porque los momentos en que las filas han de insertarse no se pueden predecir"
ER_BINLOG_UNSAFE_SYSTEM_TABLE
- eng "The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves"
- spa "La sentencia no es segura debido a usar el historial (log) general, un historial (log) lento o tabla(s) de performance_schema. No es segura porque las tablas de sistema pueden diferir de las esclavas"
+ chi "该声明ä¸å®‰å…¨ï¼Œå› ä¸ºå®ƒä½¿ç”¨å¸¸è§„日志,慢查询日志或performance_schema表。这是ä¸å®‰å…¨çš„,因为系统表å¯èƒ½åœ¨slave上ä¸åŒ"
+ eng "The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves"
+ spa "La sentencia no es segura debido a usar el historial (log) general, un historial (log) lento o tabla(s) de performance_schema. No es segura porque las tablas de sistema pueden diferir de las esclavas"
ER_BINLOG_UNSAFE_AUTOINC_COLUMNS
- eng "Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly"
- spa "La sentencia no es segura debido a invocar un disparador o una función almacenada que inserta una columna de AUTO_INCREMENT. No se puede llevar historial correcto de Los valores insertados".
+ chi "语å¥ä¸å®‰å…¨ï¼Œå› ä¸ºå®ƒè°ƒç”¨äº†æ’å…¥AUTO_INCREMENT列的触å‘器或存储函数。æ’入的值无法正确记录"
+ eng "Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly"
+ spa "La sentencia no es segura debido a invocar un disparador o una función almacenada que inserta una columna de AUTO_INCREMENT. No se puede llevar historial correcto de Los valores insertados".
ER_BINLOG_UNSAFE_UDF
- eng "Statement is unsafe because it uses a UDF which may not return the same value on the slave"
- spa "La sentencia no es segura porque usa un UDF que puede no devolver el mismo valor en el esclavo"
+ chi "语å¥ä¸å®‰å…¨ï¼Œå› ä¸ºå®ƒä½¿ç”¨äº†ä¸€ä¸ªå¯èƒ½åœ¨ä»Žè®¾å¤‡ä¸Šè¿”回相åŒå€¼çš„UDF"
+ eng "Statement is unsafe because it uses a UDF which may not return the same value on the slave"
+ spa "La sentencia no es segura porque usa un UDF que puede no devolver el mismo valor en el esclavo"
ER_BINLOG_UNSAFE_SYSTEM_VARIABLE
- eng "Statement is unsafe because it uses a system variable that may have a different value on the slave"
- spa "La sentencia no es segura porque usa una variable de sistema que puede tener un valor diferente en el esclavo"
+ chi "语å¥ä¸å®‰å…¨ï¼Œå› ä¸ºå®ƒä½¿ç”¨çš„系统å˜é‡å¯èƒ½åœ¨ä»Žç«™ä¸Šå…·æœ‰ä¸åŒçš„值"
+ eng "Statement is unsafe because it uses a system variable that may have a different value on the slave"
+ spa "La sentencia no es segura porque usa una variable de sistema que puede tener un valor diferente en el esclavo"
ER_BINLOG_UNSAFE_SYSTEM_FUNCTION
- eng "Statement is unsafe because it uses a system function that may return a different value on the slave"
- spa "La sentencia no es segura porque usa una función de sistema que puede devolver un valor diferente en el esclavo"
+ chi "语å¥ä¸å®‰å…¨ï¼Œå› ä¸ºå®ƒä½¿ç”¨ç³»ç»Ÿå‡½æ•°å¯èƒ½åœ¨ä»Žç«™ä¸Šè¿”回ä¸åŒçš„值"
+ eng "Statement is unsafe because it uses a system function that may return a different value on the slave"
+ spa "La sentencia no es segura porque usa una función de sistema que puede devolver un valor diferente en el esclavo"
ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS
- eng "Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction"
- spa "La sentencia no es segura porque accede a una tabla no transaccional tras acceder a una transaccional dentro de la misma transacción"
-
+ chi "语å¥ä¸å®‰å…¨ï¼Œå› ä¸ºå®ƒåœ¨è®¿é—®åŒä¸€äº‹åŠ¡ä¸­è®¿é—®äº‹åŠ¡è¡¨åŽè®¿é—®éžäº‹åŠ¡æ€§è¡¨"
+ eng "Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction"
+ spa "La sentencia no es segura porque accede a una tabla no transaccional tras acceder a una transaccional dentro de la misma transacción"
ER_MESSAGE_AND_STATEMENT
- eng "%s Statement: %s"
- spa "%s Sentencia: %s"
-
+ chi "%s语å¥ï¼š%s"
+ eng "%s Statement: %s"
+ spa "%s Sentencia: %s"
ER_SLAVE_CONVERSION_FAILED
- eng "Column %d of table '%-.192s.%-.192s' cannot be converted from type '%-.50s' to type '%-.50s'"
- spa "La columna %d de la tabla '%-.192s.%-.192s' no puede ser convertida desde el tipo '%-.50s' al tipo '%-.50s'"
+ chi "列%d表'%-.192s.%-.192s'无法从'%-.50s'类型为'%-.50s'"
+ eng "Column %d of table '%-.192s.%-.192s' cannot be converted from type '%-.50s' to type '%-.50s'"
+ spa "La columna %d de la tabla '%-.192s.%-.192s' no puede ser convertida desde el tipo '%-.50s' al tipo '%-.50s'"
ER_SLAVE_CANT_CREATE_CONVERSION
- eng "Can't create conversion table for table '%-.192s.%-.192s'"
- spa "No puedo crear tabla de conversión para la tabla '%-.192s.%-.192s'"
+ chi "无法为表创建转æ¢è¡¨'%-.192s.%-.192s'"
+ eng "Can't create conversion table for table '%-.192s.%-.192s'"
+ spa "No puedo crear tabla de conversión para la tabla '%-.192s.%-.192s'"
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT
- eng "Cannot modify @@session.binlog_format inside a transaction"
- spa "No puedo modificar @@session.binlog_format dentro de una transacción"
+ chi "无法在事务中修改@@session.binlog_format"
+ eng "Cannot modify @@session.binlog_format inside a transaction"
+ spa "No puedo modificar @@session.binlog_format dentro de una transacción"
ER_PATH_LENGTH
- eng "The path specified for %.64T is too long"
- hindi "%.64T के लिठनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿ पथ बहà¥à¤¤ लंबा है"
- spa "La ruta especificada para %.64T es demasiado larga"
+ chi "指定%.64T的路径太长了"
+ eng "The path specified for %.64T is too long"
+ hindi "%.64T के लिठनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿ पथ बहà¥à¤¤ लंबा है"
+ spa "La ruta especificada para %.64T es demasiado larga"
ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT
- eng "'%s' is deprecated and will be removed in a future release"
- ger "'%s' ist veraltet und wird in einer zukünftigen Version entfernt werden"
- spa "'%s' está obsoleto y será quitada en una entrega futura"
-
+ chi "'%s'被弃用,将在将æ¥çš„版本中删除"
+ eng "'%s' is deprecated and will be removed in a future release"
+ ger "'%s' ist veraltet und wird in einer zukünftigen Version entfernt werden"
+ spa "'%s' está obsoleto y será quitada en una entrega futura"
ER_WRONG_NATIVE_TABLE_STRUCTURE
+ chi "本机表'%-.64s'。'%-.64s'具有错误的结构"
eng "Native table '%-.64s'.'%-.64s' has the wrong structure"
spa "La tabla nativa '%-.64s'.'%-.64s' tiene una estructura equivocada"
-
ER_WRONG_PERFSCHEMA_USAGE
+ chi "performance_schema使用无效"
eng "Invalid performance_schema usage"
hindi "performance_schema का अवैध उपयोग"
spa "Uso inválido de performance_schema"
ER_WARN_I_S_SKIPPED_TABLE
- eng "Table '%s'.'%s' was skipped since its definition is being modified by concurrent DDL statement"
- spa "La tabla '%s'.'%s' fue saltada ya que su definición está siendo modificada por la sentencia DDL concurrente"
-
+ chi "表'%s'.'%s'由于并å‘DDL语å¥æ­£åœ¨ä¿®æ”¹å…¶å®šä¹‰ï¼Œå› æ­¤è·³è¿‡"
+ eng "Table '%s'.'%s' was skipped since its definition is being modified by concurrent DDL statement"
+ spa "La tabla '%s'.'%s' fue saltada ya que su definición está siendo modificada por la sentencia DDL concurrente"
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT
- eng "Cannot modify @@session.binlog_direct_non_transactional_updates inside a transaction"
- spa "No puedo modificar @@session.binlog_direct_non_transactional_updates dentro de una transacción"
+ chi "无法在交易事务中修改@@session.binlog_direct_non_transactional_updates"
+ eng "Cannot modify @@session.binlog_direct_non_transactional_updates inside a transaction"
+ spa "No puedo modificar @@session.binlog_direct_non_transactional_updates dentro de una transacción"
ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT
- eng "Cannot change the binlog direct flag inside a stored function or trigger"
- spa "No puedo cambiar la bandera directa de binlog dentro de una función almacenada o de un disparador"
+ chi "无法在存储的函数或触å‘器内更改Binlog Direct标志"
+ eng "Cannot change the binlog direct flag inside a stored function or trigger"
+ spa "No puedo cambiar la bandera directa de binlog dentro de una función almacenada o de un disparador"
ER_SPATIAL_MUST_HAVE_GEOM_COL 42000
- eng "A SPATIAL index may only contain a geometrical type column"
- ger "Ein raumbezogener Index (SPATIAL) darf nur Spalten geometrischen Typs enthalten"
- spa "Un índice SPATIAL sólo puede contener una columna de tipo geométrico"
+ chi "空间索引å¯ä»¥ä»…包å«å‡ ä½•ç±»åž‹åˆ—"
+ eng "A SPATIAL index may only contain a geometrical type column"
+ ger "Ein raumbezogener Index (SPATIAL) darf nur Spalten geometrischen Typs enthalten"
+ spa "Un índice SPATIAL sólo puede contener una columna de tipo geométrico"
ER_TOO_LONG_INDEX_COMMENT
- eng "Comment for index '%-.64s' is too long (max = %lu)"
- spa "El comentario para el índice '%-.64s' es demasiado largo (máx = %lu)"
-
+ chi "索引评论'%-.64s'太长(max =%lu)"
+ eng "Comment for index '%-.64s' is too long (max = %lu)"
+ spa "El comentario para el índice '%-.64s' es demasiado largo (máx = %lu)"
ER_LOCK_ABORTED
- eng "Wait on a lock was aborted due to a pending exclusive lock"
- spa "Se ha abortado la espera por un bloqueo debido a bloqueo exclusivo pendiente"
-
+ chi "由于待处ç†çš„独家é”,等待é”被中止"
+ eng "Wait on a lock was aborted due to a pending exclusive lock"
+ spa "Se ha abortado la espera por un bloqueo debido a bloqueo exclusivo pendiente"
ER_DATA_OUT_OF_RANGE 22003
- eng "%s value is out of range in '%s'"
- spa "%s valor se encuentra fuera de rango '%s'"
-
+ chi "%s值超出'%s'范围"
+ eng "%s value is out of range in '%s'"
+ spa "%s valor se encuentra fuera de rango '%s'"
ER_WRONG_SPVAR_TYPE_IN_LIMIT
- eng "A variable of a non-integer based type in LIMIT clause"
- spa "Una variable de tipo basado en no entero en cláusula LIMIT"
-
+ chi "基于éžæ•´æ•°ç±»åž‹çš„基于LIMITå­å¥çš„å˜é‡"
+ eng "A variable of a non-integer based type in LIMIT clause"
+ spa "Una variable de tipo basado en no entero en cláusula LIMIT"
ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE
- eng "Mixing self-logging and non-self-logging engines in a statement is unsafe"
- spa "No es segura la mezcla de motores de auto-historial (log) y de no auto-historial en una sentencia"
-
+ chi "æ··åˆå£°æ˜Žä¸­çš„自记录和éžè‡ªåŠ¨è®°å½•å¼•æ“Žæ˜¯ä¸å®‰å…¨çš„"
+ eng "Mixing self-logging and non-self-logging engines in a statement is unsafe"
+ spa "No es segura la mezcla de motores de auto-historial (log) y de no auto-historial en una sentencia"
ER_BINLOG_UNSAFE_MIXED_STATEMENT
- eng "Statement accesses nontransactional table as well as transactional or temporary table, and writes to any of them"
- spa "La sentencia accede a tabla no transaccional así como transaccional o tabla temporal y graba en cualquiera de ellas"
-
+ chi "语å¥è®¿é—®éžè‡´çªå˜è¡¨ä»¥åŠäº‹åŠ¡æ€§æˆ–临时表,并写入其中任何一个"
+ eng "Statement accesses nontransactional table as well as transactional or temporary table, and writes to any of them"
+ spa "La sentencia accede a tabla no transaccional así como transaccional o tabla temporal y graba en cualquiera de ellas"
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN
- eng "Cannot modify @@session.sql_log_bin inside a transaction"
- spa "No puedo modificar @@session.sql_log_bin dentro de una transacción"
-
+ chi "无法修改事务中的@@sessient.sql_log_bin"
+ eng "Cannot modify @@session.sql_log_bin inside a transaction"
+ spa "No puedo modificar @@session.sql_log_bin dentro de una transacción"
ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN
- eng "Cannot change the sql_log_bin inside a stored function or trigger"
- spa "No puedo cambiar sql_log_bin dentro de una función almacenada o disparador"
-
+ chi "无法在存储的函数或触å‘器内更改SQL_LOG_BIN"
+ eng "Cannot change the sql_log_bin inside a stored function or trigger"
+ spa "No puedo cambiar sql_log_bin dentro de una función almacenada o disparador"
ER_FAILED_READ_FROM_PAR_FILE
- eng "Failed to read from the .par file"
- hindi ".par फ़ाइल से पढ़ने में असफल रहे"
- spa "No pude leer desde fichero/archivo .par"
- swe "Misslyckades läsa från .par filen"
-
+ chi "无法从.par文件中读å–"
+ eng "Failed to read from the .par file"
+ hindi ".par फ़ाइल से पढ़ने में असफल रहे"
+ spa "No pude leer desde fichero/archivo .par"
+ swe "Misslyckades läsa från .par filen"
ER_VALUES_IS_NOT_INT_TYPE_ERROR
- eng "VALUES value for partition '%-.64s' must have type INT"
- spa "El valor VALUES para la partición '%-.64s' debe de tener el tipo INT"
- swe "Värden i VALUES för partition '%-.64s' måste ha typen INT"
-
+ chi "分区的值'%-.64s'必须具有类型INT"
+ eng "VALUES value for partition '%-.64s' must have type INT"
+ spa "El valor VALUES para la partición '%-.64s' debe de tener el tipo INT"
+ swe "Värden i VALUES för partition '%-.64s' måste ha typen INT"
ER_ACCESS_DENIED_NO_PASSWORD_ERROR 28000
+ chi "æ‹’ç»ç”¨æˆ·'%s'@'%s'"
cze "Přístup pro uživatele '%s'@'%s'"
dan "Adgang nægtet bruger: '%s'@'%s'"
- nla "Toegang geweigerd voor gebruiker: '%s'@'%s'"
eng "Access denied for user '%s'@'%s'"
est "Ligipääs keelatud kasutajale '%s'@'%s'"
fre "Accès refusé pour l'utilisateur: '%s'@'%s'"
@@ -6960,6 +7631,7 @@ ER_ACCESS_DENIED_NO_PASSWORD_ERROR 28000
hun "A(z) '%s'@'%s' felhasznalo szamara tiltott eleres"
ita "Accesso non consentito per l'utente: '%s'@'%s'"
kor "'%s'@'%s' 사용ìžëŠ” ì ‘ê·¼ì´ ê±°ë¶€ ë˜ì—ˆìŠµë‹ˆë‹¤."
+ nla "Toegang geweigerd voor gebruiker: '%s'@'%s'"
nor "Tilgang nektet for bruker: '%s'@'%s'"
norwegian-ny "Tilgang ikke tillate for brukar: '%s'@'%s'"
por "Acesso negado para o usuário '%s'@'%s'"
@@ -6972,1056 +7644,1311 @@ ER_ACCESS_DENIED_NO_PASSWORD_ERROR 28000
ukr "ДоÑтуп заборонено Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача: '%s'@'%s'"
ER_SET_PASSWORD_AUTH_PLUGIN
+ chi "通过%sæ’件验è¯çš„用户忽略SET PASSWORD"
eng "SET PASSWORD is ignored for users authenticating via %s plugin"
spa "SET PASSWORD no tiene significado para usuarios que se autentican vía enchufe (plugin) %s"
ER_GRANT_PLUGIN_USER_EXISTS
+ chi "由于用户%-.*så·²ç»å­˜åœ¨ï¼ŒGRANT IDENTIFIED WITH授æƒæ˜¯éžæ³•çš„"
eng "GRANT with IDENTIFIED WITH is illegal because the user %-.*s already exists"
spa "GRANT con IDENTIFIED WITH es ilegal porque el usuario %-.*s ya existe"
ER_TRUNCATE_ILLEGAL_FK 42000
- eng "Cannot truncate a table referenced in a foreign key constraint (%.192s)"
- spa "No puedo truncar una tabla referenciada en una restricción de clave foránea (%.192s)"
+ chi "无法截断外键约æŸä¸­å¼•ç”¨çš„表(%.192s)"
+ eng "Cannot truncate a table referenced in a foreign key constraint (%.192s)"
+ spa "No puedo truncar una tabla referenciada en una restricción de clave foránea (%.192s)"
ER_PLUGIN_IS_PERMANENT
- eng "Plugin '%s' is force_plus_permanent and can not be unloaded"
- spa "El enchufe (plugin) '%s' está force_plus_permanent y no puede ser descargado"
+ chi "æ’件'%s'是force_plus_permanent,无法å¸è½½"
+ eng "Plugin '%s' is force_plus_permanent and can not be unloaded"
+ spa "El enchufe (plugin) '%s' está force_plus_permanent y no puede ser descargado"
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN
- eng "The requested value for the heartbeat period is less than 1 millisecond. The value is reset to 0, meaning that heartbeating will effectively be disabled"
- spa "El valor de requerimiento para el período de latido es menor de 1 milisegundo. El valor se vuelve a poner a 0, indicando que el latido será efectivamente desactivado"
+ chi "心跳期的è¦æ±‚值å°äºŽ1毫秒。该值é‡ç½®ä¸º0,这æ„味ç€å¿ƒè·³å°†æœ‰æ•ˆåœ°ç¦ç”¨"
+ eng "The requested value for the heartbeat period is less than 1 millisecond. The value is reset to 0, meaning that heartbeating will effectively be disabled"
+ spa "El valor de requerimiento para el período de latido es menor de 1 milisegundo. El valor se vuelve a poner a 0, indicando que el latido será efectivamente desactivado"
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX
- eng "The requested value for the heartbeat period exceeds the value of `slave_net_timeout' seconds. A sensible value for the period should be less than the timeout"
- spa "El valor de requerimiento para el período de latido excede el valor de `slave_net_timeout` segundos. Un valor sensible para el período debería de ser menor que el 'tiempo agotado'"
+ chi "心跳期的请求值超出了“slave_net_timeoutâ€ç§’的值。该期间的明智价值应å°äºŽè¶…æ—¶"
+ eng "The requested value for the heartbeat period exceeds the value of `slave_net_timeout' seconds. A sensible value for the period should be less than the timeout"
+ spa "El valor de requerimiento para el período de latido excede el valor de `slave_net_timeout` segundos. Un valor sensible para el período debería de ser menor que el 'tiempo agotado'"
ER_STMT_CACHE_FULL
+ chi "需è¦å¤šè¡Œè¯­å¥è¶…过“max_binlog_stmt_cache_sizeâ€å­—节的存储;增加这个mariadbdå˜é‡ï¼Œç„¶åŽé‡è¯•"
eng "Multi-row statements required more than 'max_binlog_stmt_cache_size' bytes of storage."
spa "Las sentencias Multi-fila requieren de más de 'max_binlog_stmt_cache_size' bytes para almacenaje."
ER_MULTI_UPDATE_KEY_CONFLICT
- eng "Primary key/partition key update is not allowed since the table is updated both as '%-.192s' and '%-.192s'"
- spa "La actualización de clave primaria de o de partición no está permitida por estar la tabla actualizada como '%-.192s' y '%-.192s'"
-
+ chi "由于表格被更新为'%-.192s'å’Œ'%-.192s',因此ä¸å…许å…许主键/分区索引更新。"
+ eng "Primary key/partition key update is not allowed since the table is updated both as '%-.192s' and '%-.192s'"
+ spa "La actualización de clave primaria de o de partición no está permitida por estar la tabla actualizada como '%-.192s' y '%-.192s'"
# When translating this error message make sure to include "ALTER TABLE" in the
# message as mariadb-check parses the error message looking for ALTER TABLE.
ER_TABLE_NEEDS_REBUILD
+ chi "表需é‡å»ºã€‚请åšALTER TABLE %`s FORCEâ€æˆ–转储/é‡æ–°åŠ è½½ä»¥ä¿®å¤å®ƒï¼"
eng "Table rebuild required. Please do \"ALTER TABLE %`s FORCE\" or dump/reload to fix it!"
spa "Se requiere reconstrucción de la tabla. Por favor, ¡haga un \"ALTER TABLE %`s FORCE\" o volcado/recarga para solucionarlo!"
WARN_OPTION_BELOW_LIMIT
- eng "The value of '%s' should be no less than the value of '%s'"
- spa "El valor de '%s' debería de ser no menor que el valor de '%s'"
+ chi "'%s'的值应该ä¸å°äºŽ'%s'的值"
+ eng "The value of '%s' should be no less than the value of '%s'"
+ spa "El valor de '%s' debería de ser no menor que el valor de '%s'"
ER_INDEX_COLUMN_TOO_LONG
- eng "Index column size too large. The maximum column size is %lu bytes"
- spa "El tamaño de índice de columna es demasiado grande. El tamaño máximo de columna es de %lu bytes"
+ chi "索引列太大。最大列大å°ä¸º%lu字节"
+ eng "Index column size too large. The maximum column size is %lu bytes"
+ spa "El tamaño de índice de columna es demasiado grande. El tamaño máximo de columna es de %lu bytes"
ER_ERROR_IN_TRIGGER_BODY
- eng "Trigger '%-.64s' has an error in its body: '%-.256s'"
- spa "El disparador '%-.64s' tiene una error en su cuerpo: '%-.256s'"
+ chi "触å‘器'%-.64s'内存在错误:'%-.256s'"
+ eng "Trigger '%-.64s' has an error in its body: '%-.256s'"
+ spa "El disparador '%-.64s' tiene una error en su cuerpo: '%-.256s'"
ER_ERROR_IN_UNKNOWN_TRIGGER_BODY
- eng "Unknown trigger has an error in its body: '%-.256s'"
- spa "El disparador desconocido tiene un error en su cuerpo: '%-.256s'"
+ chi "未知触å‘器内存在错误:'%-.256s'"
+ eng "Unknown trigger has an error in its body: '%-.256s'"
+ spa "El disparador desconocido tiene un error en su cuerpo: '%-.256s'"
ER_INDEX_CORRUPT
- eng "Index %s is corrupted"
- spa "El índice %s está estropeado"
+ chi "索引%så·²æŸå"
+ eng "Index %s is corrupted"
+ spa "El índice %s está estropeado"
ER_UNDO_RECORD_TOO_BIG
- eng "Undo log record is too big"
- spa "El registro de historial (log) para deshacer es demasiado grande"
+ chi "撤消日志记录太大"
+ eng "Undo log record is too big"
+ spa "El registro de historial (log) para deshacer es demasiado grande"
ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT
- eng "INSERT IGNORE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave"
- spa "INSERT IGNORE... SELECT es no seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son ignoradas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ chi "INSERT IGNORE...SELECTä¸å®‰å…¨ï¼Œå› ä¸ºé€‰æ‹©ç”±select检索行的顺åºç¡®å®šå“ªä¸ªï¼ˆå¦‚果有)行被忽略。无法预测此顺åºï¼Œå¹¶ä¸”在masterå’Œslaveæ–¹é¢å¯èƒ½æœ‰æ‰€ä¸åŒ"
+ eng "INSERT IGNORE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave"
+ spa "INSERT IGNORE... SELECT es no seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son ignoradas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE
- eng "INSERT... SELECT... ON DUPLICATE KEY UPDATE is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are updated. This order cannot be predicted and may differ on master and the slave"
- spa "INSERT... SELECT... ON DUPLICATE KEY UPDATE no es seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son actualizadas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ chi "INSERT... SELECT... ON DUPLICATE KEY UPDATE是ä¸å®‰å…¨çš„,因为SELECT检索行的顺åºç¡®å®šå“ªä¸ªï¼ˆå¦‚果有的è¯ï¼‰æ˜¯æ›´æ–°çš„。无法预测此顺åºï¼Œå¹¶ä¸”在masterå’Œslaveæ–¹é¢å¯èƒ½æœ‰æ‰€ä¸åŒ"
+ eng "INSERT... SELECT... ON DUPLICATE KEY UPDATE is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are updated. This order cannot be predicted and may differ on master and the slave"
+ spa "INSERT... SELECT... ON DUPLICATE KEY UPDATE no es seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son actualizadas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
ER_BINLOG_UNSAFE_REPLACE_SELECT
- eng "REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave"
- spa "REPLACE... SELECT no es seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son sustituidas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ chi "REPLACE... SELECT ä¸å®‰å…¨ï¼Œå› ä¸ºé€‰æ‹©ç”±select检索行的顺åºç¡®å®šå“ªä¸ªï¼ˆå¦‚果有)行被替æ¢ã€‚无法预测此顺åºï¼Œå¹¶ä¸”在masterå’Œslaveæ–¹é¢å¯èƒ½æœ‰æ‰€ä¸åŒ"
+ eng "REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave"
+ spa "REPLACE... SELECT no es seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son sustituidas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT
- eng "CREATE... IGNORE SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave"
- spa "CREATE... IGNORE SELECT no es seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son ignoradas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ chi "CREATE... IGNORE SELECT是ä¸å®‰å…¨ï¼Œå› ä¸ºé€‰æ‹©ç”±SELECT检索行的顺åºç¡®å®šå“ªä¸ªï¼ˆå¦‚果有)行被忽略。无法预测此顺åºï¼Œå¹¶ä¸”在masterå’Œslaveæ–¹é¢å¯èƒ½æœ‰æ‰€ä¸åŒ"
+ eng "CREATE... IGNORE SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave"
+ spa "CREATE... IGNORE SELECT no es seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son ignoradas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT
- eng "CREATE... REPLACE SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave"
- spa "CREATE... REPLACE SELECT no es seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son sustituidas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ chi "CREATE... REPLACE SELECTä¸å®‰å…¨ï¼Œå› ä¸ºé€‰æ‹©ç”±SELECT检索行的顺åºç¡®å®šå“ªä¸ªï¼ˆå¦‚果有)是替æ¢å“ªä¸ªï¼ˆå¦‚果有的è¯ï¼‰ã€‚无法预测此顺åºï¼Œå¹¶ä¸”在masterå’Œslaveæ–¹é¢å¯èƒ½æœ‰æ‰€ä¸åŒ"
+ eng "CREATE... REPLACE SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave"
+ spa "CREATE... REPLACE SELECT no es seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son sustituidas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
ER_BINLOG_UNSAFE_UPDATE_IGNORE
- eng "UPDATE IGNORE is unsafe because the order in which rows are updated determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave"
- spa "UPDATE IGNORE no es seguro porque el orden en el que las filas son actualizadas determina qué filas (si hay alguna) son ignoradas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ chi "UPDATE IGNOREä¸å®‰å…¨ï¼Œå› ä¸ºæ›´æ–°è¡Œçš„顺åºç¡®å®šäº†å“ªä¸ªï¼ˆå¦‚果有)行被忽略。无法预测此顺åºï¼Œå¹¶ä¸”在masterå’Œslaveæ–¹é¢å¯èƒ½æœ‰æ‰€ä¸åŒ"
+ eng "UPDATE IGNORE is unsafe because the order in which rows are updated determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave"
+ spa "UPDATE IGNORE no es seguro porque el orden en el que las filas son actualizadas determina qué filas (si hay alguna) son ignoradas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
ER_UNUSED_15
- eng "You should never see it"
- spa "Nunca debería vd de ver esto"
+ chi "你永远ä¸åº”该看到它"
+ eng "You should never see it"
+ spa "Nunca debería vd de ver esto"
ER_UNUSED_16
- eng "You should never see it"
- spa "Nunca debería vd de ver esto"
+ chi "你永远ä¸åº”该看到它"
+ eng "You should never see it"
+ spa "Nunca debería vd de ver esto"
ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT
- eng "Statements writing to a table with an auto-increment column after selecting from another table are unsafe because the order in which rows are retrieved determines what (if any) rows will be written. This order cannot be predicted and may differ on master and the slave"
- spa "Las sentencias que graban en una tabla con columna de auto-incremento tras seleccionar desde otra tabla no son seguras porque el orden en el que las filas son recuperadas determina qué filas (si hay alguna) serán grabadas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ chi "从å¦ä¸€ä¸ªè¡¨é€‰æ‹©åŽï¼Œä½¿ç”¨è‡ªåŠ¨å¢žé‡åˆ—的表格写入的语å¥æ˜¯ä¸å®‰å…¨çš„,因为检索行的顺åºç¡®å®šå°†å†™å…¥å“ªäº›ï¼ˆå¦‚果有)行。无法预测此顺åºï¼Œå¹¶ä¸”在主站和slaveæ–¹é¢å¯èƒ½æœ‰æ‰€ä¸åŒ"
+ eng "Statements writing to a table with an auto-increment column after selecting from another table are unsafe because the order in which rows are retrieved determines what (if any) rows will be written. This order cannot be predicted and may differ on master and the slave"
+ spa "Las sentencias que graban en una tabla con columna de auto-incremento tras seleccionar desde otra tabla no son seguras porque el orden en el que las filas son recuperadas determina qué filas (si hay alguna) serán grabadas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC
- eng "CREATE TABLE... SELECT... on a table with an auto-increment column is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are inserted. This order cannot be predicted and may differ on master and the slave"
- spa "CREATE TABKE... SELECT... en una tabla con columna de auto-incremento no es segura porque el orden en el que las filas son recuperadas por el SELECT determina qué filas (si hay alguna) serán insertadas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ chi "创建表...在具有自动增é‡åˆ—的表上选择...ä¸å®‰å…¨ï¼Œå› ä¸ºé€‰æ‹©çš„顺åºæ˜¯ç”±select检索行的顺åºï¼Œç¡®å®šæ’入哪个(如果有)行。无法预测此订å•ï¼Œå¹¶ä¸”在主站和slaveæ–¹é¢å¯èƒ½æœ‰æ‰€ä¸åŒ"
+ eng "CREATE TABLE... SELECT... on a table with an auto-increment column is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are inserted. This order cannot be predicted and may differ on master and the slave"
+ spa "CREATE TABLE... SELECT... en una tabla con columna de auto-incremento no es segura porque el orden en el que las filas son recuperadas por el SELECT determina qué filas (si hay alguna) serán insertadas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
ER_BINLOG_UNSAFE_INSERT_TWO_KEYS
- eng "INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe"
- spa "INSERT... ON DUPLICATE KEY UPDATE en una tabla con más de una UNIQUE KEY no es segura"
+ chi "在具有多个唯一键的表上INSERT... ON DUPLICATE KEY UPDATEçš„é‡å¤ç´¢å¼•æ›´æ–°æ˜¯ä¸å®‰å…¨çš„"
+ eng "INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe"
+ spa "INSERT... ON DUPLICATE KEY UPDATE en una tabla con más de una UNIQUE KEY no es segura"
ER_UNUSED_28
- eng "You should never see it"
- spa "Nunca debería vd de ver esto"
+ chi "你永远ä¸åº”该看到它"
+ eng "You should never see it"
+ spa "Nunca debería vd de ver esto"
ER_VERS_NOT_ALLOWED
- eng "Not allowed for system-versioned table %`s.%`s"
+ chi "系统版本的表%`s.%`sä¸å…许"
+ eng "Not allowed for system-versioned table %`s.%`s"
ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST
- eng "INSERT into autoincrement field which is not the first part in the composed primary key is unsafe"
- spa "INSERT dentro de campo con autoincremento que no es la primera parte en la clave primaria compuesta no es seguro"
-
+ chi "æ’å…¥AutoIncrement字段,该字段ä¸æ˜¯ç»„æˆçš„主键中的第一部分是ä¸å®‰å…¨çš„"
+ eng "INSERT into autoincrement field which is not the first part in the composed primary key is unsafe"
+ spa "INSERT dentro de campo con autoincremento que no es la primera parte en la clave primaria compuesta no es seguro"
#
# End of 5.5 error messages.
#
ER_CANNOT_LOAD_FROM_TABLE_V2
- eng "Cannot load from %s.%s. The table is probably corrupted"
- ger "Kann %s.%s nicht einlesen. Tabelle ist wahrscheinlich beschädigt"
- spa "No puedo cargar desde %s.%s. La tabla está probablemente estropeada"
+ chi "ä¸èƒ½ä»ŽåŠ è½½%s.%s。表å¯èƒ½æŸå了"
+ eng "Cannot load from %s.%s. The table is probably corrupted"
+ ger "Kann %s.%s nicht einlesen. Tabelle ist wahrscheinlich beschädigt"
+ spa "No puedo cargar desde %s.%s. La tabla está probablemente estropeada"
ER_MASTER_DELAY_VALUE_OUT_OF_RANGE
- eng "The requested value %lu for the master delay exceeds the maximum %lu"
- spa "El valor requerido %lu para retraso en maestro (master) excede el máximo de %lu"
+ chi "主延迟的所需值%lu超过最大%lu"
+ eng "The requested value %lu for the master delay exceeds the maximum %lu"
+ spa "El valor requerido %lu para retraso en maestro (master) excede el máximo de %lu"
ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT
- eng "Only Format_description_log_event and row events are allowed in BINLOG statements (but %s was provided)"
- spa "Sólo se permiten Format_description_log_event y eventos de fila en sentencias BINLOG (pero %s fue suministrado)"
+ chi "在Binlog语å¥ä¸­åªå…许Format_Description_Log_Event和行事件(但是æ供了%s)"
+ eng "Only Format_description_log_event and row events are allowed in BINLOG statements (but %s was provided)"
+ spa "Sólo se permiten Format_description_log_event y eventos de fila en sentencias BINLOG (pero %s fue suministrado)"
ER_PARTITION_EXCHANGE_DIFFERENT_OPTION
- eng "Non matching attribute '%-.64s' between partition and table"
- spa "Atributo no coincidente '%-.64s' entre la partición y la tabla"
- swe "Attributet '%-.64s' är olika mellan partition och tabell"
+ chi "分区和表之间的éžåŒ¹é…属性'%-.64s'"
+ eng "Non matching attribute '%-.64s' between partition and table"
+ spa "Atributo no coincidente '%-.64s' entre la partición y la tabla"
+ swe "Attributet '%-.64s' är olika mellan partition och tabell"
ER_PARTITION_EXCHANGE_PART_TABLE
- eng "Table to exchange with partition is partitioned: '%-.64s'"
- spa "La tabla para intercambiar con la partición está particionada: '%-.64s'"
- swe "Tabellen att byta ut mot partition är partitionerad: '%-.64s'"
+ chi "用分区交æ¢çš„表是分区:'%-.64s'"
+ eng "Table to exchange with partition is partitioned: '%-.64s'"
+ spa "La tabla para intercambiar con la partición está particionada: '%-.64s'"
+ swe "Tabellen att byta ut mot partition är partitionerad: '%-.64s'"
ER_PARTITION_EXCHANGE_TEMP_TABLE
- eng "Table to exchange with partition is temporary: '%-.64s'"
- spa "La tabla para intercambiar con la partición es temporal: '%-.64s'"
- swe "Tabellen att byta ut mot partition är temporär: '%-.64s'"
+ chi "与分区交æ¢çš„表是临时的:'%-.64s'"
+ eng "Table to exchange with partition is temporary: '%-.64s'"
+ spa "La tabla para intercambiar con la partición es temporal: '%-.64s'"
+ swe "Tabellen att byta ut mot partition är temporär: '%-.64s'"
ER_PARTITION_INSTEAD_OF_SUBPARTITION
- eng "Subpartitioned table, use subpartition instead of partition"
- spa "La tabla subparticionada utiliza subpartición en lugar de partición"
- swe "Subpartitionerad tabell, använd subpartition istället för partition"
+ chi "å­åˆ†åŒºè¡¨ï¼Œä½¿ç”¨å­åˆ†åŒºä»£æ›¿åˆ†åŒº"
+ eng "Subpartitioned table, use subpartition instead of partition"
+ spa "La tabla subparticionada utiliza subpartición en lugar de partición"
+ swe "Subpartitionerad tabell, använd subpartition istället för partition"
ER_UNKNOWN_PARTITION
- eng "Unknown partition '%-.64s' in table '%-.64s'"
- spa "Partición desconocida '%-.64s' en la tabla '%-.64s'"
- swe "Okänd partition '%-.64s' i tabell '%-.64s'"
+ chi "未知分区'%-.64s'在表'%-.64s'"
+ eng "Unknown partition '%-.64s' in table '%-.64s'"
+ spa "Partición desconocida '%-.64s' en la tabla '%-.64s'"
+ swe "Okänd partition '%-.64s' i tabell '%-.64s'"
ER_TABLES_DIFFERENT_METADATA
- eng "Tables have different definitions"
- spa "Las tablas tienen diferentes definiciones"
- swe "Tabellerna har olika definitioner"
+ chi "表有ä¸åŒçš„定义"
+ eng "Tables have different definitions"
+ spa "Las tablas tienen diferentes definiciones"
+ swe "Tabellerna har olika definitioner"
ER_ROW_DOES_NOT_MATCH_PARTITION
- eng "Found a row that does not match the partition"
- spa "Hallada una fila que no coincide con la partición"
- swe "Hittade en rad som inte passar i partitionen"
+ chi "找到了与分区ä¸åŒ¹é…çš„è¡Œ"
+ eng "Found a row that does not match the partition"
+ spa "Hallada una fila que no coincide con la partición"
+ swe "Hittade en rad som inte passar i partitionen"
ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX
- eng "Option binlog_cache_size (%lu) is greater than max_binlog_cache_size (%lu); setting binlog_cache_size equal to max_binlog_cache_size"
- spa "La opción binlog_cache_size (%lu) es mayor que max_binlog_cache_size (%lu); configurando binlog_cache_size igual a max_binlog_cache_size"
+ chi "选项binlog_cache_size(%lu)大于max_binlog_cache_size(%lu);设置binlog_cache_size等于max_binlog_cache_size"
+ eng "Option binlog_cache_size (%lu) is greater than max_binlog_cache_size (%lu); setting binlog_cache_size equal to max_binlog_cache_size"
+ spa "La opción binlog_cache_size (%lu) es mayor que max_binlog_cache_size (%lu); configurando binlog_cache_size igual a max_binlog_cache_size"
ER_WARN_INDEX_NOT_APPLICABLE
- eng "Cannot use %-.64s access on index '%-.64s' due to type or collation conversion on field '%-.64s'"
- spa "No puedo usar acceso %-.64s en índice '%-.64s' debido al tipo o conversión de cotejo en campo '%-.64s'"
+ chi "ä¸èƒ½ä½¿ç”¨%-.64s在索引'%-.64s'上的访问,由于字段'%-.64sâ€çš„类型或排åºè§„则转æ¢"
+ eng "Cannot use %-.64s access on index '%-.64s' due to type or collation conversion on field '%-.64s'"
+ spa "No puedo usar acceso %-.64s en índice '%-.64s' debido al tipo o conversión de cotejo en campo '%-.64s'"
ER_PARTITION_EXCHANGE_FOREIGN_KEY
- eng "Table to exchange with partition has foreign key references: '%-.64s'"
- spa "La tabla para intercambiar con la partición tiene referencias a clave foránea: '%-.64s'"
- swe "Tabellen att byta ut mot partition har foreign key referenser: '%-.64s'"
+ chi "与分区交æ¢çš„表具有外键å‚考:'%-.64s'"
+ eng "Table to exchange with partition has foreign key references: '%-.64s'"
+ spa "La tabla para intercambiar con la partición tiene referencias a clave foránea: '%-.64s'"
+ swe "Tabellen att byta ut mot partition har foreign key referenser: '%-.64s'"
ER_NO_SUCH_KEY_VALUE
- eng "Key value '%-.192s' was not found in table '%-.192s.%-.192s'"
- spa "Valor de clave '%-.192s' no hallado en la tabla '%-.192s.%-.192s'"
+ chi "键值'%-.192s'在表'%-.192s%-.192s'ä¸å­˜åœ¨"
+ eng "Key value '%-.192s' was not found in table '%-.192s.%-.192s'"
+ spa "Valor de clave '%-.192s' no hallado en la tabla '%-.192s.%-.192s'"
ER_VALUE_TOO_LONG
- eng "Too long value for '%s'"
- spa "Valor demasiado largo para '%s'"
+ chi "'%s'的价值太长了"
+ eng "Too long value for '%s'"
+ spa "Valor demasiado largo para '%s'"
ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE
- eng "Replication event checksum verification failed while reading from network"
- spa "Ha fallado la verificación de la suma de revisión de evento de réplica mientras se leía desde la red"
+ chi "从网络读å–时,å¤åˆ¶äº‹ä»¶æ ¡éªŒå’ŒéªŒè¯å¤±è´¥"
+ eng "Replication event checksum verification failed while reading from network"
+ spa "Ha fallado la verificación de la suma de revisión de evento de réplica mientras se leía desde la red"
ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE
- eng "Replication event checksum verification failed while reading from a log file"
- spa "Ha fallado la verificación de la suma de revisión de evento de réplica mientras se leía desde fichero/archivo de historial (log)"
+ chi "从日志文件读å–æ—¶å¤åˆ¶äº‹ä»¶æ ¡éªŒå’ŒéªŒè¯å¤±è´¥"
+ eng "Replication event checksum verification failed while reading from a log file"
+ spa "Ha fallado la verificación de la suma de revisión de evento de réplica mientras se leía desde fichero/archivo de historial (log)"
ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX
- eng "Option binlog_stmt_cache_size (%lu) is greater than max_binlog_stmt_cache_size (%lu); setting binlog_stmt_cache_size equal to max_binlog_stmt_cache_size"
- spa "La opción binlog_stmt_cache_size (%lu) es mayor que max_binlog_stmt_cache_size (%lu); configurando binlog_stmt_cache_size igual a max_binlog_stmt_cache_size"
+ chi "选项binlog_stmt_cache_size(%lu)大于max_binlog_stmt_cache_size(%lu);设置binlog_stmt_cache_size等于max_binlog_stmt_cache_size"
+ eng "Option binlog_stmt_cache_size (%lu) is greater than max_binlog_stmt_cache_size (%lu); setting binlog_stmt_cache_size equal to max_binlog_stmt_cache_size"
+ spa "La opción binlog_stmt_cache_size (%lu) es mayor que max_binlog_stmt_cache_size (%lu); configurando binlog_stmt_cache_size igual a max_binlog_stmt_cache_size"
ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT
- eng "Can't update table '%-.192s' while '%-.192s' is being created"
- spa "No puedo actualizar tabla '%-.192s' mientras '%-.192s' está siendo creada"
+ chi "无法更新表'%-.192s'正在创建'%-.192s'"
+ eng "Can't update table '%-.192s' while '%-.192s' is being created"
+ spa "No puedo actualizar tabla '%-.192s' mientras '%-.192s' está siendo creada"
ER_PARTITION_CLAUSE_ON_NONPARTITIONED
- eng "PARTITION () clause on non partitioned table"
- spa "Cláusula PARTITION () en tabla no particionada"
- swe "PARTITION () klausul för en icke partitionerad tabell"
+ chi "éžåˆ†åŒºè¡¨ä¸Šçš„PARTITION()å­å¥"
+ eng "PARTITION () clause on non partitioned table"
+ spa "Cláusula PARTITION () en tabla no particionada"
+ swe "PARTITION () klausul för en icke partitionerad tabell"
ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET
- eng "Found a row not matching the given partition set"
- spa "Hallada una fila que no coincide con el conjunto dado de partición"
- swe "Hittade en rad som inte passar i någon given partition"
+ chi "å‘现ä¸åŒ¹é…给定分区集的行"
+ eng "Found a row not matching the given partition set"
+ spa "Hallada una fila que no coincide con el conjunto dado de partición"
+ swe "Hittade en rad som inte passar i någon given partition"
ER_UNUSED_5
- eng "You should never see it"
- spa "Nunca debería vd de ver esto"
+ chi "你永远ä¸åº”该看到它"
+ eng "You should never see it"
+ spa "Nunca debería vd de ver esto"
ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE
- eng "Failure while changing the type of replication repository: %s"
- spa "Fallo mientras cambiaba el tipo de repositorio de réplica: %s"
+ chi "更改Replication存储库类型时失败:%s"
+ eng "Failure while changing the type of replication repository: %s"
+ spa "Fallo mientras cambiaba el tipo de repositorio de réplica: %s"
ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE
- eng "The creation of some temporary tables could not be rolled back"
- spa "La creación de algunas tablas temporales no se pudo retroceder (rolled back)"
+ chi "无法回滚一些临时表的创建"
+ eng "The creation of some temporary tables could not be rolled back"
+ spa "La creación de algunas tablas temporales no se pudo retroceder (ROLLBACK)"
ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE
- eng "Some temporary tables were dropped, but these operations could not be rolled back"
- spa "Algunas tablas temporales fueron eliminadas, pero estas operaciones no se pudieron retroceder (rolled back)"
+ chi "一些临时表被删除,但这些æ“作无法回滚"
+ eng "Some temporary tables were dropped, but these operations could not be rolled back"
+ spa "Algunas tablas temporales fueron eliminadas, pero estas operaciones no se pudieron retroceder (ROLLBACK)"
ER_MTS_FEATURE_IS_NOT_SUPPORTED
- eng "%s is not supported in multi-threaded slave mode. %s"
- spa "%s no se soporta en modo esclavo multi-hilo (thread). %s"
+ chi "%sä¸æ”¯æŒå¤šçº¿ç¨‹ä»Žæ¨¡å¼ã€‚%s."
+ eng "%s is not supported in multi-threaded slave mode. %s"
+ spa "%s no se soporta en modo esclavo multi-hilo (thread). %s"
ER_MTS_UPDATED_DBS_GREATER_MAX
- eng "The number of modified databases exceeds the maximum %d; the database names will not be included in the replication event metadata"
- spa "El núermo de bases de datos modificadas excede el máximo de %d; los nombres de base de datos no serán incluidos en los metadatos de eventos de réplica"
+ chi "修改的数æ®åº“çš„æ•°é‡è¶…过了最大%d;æ•°æ®åº“å称ä¸ä¼šåŒ…å«åœ¨Replication事件元数æ®ä¸­"
+ eng "The number of modified databases exceeds the maximum %d; the database names will not be included in the replication event metadata"
+ spa "El núermo de bases de datos modificadas excede el máximo de %d; los nombres de base de datos no serán incluidos en los metadatos de eventos de réplica"
ER_MTS_CANT_PARALLEL
- eng "Cannot execute the current event group in the parallel mode. Encountered event %s, relay-log name %s, position %s which prevents execution of this event group in parallel mode. Reason: %s"
- spa "No puedo ejecutar el grupo de eventos actual en modo paralelo. Encontrado evento %s, nombre de historial (log) de reenvío %s, posición %s que previene la ejecución de este grupo de eventos en modo paralelo. Motivo: %s"
+ chi "无法以并行模å¼æ‰§è¡Œå½“å‰äº‹ä»¶ç»„。é‡åˆ°äº‹ä»¶%s,中继日志å称%s,position%s,它防止并行模å¼æ‰§è¡Œæ­¤äº‹ä»¶ç»„。原因:%s"
+ eng "Cannot execute the current event group in the parallel mode. Encountered event %s, relay-log name %s, position %s which prevents execution of this event group in parallel mode. Reason: %s"
+ spa "No puedo ejecutar el grupo de eventos actual en modo paralelo. Encontrado evento %s, nombre de historial (log) de reenvío %s, posición %s que previene la ejecución de este grupo de eventos en modo paralelo. Motivo: %s"
ER_MTS_INCONSISTENT_DATA
- eng "%s"
+ eng "%s"
ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING
- eng "FULLTEXT index is not supported for partitioned tables"
- spa "El índice FULLTEXT no está soportado para tablas particionadas"
- swe "FULLTEXT index stöds ej för partitionerade tabeller"
+ chi "分区表ä¸æ”¯æŒFullText索引"
+ eng "FULLTEXT index is not supported for partitioned tables"
+ spa "El índice FULLTEXT no está soportado para tablas particionadas"
+ swe "FULLTEXT index stöds ej för partitionerade tabeller"
ER_DA_INVALID_CONDITION_NUMBER 35000
- eng "Invalid condition number"
- por "Número de condição inválido"
- spa "Número inválido de condición"
+ chi "无效æ¡ä»¶å·"
+ eng "Invalid condition number"
+ por "Número de condição inválido"
+ spa "Número inválido de condición"
ER_INSECURE_PLAIN_TEXT
- eng "Sending passwords in plain text without SSL/TLS is extremely insecure"
- spa "Enviar contraseñas en texto plano sin SSL/TLS es extremadamente inseguro"
+ chi "在没有SSL/TLS的纯文本中å‘é€å¯†ç éžå¸¸ä¸å®‰å…¨"
+ eng "Sending passwords in plain text without SSL/TLS is extremely insecure"
+ spa "Enviar contraseñas en texto plano sin SSL/TLS es extremadamente inseguro"
ER_INSECURE_CHANGE_MASTER
- eng "Storing MariaDB user name or password information in the master.info repository is not secure and is therefore not recommended. Please see the MariaDB Manual for more about this issue and possible alternatives"
- spa "Almacenar nombre de usuario de MariaDB o información de contraseña en el repositorio master.info no es seguro y por ello no se recomienda. Por favor, mira el manual de MariaDB para saber más acerca de este asunto y sus posibles alternativas"
+ chi "在Master.Info存储库中存储MariaDB用户å或密ç ä¿¡æ¯ä¸å®‰å…¨ï¼Œå› æ­¤ä¸å»ºè®®ä½¿ç”¨ã€‚有关此问题和å¯èƒ½çš„替代方案,请å‚阅MariaDB手册"
+ eng "Storing MariaDB user name or password information in the master.info repository is not secure and is therefore not recommended. Please see the MariaDB Manual for more about this issue and possible alternatives"
+ spa "Almacenar nombre de usuario de MariaDB o información de contraseña en el repositorio master.info no es seguro y por ello no se recomienda. Por favor, mira el manual de MariaDB para saber más acerca de este asunto y sus posibles alternativas"
ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO 23000 S1009
+ chi "表'%.192s'的外键约æŸï¼Œè®°å½•'%-.192s'会导致表'%.192s'中的é‡å¤æ¡ç›®ï¼Œé”®'%.192s'"
eng "Foreign key constraint for table '%.192s', record '%-.192s' would lead to a duplicate entry in table '%.192s', key '%.192s'"
ger "Fremdschlüssel-Beschränkung für Tabelle '%.192s', Datensatz '%-.192s' würde zu einem doppelten Eintrag in Tabelle '%.192s', Schlüssel '%.192s' führen"
spa "La restricción de clave foránea para tabla '%.192s', registro '%-.192s' llevaría a una entrada duplicada en la tabla '%.192s', clave '%.192s'"
swe "FOREIGN KEY constraint för tabell '%.192s', posten '%-.192s' kan inte uppdatera barntabell '%.192s' på grund av nyckel '%.192s'"
ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO 23000 S1009
+ chi "表'%.192s'的外键约æŸï¼Œè®°å½•'%-.192s'会导致å­è¡¨ä¸­çš„é‡å¤æ¡ç›®"
eng "Foreign key constraint for table '%.192s', record '%-.192s' would lead to a duplicate entry in a child table"
ger "Fremdschlüssel-Beschränkung für Tabelle '%.192s', Datensatz '%-.192s' würde zu einem doppelten Eintrag in einer Kind-Tabelle führen"
spa "La restricción de clave foránea para tabla '%.192s', registro '%-.192s' llevaría a una entrada duplicada en una tabla hija"
swe "FOREIGN KEY constraint för tabell '%.192s', posten '%-.192s' kan inte uppdatera en barntabell på grund av UNIQUE-test"
ER_SQLTHREAD_WITH_SECURE_SLAVE
- eng "Setting authentication options is not possible when only the Slave SQL Thread is being started"
- spa "Configurar opciones de autenticación no es posible si sólo se ha arrancado el Hilo (thread) SQL Esclavo"
+ chi "仅在å¯åŠ¨ä»ŽSQL线程时无法设置身份验è¯é€‰é¡¹"
+ eng "Setting authentication options is not possible when only the Slave SQL Thread is being started"
+ spa "Configurar opciones de autenticación no es posible si sólo se ha arrancado el Hilo (thread) SQL Esclavo"
ER_TABLE_HAS_NO_FT
- eng "The table does not have FULLTEXT index to support this query"
- spa "La tabla no tiene índice FULLTEXT que soporte esta consulta (query)"
+ chi "该表没有全文索引æ¥æ”¯æŒæ­¤æŸ¥è¯¢"
+ eng "The table does not have FULLTEXT index to support this query"
+ spa "La tabla no tiene índice FULLTEXT que soporte esta consulta (query)"
ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER
- eng "The system variable %.200s cannot be set in stored functions or triggers"
- spa "La variable de sistema %.200s no se puede poner en funciones almacenadas o disparadores"
+ chi "无法在存储的函数或触å‘器中设置系统å˜é‡%.200s"
+ eng "The system variable %.200s cannot be set in stored functions or triggers"
+ spa "La variable de sistema %.200s no se puede poner en funciones almacenadas o disparadores"
ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION
- eng "The system variable %.200s cannot be set when there is an ongoing transaction"
- spa "La variable de sistema %.200s no se puede poner si hay una transacción en curso"
+ chi "æŒç»­äº¤æ˜“时,无法设置系统å˜é‡%.200s"
+ eng "The system variable %.200s cannot be set when there is an ongoing transaction"
+ spa "La variable de sistema %.200s no se puede poner si hay una transacción en curso"
ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST
- eng "The system variable @@SESSION.GTID_NEXT has the value %.200s, which is not listed in @@SESSION.GTID_NEXT_LIST"
- spa "La variable de sistema @@SESSION.GTID_NEXT tiene el valor %.200s, el cual no está listado en @@SESSION.GTID_NEXT_LIST"
+ chi "系统å˜é‡@@session.gtid_next具有值%.200s,该值未在@@session.gtid_next_list中列出"
+ eng "The system variable @@SESSION.GTID_NEXT has the value %.200s, which is not listed in @@SESSION.GTID_NEXT_LIST"
+ spa "La variable de sistema @@SESSION.GTID_NEXT tiene el valor %.200s, el cual no está listado en @@SESSION.GTID_NEXT_LIST"
ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION_WHEN_GTID_NEXT_LIST_IS_NULL
- eng "When @@SESSION.GTID_NEXT_LIST == NULL, the system variable @@SESSION.GTID_NEXT cannot change inside a transaction"
- spa "Cuando @@SESSION.GTID_NEXT_LIST == NULL, la variable de sistema @@SESSION.GTID_NEXT no puede cambiar dentro de una transacción"
+ chi "当@@session.gtid_next_list == null时,系统å˜é‡@@session.gtid_next无法在事务内更改"
+ eng "When @@SESSION.GTID_NEXT_LIST == NULL, the system variable @@SESSION.GTID_NEXT cannot change inside a transaction"
+ spa "Cuando @@SESSION.GTID_NEXT_LIST == NULL, la variable de sistema @@SESSION.GTID_NEXT no puede cambiar dentro de una transacción"
ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION
- eng "The statement 'SET %.200s' cannot invoke a stored function"
- spa "La sentencia 'SET %.200s' no puede invocar una función almacenada"
+ chi "语å¥'SET %.200s'无法调用存储的函数"
+ eng "The statement 'SET %.200s' cannot invoke a stored function"
+ spa "La sentencia 'SET %.200s' no puede invocar una función almacenada"
ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL
- eng "The system variable @@SESSION.GTID_NEXT cannot be 'AUTOMATIC' when @@SESSION.GTID_NEXT_LIST is non-NULL"
- spa "La variable de sistema @@SESSION.GTID_NEXT no puede ser 'AUTOMATIC' si la @@SESSION.GTID_NEXT_LIST es no-NULL"
+ chi "系统å˜é‡@@sessient.gtid_nextä¸èƒ½æ˜¯'自动'@@sessient.gtid_next_listéžnullæ—¶"
+ eng "The system variable @@SESSION.GTID_NEXT cannot be 'AUTOMATIC' when @@SESSION.GTID_NEXT_LIST is non-NULL"
+ spa "La variable de sistema @@SESSION.GTID_NEXT no puede ser 'AUTOMATIC' si la @@SESSION.GTID_NEXT_LIST es no-NULL"
ER_SKIPPING_LOGGED_TRANSACTION
- eng "Skipping transaction %.200s because it has already been executed and logged"
- spa "Saltando transacción %.200s porque ya ha sido ejecutada y puesta en historial (log)"
+ chi "跳过事务%.200s,因为它已ç»è¢«æ‰§è¡Œå’Œè®°å½•"
+ eng "Skipping transaction %.200s because it has already been executed and logged"
+ spa "Saltando transacción %.200s porque ya ha sido ejecutada y puesta en historial (log)"
ER_MALFORMED_GTID_SET_SPECIFICATION
- eng "Malformed GTID set specification '%.200s'"
- spa "GTID malformado pone especificación '%.200s'"
+ chi "畸形GTID设置规范'%.200s'"
+ eng "Malformed GTID set specification '%.200s'"
+ spa "GTID malformado pone especificación '%.200s'"
ER_MALFORMED_GTID_SET_ENCODING
- eng "Malformed GTID set encoding"
- spa "GTID malformado pone codificación"
+ chi "æ ¼å¼é”™è¯¯çš„GTID集编ç "
+ eng "Malformed GTID set encoding"
+ spa "GTID malformado pone codificación"
ER_MALFORMED_GTID_SPECIFICATION
- eng "Malformed GTID specification '%.200s'"
- spa "GTID malformado especificación '%.200s'"
+ chi "畸形GTID规范'%.200s'"
+ eng "Malformed GTID specification '%.200s'"
+ spa "GTID malformado especificación '%.200s'"
ER_GNO_EXHAUSTED
- eng "Impossible to generate Global Transaction Identifier: the integer component reached the maximal value. Restart the server with a new server_uuid"
- spa "Imposible generar Identificador Global de Transacción: el componente entero alcanzó el máximo valor. Rearranque el servidor con un nuevo server_uuid"
+ chi "无法生æˆå…¨å±€äº‹åŠ¡æ ‡è¯†ç¬¦ï¼šæ•´æ•°ç»„件达到了最大值。用新server_uuIdé‡æ–°å¯åŠ¨æœåŠ¡å™¨"
+ eng "Impossible to generate Global Transaction Identifier: the integer component reached the maximal value. Restart the server with a new server_uuid"
+ spa "Imposible generar Identificador Global de Transacción: el componente entero alcanzó el máximo valor. Rearranque el servidor con un nuevo server_uuid"
ER_BAD_SLAVE_AUTO_POSITION
- eng "Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS cannot be set when MASTER_AUTO_POSITION is active"
- spa "Los parámetros MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE y RELAY_LOG_POS no pueden ser puestos cuando MASTER_AUTO_POSITION esté activo"
+ chi "当MASTER_AUTO_POSITION处于活动状æ€æ—¶ï¼Œæ— æ³•è®¾ç½®å‚æ•°MASTER_LOG_FILE,MASTER_LOG_POS,RELAY_LOG_FILEå’ŒRELAY_LOG_POS"
+ eng "Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS cannot be set when MASTER_AUTO_POSITION is active"
+ spa "Los parámetros MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE y RELAY_LOG_POS no pueden ser puestos cuando MASTER_AUTO_POSITION esté activo"
ER_AUTO_POSITION_REQUIRES_GTID_MODE_ON
- eng "CHANGE MASTER TO MASTER_AUTO_POSITION = 1 can only be executed when GTID_MODE = ON"
- spa "CHANGE MASTER TO MASTER_AUTO_POSITION = 1 sólo se puede ejecutar cuando GTID_MODE = ON"
+ chi "CHANGE MASTER TO MASTER_AUTO_POSITION = 1åªèƒ½åœ¨GTID_MODE = ON上执行"
+ eng "CHANGE MASTER TO MASTER_AUTO_POSITION = 1 can only be executed when GTID_MODE = ON"
+ spa "CHANGE MASTER TO MASTER_AUTO_POSITION = 1 sólo se puede ejecutar cuando GTID_MODE = ON"
ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET
- eng "Cannot execute statements with implicit commit inside a transaction when GTID_NEXT != AUTOMATIC or GTID_NEXT_LIST != NULL"
- spa "No puedo ejecutar sentencias con acometidas (commit) implícitas dentro de una transacción cuando GTID_NEXT != AUTOMATIC o GTID_NEXT_LIST != NULL"
+ chi "当GTID_Next != AUTOMATIC 或GTID_NEXT_LIST != NULL时,无法在事务中执行语å¥"
+ eng "Cannot execute statements with implicit commit inside a transaction when GTID_NEXT != AUTOMATIC or GTID_NEXT_LIST != NULL"
+ spa "No puedo ejecutar sentencias con acometidas (commit) implícitas dentro de una transacción cuando GTID_NEXT != AUTOMATIC o GTID_NEXT_LIST != NULL"
ER_GTID_MODE_2_OR_3_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON
- eng "GTID_MODE = ON or GTID_MODE = UPGRADE_STEP_2 requires ENFORCE_GTID_CONSISTENCY = 1"
- spa "GTID_MODE = ON o GTID_MODE = UPGRADE_STEP_2 requiere que ENFORCE_GTID_CONSISTENCY = 1"
+ chi "GTID_MODE = ON或GTID_MODE = UPGRADE_STEP_2需è¦ENFORCE_GTID_CONSISTY = 1"
+ eng "GTID_MODE = ON or GTID_MODE = UPGRADE_STEP_2 requires ENFORCE_GTID_CONSISTENCY = 1"
+ spa "GTID_MODE = ON o GTID_MODE = UPGRADE_STEP_2 requiere que ENFORCE_GTID_CONSISTENCY = 1"
ER_GTID_MODE_REQUIRES_BINLOG
- eng "GTID_MODE = ON or UPGRADE_STEP_1 or UPGRADE_STEP_2 requires --log-bin and --log-slave-updates"
- spa "GTID_MODE = ON o UPGRADE_STEP_1 o UPGRADE_STEP_2 requiere --log-bin y --log-slave-updates"
+ chi "GTID_MODE = ON或UPGRADE_STEP_1或UPGRADE_STEP_2需è¦--log-binå’Œ-log-slave-updates"
+ eng "GTID_MODE = ON or UPGRADE_STEP_1 or UPGRADE_STEP_2 requires --log-bin and --log-slave-updates"
+ spa "GTID_MODE = ON o UPGRADE_STEP_1 o UPGRADE_STEP_2 requiere --log-bin y --log-slave-updates"
ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF
- eng "GTID_NEXT cannot be set to UUID:NUMBER when GTID_MODE = OFF"
- spa "GTID_NEXT no se puede poner a UUID:NUMBER cuando GTID_MODE = OFF"
+ chi "GTID_NEXT无法设置为UUID:NUMBER 当GTID_MODE = OFF"
+ eng "GTID_NEXT cannot be set to UUID:NUMBER when GTID_MODE = OFF"
+ spa "GTID_NEXT no se puede poner a UUID:NUMBER cuando GTID_MODE = OFF"
ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON
- eng "GTID_NEXT cannot be set to ANONYMOUS when GTID_MODE = ON"
- spa "GTID_NEXT no se puede poner como ANONYMOUS cuando GTID_MODE = ON"
+ chi "GTID_NEXT无法在当GTID_MODE = ON上时设置为ANONYMOUS"
+ eng "GTID_NEXT cannot be set to ANONYMOUS when GTID_MODE = ON"
+ spa "GTID_NEXT no se puede poner como ANONYMOUS cuando GTID_MODE = ON"
ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF
- eng "GTID_NEXT_LIST cannot be set to a non-NULL value when GTID_MODE = OFF"
- spa "GTID_NEXT_LIST no se puede poner como valor no-NULL cuando GTID_MODE = OFF"
+ chi "GTID_NEXT_LIST无法设置为éžç©ºå€¼å½“GTID_MODE = OFF"
+ eng "GTID_NEXT_LIST cannot be set to a non-NULL value when GTID_MODE = OFF"
+ spa "GTID_NEXT_LIST no se puede poner como valor no-NULL cuando GTID_MODE = OFF"
ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF
- eng "Found a Gtid_log_event or Previous_gtids_log_event when GTID_MODE = OFF"
- spa "Hallado un Gtid_log_event o Previous_gtids_log_event cuando GTID_MODE = OFF"
+ chi "找到一个Gtid_log_event或Previous_gtids_log_event,当gtid_mode = OFF时"
+ eng "Found a Gtid_log_event or Previous_gtids_log_event when GTID_MODE = OFF"
+ spa "Hallado un Gtid_log_event o Previous_gtids_log_event cuando GTID_MODE = OFF"
ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE
- eng "When ENFORCE_GTID_CONSISTENCY = 1, updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables"
- spa "Cuando ENFORCE_GTID_CONSISTENCY = 1, las actualiaciones a tablas no transaccionales sólo se puede hacer o bien en sentencias autoacometidas o en transacciones de sentencias simples y nunca dentro de la misma sentencia como actualizaciones a tablas transaccionales"
+ chi "当Enforce_gtid_consistenty = 1时,对éžäº‹åŠ¡æ€§è¡¨çš„æ›´æ–°åªèƒ½åœ¨Autocomated语å¥æˆ–å•ä¸€è¯­å¥äº‹åŠ¡ä¸­å®Œæˆï¼Œè€Œä¸æ˜¯åœ¨ä¸Žäº‹åŠ¡è¡¨ä¸­çš„更新相åŒçš„语å¥ä¸­"
+ eng "When ENFORCE_GTID_CONSISTENCY = 1, updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables"
+ spa "Cuando ENFORCE_GTID_CONSISTENCY = 1, las actualiaciones a tablas no transaccionales sólo se puede hacer o bien en sentencias autoacometidas o en transacciones de sentencias simples y nunca dentro de la misma sentencia como actualizaciones a tablas transaccionales"
ER_GTID_UNSAFE_CREATE_SELECT
- eng "CREATE TABLE ... SELECT is forbidden when ENFORCE_GTID_CONSISTENCY = 1"
- spa "CREATE TABLE ... SELECT está prohibido si ENFORCE_GTID_CONSISTENCY = 1"
+ chi "CREATE TABLE...SELECT在ENFORCE_GTID_CONSISTENCY = 1时被ç¦æ­¢"
+ eng "CREATE TABLE ... SELECT is forbidden when ENFORCE_GTID_CONSISTENCY = 1"
+ spa "CREATE TABLE ... SELECT está prohibido si ENFORCE_GTID_CONSISTENCY = 1"
ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION
- eng "When ENFORCE_GTID_CONSISTENCY = 1, the statements CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can be executed in a non-transactional context only, and require that AUTOCOMMIT = 1"
- spa "Cuando ENFORCE_GTID_CONSISTENCY = 1, las sentencias CREATE TEMPORARY TABLE y DROP TEMPORARY TABLE pueden ser ejecutadas sólo en contextos no-transaccionales y requieren que AUTOCOMMIT = 1"
+ chi "当ENFORCE_GTID_CONSISTENCY = 1时,语å¥CREATE TEMPORARY TABLå’ŒDROP TEMPORARY TABLE,åªèƒ½åœ¨éžäº‹åŠ¡æ€§ä¸Šä¸‹æ–‡ä¸­æ‰§è¡Œï¼Œå¹¶ä¸”è¦æ±‚autocommit = 1"
+ eng "When ENFORCE_GTID_CONSISTENCY = 1, the statements CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can be executed in a non-transactional context only, and require that AUTOCOMMIT = 1"
+ spa "Cuando ENFORCE_GTID_CONSISTENCY = 1, las sentencias CREATE TEMPORARY TABLE y DROP TEMPORARY TABLE pueden ser ejecutadas sólo en contextos no-transaccionales y requieren que AUTOCOMMIT = 1"
ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME
- eng "The value of GTID_MODE can only change one step at a time: OFF <-> UPGRADE_STEP_1 <-> UPGRADE_STEP_2 <-> ON. Also note that this value must be stepped up or down simultaneously on all servers; see the Manual for instructions."
- spa "El valor de GTID_MODE sólo puede cambiar un paso a la vez: OFF <-> UPGRADE_STEP_1 <-> UPGRADE_STEP_2 <-> ON. También ten en cuenta que este valor debe de ser aumentado y disminuido simultaneamente en todos los servidores; mira el Manual para instrucciones."
+ chi "GTID_MODE的值åªèƒ½ä¸€æ¬¡æ›´æ”¹ä¸€æ­¥ï¼šOFF<-> UPGRODE_STEP_1 <-> UPGRODE_STEP_2 <-> ON。å¦è¯·æ³¨æ„,此值必须在所有æœåŠ¡å™¨ä¸ŠåŒæ—¶ä¸Šå‡æˆ–下é™;有关说明,请å‚阅手册。“"
+ eng "The value of GTID_MODE can only change one step at a time: OFF <-> UPGRADE_STEP_1 <-> UPGRADE_STEP_2 <-> ON. Also note that this value must be stepped up or down simultaneously on all servers; see the Manual for instructions."
+ spa "El valor de GTID_MODE sólo puede cambiar un paso a la vez: OFF <-> UPGRADE_STEP_1 <-> UPGRADE_STEP_2 <-> ON. También ten en cuenta que este valor debe de ser aumentado y disminuido simultaneamente en todos los servidores; mira el Manual para instrucciones."
ER_MASTER_HAS_PURGED_REQUIRED_GTIDS
- eng "The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires"
- spa "El esclavo se está conectando usando CHANGE MASTER TO MASTER_AUTO_POSITION = 1, pero el maestro (master) ha purgado los historiales (logs) binarios que contienen GTIDs requeridos por el esclavo"
+ chi "从机更改主站到Master_Auto_Position = 1,因此主站连接,但主设备已清除了slave需è¦çš„GTID的二进制日志"
+ eng "The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires"
+ spa "El esclavo se está conectando usando CHANGE MASTER TO MASTER_AUTO_POSITION = 1, pero el maestro (master) ha purgado los historiales (logs) binarios que contienen GTIDs requeridos por el esclavo"
ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID
- eng "GTID_NEXT cannot be changed by a client that owns a GTID. The client owns %s. Ownership is released on COMMIT or ROLLBACK"
- spa "GTID_NEXT no se puede cambiar por un cliente que posee un GTID. El cliente posee %s. La propiedad se libera con COMMIT o ROLLBACK"
+ chi "无法由拥有GTID的客户端更改GTID_NEXT。客户拥有%s。所有æƒåœ¨æ交或回滚上å‘布"
+ eng "GTID_NEXT cannot be changed by a client that owns a GTID. The client owns %s. Ownership is released on COMMIT or ROLLBACK"
+ spa "GTID_NEXT no se puede cambiar por un cliente que posee un GTID. El cliente posee %s. La propiedad se libera con COMMIT o ROLLBACK"
ER_UNKNOWN_EXPLAIN_FORMAT
- eng "Unknown %s format name: '%s'"
- rus "ÐеизвеÑтное Ð¸Ð¼Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° команды %s: '%s'"
- spa "Nombre de formato %s desconocido: '%s'"
+ chi "未知%sæ ¼å¼å称:'%s'"
+ eng "Unknown %s format name: '%s'"
+ rus "ÐеизвеÑтное Ð¸Ð¼Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° команды %s: '%s'"
+ spa "Nombre de formato %s desconocido: '%s'"
ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION 25006
- eng "Cannot execute statement in a READ ONLY transaction"
- spa "No puedo ejecutar sentencia en una transacción READ ONLY"
+ chi "无法在åªè¯»äº‹åŠ¡ä¸­æ‰§è¡Œè¯­å¥"
+ eng "Cannot execute statement in a READ ONLY transaction"
+ spa "No puedo ejecutar sentencia en una transacción READ ONLY"
ER_TOO_LONG_TABLE_PARTITION_COMMENT
- eng "Comment for table partition '%-.64s' is too long (max = %lu)"
- spa "El comentario para partición de tabla '%-.64s' es demasido largo (máx = %lu)"
+ chi "表分区的评论'%-.64s'太长(max =%lu)"
+ eng "Comment for table partition '%-.64s' is too long (max = %lu)"
+ spa "El comentario para partición de tabla '%-.64s' es demasido largo (máx = %lu)"
ER_SLAVE_CONFIGURATION
- eng "Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MariaDB error log"
- spa "El esclavo no está configurado o falló al inicializarse de forma adecuada. Vd debe de poner al menos --server-id para activar o bien un maestro (master) o un esclavo. Mensajes de error adicionales pueden ser hallados en historial (log) de errores de MariaDB"
+ chi "从站未é…置或未能正确åˆå§‹åŒ–。您必须至少set --server-id以å¯ç”¨ä¸»ç«™æˆ–从站。å¯ä»¥åœ¨MariaDB错误日志中找到其他错误消æ¯"
+ eng "Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MariaDB error log"
+ spa "El esclavo no está configurado o falló al inicializarse de forma adecuada. Vd debe de poner al menos --server-id para activar o bien un maestro (master) o un esclavo. Mensajes de error adicionales pueden ser hallados en historial (log) de errores de MariaDB"
ER_INNODB_FT_LIMIT
- eng "InnoDB presently supports one FULLTEXT index creation at a time"
- spa "Actualmente InnoDB soporta la creación de un índice FULLTEXT a la vez"
+ chi "InnoDBç›®å‰ä¸€æ¬¡æ”¯æŒä¸€ä¸ªå…¨æ–‡ç´¢å¼•åˆ›å»º"
+ eng "InnoDB presently supports one FULLTEXT index creation at a time"
+ spa "Actualmente InnoDB soporta la creación de un índice FULLTEXT a la vez"
ER_INNODB_NO_FT_TEMP_TABLE
- eng "Cannot create FULLTEXT index on temporary InnoDB table"
- spa "No puedo crear índice FULLTEXT en tabla temporal InnoDB"
+ chi "无法在临时InnoDB表上创建FullText索引"
+ eng "Cannot create FULLTEXT index on temporary InnoDB table"
+ spa "No puedo crear índice FULLTEXT en tabla temporaria InnoDB"
ER_INNODB_FT_WRONG_DOCID_COLUMN
- eng "Column '%-.192s' is of wrong type for an InnoDB FULLTEXT index"
- spa "La columna '%-.192s' es de tipo equivocado para un índice InnoDB FULLTEXT"
+ chi "列'%-.192s'是innodb fulltext索引的错误类型"
+ eng "Column '%-.192s' is of wrong type for an InnoDB FULLTEXT index"
+ spa "La columna '%-.192s' es de tipo equivocado para un índice InnoDB FULLTEXT"
ER_INNODB_FT_WRONG_DOCID_INDEX
- eng "Index '%-.192s' is of wrong type for an InnoDB FULLTEXT index"
- spa "El índice '%-.192s' es de tipo equivocado para un índice InnoDB FULLTEXT"
+ chi "InnoDB全文索引的索引'%-.192s'是错误的类型错误"
+ eng "Index '%-.192s' is of wrong type for an InnoDB FULLTEXT index"
+ spa "El índice '%-.192s' es de tipo equivocado para un índice InnoDB FULLTEXT"
ER_INNODB_ONLINE_LOG_TOO_BIG
- eng "Creating index '%-.192s' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again"
- spa "La creación de índice '%-.192s' requirió más de 'innodb_online_alter_log_max_size' bytes de historial (log) de modificaciones. Por favor, pruebe otra vez"
+ chi "创建索引'%-.192s'所需的多于'innodb_online_alter_log_max_size'字节的修改日志。请å†è¯•ä¸€æ¬¡"
+ eng "Creating index '%-.192s' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again"
+ spa "La creación de índice '%-.192s' requirió más de 'innodb_online_alter_log_max_size' bytes de historial (log) de modificaciones. Por favor, pruebe otra vez"
ER_UNKNOWN_ALTER_ALGORITHM
- eng "Unknown ALGORITHM '%s'"
- spa "ALGORITHM desconocido '%s'"
+ chi "未知算法'%s'"
+ eng "Unknown ALGORITHM '%s'"
+ spa "ALGORITHM desconocido '%s'"
ER_UNKNOWN_ALTER_LOCK
- eng "Unknown LOCK type '%s'"
- spa "Tipo de LOCK desconocido '%s'"
+ chi "未知é”定类型'%s'"
+ eng "Unknown LOCK type '%s'"
+ spa "Tipo de LOCK desconocido '%s'"
ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS
- eng "CHANGE MASTER cannot be executed when the slave was stopped with an error or killed in MTS mode. Consider using RESET SLAVE or START SLAVE UNTIL"
- spa "CHANGE MASTER no se puede ejecutar cuando se ha parado el esclavo con un error o matado en modo MTS. Considere el usar RESET SLAVE o START SLAVE UNTIL"
+ chi "当从站因为错误åœæ­¢æˆ–以MTS模å¼ç»ˆæ­¢æ—¶ï¼Œä¸å‘¢æ‰§è¡ŒCHANGE MASTER。考虑使用RESET SLAVE或START SLAVE UNTIL"
+ eng "CHANGE MASTER cannot be executed when the slave was stopped with an error or killed in MTS mode. Consider using RESET SLAVE or START SLAVE UNTIL"
+ spa "CHANGE MASTER no se puede ejecutar cuando se ha parado el esclavo con un error o matado en modo MTS. Considere el usar RESET SLAVE o START SLAVE UNTIL"
ER_MTS_RECOVERY_FAILURE
- eng "Cannot recover after SLAVE errored out in parallel execution mode. Additional error messages can be found in the MariaDB error log"
- spa "No puedo recuperar después de que SLAVE diera error en modo paralelo de ejecución. Mensajes de error adicionales se pueden hallar en el historial (log) de error de MariaDB"
+ chi "从并行执行模å¼ä¸‹çš„从站错误åŽæ— æ³•æ¢å¤ã€‚å¯ä»¥åœ¨MariaDB错误日志中找到其他错误消æ¯"
+ eng "Cannot recover after SLAVE errored out in parallel execution mode. Additional error messages can be found in the MariaDB error log"
+ spa "No puedo recuperar después de que SLAVE diera error en modo paralelo de ejecución. Mensajes de error adicionales se pueden hallar en el historial (log) de error de MariaDB"
ER_MTS_RESET_WORKERS
- eng "Cannot clean up worker info tables. Additional error messages can be found in the MariaDB error log"
- spa "No puedo limpiar tablas de información de trabajador. Mensajes de error adicionales se pueden hallar en el historial (log) de error de MariaDB"
+ chi "无法清ç†å·¥ä½œè€…ä¿¡æ¯è¡¨ã€‚å¯ä»¥åœ¨MariaDB错误日志中找到其他错误消æ¯"
+ eng "Cannot clean up worker info tables. Additional error messages can be found in the MariaDB error log"
+ spa "No puedo limpiar tablas de información de trabajador. Mensajes de error adicionales se pueden hallar en el historial (log) de error de MariaDB"
ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2
- eng "Column count of %s.%s is wrong. Expected %d, found %d. The table is probably corrupted"
- ger "Spaltenanzahl von %s.%s falsch. %d erwartet, aber %d gefunden. Tabelle ist wahrscheinlich beschädigt"
- spa "El contador de columnas %s.%s está equivocado. Se esperaba %d, hallado %d. La tabla está probablemente estropeada"
+ chi "列数为%s.%s是错误的。预期的%d,找到%d。表å¯èƒ½æŸå了"
+ eng "Column count of %s.%s is wrong. Expected %d, found %d. The table is probably corrupted"
+ ger "Spaltenanzahl von %s.%s falsch. %d erwartet, aber %d gefunden. Tabelle ist wahrscheinlich beschädigt"
+ spa "El contador de columnas %s.%s está equivocado. Se esperaba %d, hallado %d. La tabla está probablemente estropeada"
ER_SLAVE_SILENT_RETRY_TRANSACTION
- eng "Slave must silently retry current transaction"
- spa "El esclavo debe de reintentar silenciosamente la transacción en curso"
+ chi "从站必须é™é»˜åœ°é‡è¯•å½“å‰äº‹åŠ¡"
+ eng "Slave must silently retry current transaction"
+ spa "El esclavo debe de reintentar silenciosamente la transacción en curso"
ER_UNUSED_22
- eng "You should never see it"
- spa "Nunca debería vd de ver esto"
+ chi "你永远ä¸åº”该看到它"
+ eng "You should never see it"
+ spa "Nunca debería vd de ver esto"
ER_TABLE_SCHEMA_MISMATCH
- eng "Schema mismatch (%s)"
- spa "Esquema no coincide (%s)"
+ chi "架构ä¸åŒ¹é…(%s)"
+ eng "Schema mismatch (%s)"
+ spa "Esquema no coincide (%s)"
ER_TABLE_IN_SYSTEM_TABLESPACE
- eng "Table %-.192s in system tablespace"
- spa "Tabla %-.192s en espacio de tablas del sitema"
+ chi "表%-.192s在系统表空间中"
+ eng "Table %-.192s in system tablespace"
+ spa "Tabla %-.192s en espacio de tablas del sitema"
ER_IO_READ_ERROR
- eng "IO Read error: (%lu, %s) %s"
- spa "Error de Lectura de E/S: (%lu, %s) %s"
+ chi "IO读å–错误:(%lu,%s)%s"
+ eng "IO Read error: (%lu, %s) %s"
+ spa "Error de Lectura de E/S: (%lu, %s) %s"
ER_IO_WRITE_ERROR
- eng "IO Write error: (%lu, %s) %s"
- spa "Error de Escritura de E/S: (%lu, %s) %s"
+ chi "IO写错错误:(%lu,%s)%s"
+ eng "IO Write error: (%lu, %s) %s"
+ spa "Error de Escritura de E/S: (%lu, %s) %s"
ER_TABLESPACE_MISSING
- eng "Tablespace is missing for table '%-.192s'"
- spa "Espacio de tabla falta para la tabla '%-.192s'"
+ chi "表空间缺少表'%-.192s'"
+ eng "Tablespace is missing for table '%-.192s'"
+ spa "Espacio de tabla falta para la tabla '%-.192s'"
ER_TABLESPACE_EXISTS
- eng "Tablespace for table '%-.192s' exists. Please DISCARD the tablespace before IMPORT"
- spa "Existe Espacio de tabla para la tabla '%-.192s'. Por favor, haga DISCARD del espacio de tabla antes de hacer IMPORT"
+ chi "表格'%-.192s'的表空间。请在导入之å‰ä¸¢å¼ƒè¡¨ç©ºé—´"
+ eng "Tablespace for table '%-.192s' exists. Please DISCARD the tablespace before IMPORT"
+ spa "Existe Espacio de tabla para la tabla '%-.192s'. Por favor, haga DISCARD del espacio de tabla antes de hacer IMPORT"
ER_TABLESPACE_DISCARDED
- eng "Tablespace has been discarded for table %`s"
- spa "El espacio de tabla ha sido descartado para la tabla %`s"
+ chi "表空间已被丢弃为表%`s"
+ eng "Tablespace has been discarded for table %`s"
+ spa "El espacio de tabla ha sido descartado para la tabla %`s"
ER_INTERNAL_ERROR
- eng "Internal error: %-.192s"
- spa "Error interno: %-.192s"
+ chi "内部错误:%-.192s"
+ eng "Internal error: %-.192s"
+ spa "Error interno: %-.192s"
ER_INNODB_IMPORT_ERROR
- eng "ALTER TABLE '%-.192s' IMPORT TABLESPACE failed with error %lu : '%s'"
- spa "ALTER TABLE '%-.192s' IMPORT TABLESPACE ha fallado con error %lu : '%s'"
+ chi "ALTER TABLE '%-.192s' IMPORT TABLESPACE 失败,错误%lu:'%s'"
+ eng "ALTER TABLE '%-.192s' IMPORT TABLESPACE failed with error %lu : '%s'"
+ spa "ALTER TABLE '%-.192s' IMPORT TABLESPACE ha fallado con error %lu : '%s'"
ER_INNODB_INDEX_CORRUPT
- eng "Index corrupt: %s"
- spa "Ãndice corrupto: %s"
+ chi "索引æŸå:%s"
+ eng "Index corrupt: %s"
+ spa "Ãndice corrupto: %s"
ER_INVALID_YEAR_COLUMN_LENGTH
- eng "YEAR(%lu) column type is deprecated. Creating YEAR(4) column instead"
- rus "Тип YEAR(%lu) более не поддерживаетÑÑ, вмеÑто него будет Ñоздана колонка Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ YEAR(4)"
- spa "El tipo de columna YEAR(%lu) está obsoleto. Creando columna YEAR(4) en su lugar"
+ chi "已弃用YEAR(%lu)列类型。创建YEAR(4)列代替"
+ eng "YEAR(%lu) column type is deprecated. Creating YEAR(4) column instead"
+ rus "Тип YEAR(%lu) более не поддерживаетÑÑ, вмеÑто него будет Ñоздана колонка Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ YEAR(4)"
+ spa "El tipo de columna YEAR(%lu) está obsoleto. Creando columna YEAR(4) en su lugar"
ER_NOT_VALID_PASSWORD
- eng "Your password does not satisfy the current policy requirements"
- spa "Su contraseña no satisface los requerimientos de la política en curso"
+ chi "您的密ç ä¸æ»¡è¶³å½“å‰çš„政策è¦æ±‚"
+ eng "Your password does not satisfy the current policy requirements"
+ spa "Su contraseña no satisface los requerimientos de la política en curso"
ER_MUST_CHANGE_PASSWORD
- eng "You must SET PASSWORD before executing this statement"
- bgn "ТрÑбва първо да Ñи Ñмените паролата ÑÑŠÑ SET PASSWORD за да можете да изпълните тази команда"
- rum "Trebuie sa iti schimbi parola folosind SET PASSWORD inainte de a executa aceasta comanda"
- spa "Debe vd de poner SET PASSWORD antes de ejecutar esta sentencia"
+ bgn "ТрÑбва първо да Ñи Ñмените паролата ÑÑŠÑ SET PASSWORD за да можете да изпълните тази команда"
+ chi "您必须在执行此语å¥ä¹‹å‰è®¾ç½®å¯†ç "
+ eng "You must SET PASSWORD before executing this statement"
+ rum "Trebuie sa iti schimbi parola folosind SET PASSWORD inainte de a executa aceasta comanda"
+ spa "Debe vd de poner SET PASSWORD antes de ejecutar esta sentencia"
ER_FK_NO_INDEX_CHILD
- eng "Failed to add the foreign key constaint. Missing index for constraint '%s' in the foreign table '%s'"
+ chi "无法添加外键约æŸã€‚外表'%s'中的约æŸ'%s'缺少索引"
+ eng "Failed to add the foreign key constraint. Missing index for constraint '%s' in the foreign table '%s'"
spa "No pude añadir la restricción de clave foránea. Falta índice para restricción '%s' en la tabla foránea '%s'"
ER_FK_NO_INDEX_PARENT
- eng "Failed to add the foreign key constaint. Missing index for constraint '%s' in the referenced table '%s'"
+ chi "无法添加外键约æŸã€‚引用的表'%s'中的约æŸ'%s'缺少索引"
+ eng "Failed to add the foreign key constraint. Missing index for constraint '%s' in the referenced table '%s'"
spa "No pude añadir la restricción de clave foránea. Falta índice para restricción '%s' en la tabla referenciada '%s'"
ER_FK_FAIL_ADD_SYSTEM
+ chi "无法将外键约æŸ'%s'添加到系统表"
eng "Failed to add the foreign key constraint '%s' to system tables"
spa "No pude añadir la restricción de clave foránea '%s' a las tablas del sistema"
ER_FK_CANNOT_OPEN_PARENT
+ chi "无法打开引用的表'%s'"
eng "Failed to open the referenced table '%s'"
spa "No pude abrir la tabla referenciada '%s'"
ER_FK_INCORRECT_OPTION
+ chi "无法在表'%s'上添加外键约æŸã€‚外键约æŸ'%s'中的选项ä¸æ­£ç¡®"
eng "Failed to add the foreign key constraint on table '%s'. Incorrect options in FOREIGN KEY constraint '%s'"
spa "No pude añadir restricción de clave foránea en la tabla '%s'. Opciones incorrectas en restricción FOREIGN KEY '%s'"
ER_DUP_CONSTRAINT_NAME
- eng "Duplicate %s constraint name '%s'"
- spa "Duplicada restricción %s llamada '%s'"
+ chi "é‡å¤%s约æŸå称'%s'"
+ eng "Duplicate %s constraint name '%s'"
+ spa "Duplicada restricción %s llamada '%s'"
ER_PASSWORD_FORMAT
- eng "The password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function"
- spa "El cálculo de contraseña no tiene el formato esperado. Revise si se está usando el algoritmo correcto de contraseña con la función PASSWORD()"
+ chi "密ç å“ˆå¸Œæ²¡æœ‰é¢„期的格å¼ã€‚检查密ç ï¼ˆï¼‰å‡½æ•°æ˜¯å¦ä½¿ç”¨æ­£ç¡®çš„密ç ç®—法"
+ eng "The password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function"
+ spa "El cálculo de contraseña no tiene el formato esperado. Revise si se está usando el algoritmo correcto de contraseña con la función PASSWORD()"
ER_FK_COLUMN_CANNOT_DROP
+ chi "无法删除'%-.192s'列:在外部索引约æŸ'%-.192s'中需è¦"
eng "Cannot drop column '%-.192s': needed in a foreign key constraint '%-.192s'"
ger "Kann Spalte '%-.192s' nicht löschen: wird für eine Fremdschlüsselbeschränkung '%-.192s' benötigt"
spa "No puedo eliminar la columna '%-.192s': necesaria en restricción de clave foránea '%-.192s'"
ER_FK_COLUMN_CANNOT_DROP_CHILD
+ chi "无法删除列'%-.192s':在外键约æŸ'%-.192s'中需è¦ï¼Œè¡¨%-.192s"
eng "Cannot drop column '%-.192s': needed in a foreign key constraint '%-.192s' of table %-.192s"
ger "Kann Spalte '%-.192s' nicht löschen: wird für eine Fremdschlüsselbeschränkung '%-.192s' der Tabelle %-.192s benötigt"
spa "No puedo eliminar la columna '%-.192s': necesaria en restriccón de clave foránea '%-.192s' de la tabla %-.192s"
ER_FK_COLUMN_NOT_NULL
+ chi "列'%-.192s'ä¸èƒ½æ²¡æœ‰null:在外键约æŸ'%-.192s'设置为null"
eng "Column '%-.192s' cannot be NOT NULL: needed in a foreign key constraint '%-.192s' SET NULL"
ger "Spalte '%-.192s' kann nicht NOT NULL sein: wird für eine Fremdschlüsselbeschränkung '%-.192s' SET NULL benötigt"
spa "La columna '%-.192s' no puede ser NOT NULL: necesaria en restricción de clave foránea '%-.192s' SET NULL"
ER_DUP_INDEX
- eng "Duplicate index %`s. This is deprecated and will be disallowed in a future release"
- spa "Ãndice duplicado %`s. Éste está obsoleto y será quitado en entregas futuras"
+ chi "é‡å¤ç´¢å¼•%`s。这已弃用,将在未æ¥çš„版本中ä¸å…许"
+ eng "Duplicate index %`s. This is deprecated and will be disallowed in a future release"
+ spa "Ãndice duplicado %`s. Éste está obsoleto y será quitado en entregas futuras"
ER_FK_COLUMN_CANNOT_CHANGE
- eng "Cannot change column '%-.192s': used in a foreign key constraint '%-.192s'"
- spa "No puedo cambiar la columna '%-.192s': usada en una restricción de clave foránea '%-.192s'"
+ chi "无法更改列'%-.192s':用于外部键约æŸ'%-.192s'"
+ eng "Cannot change column '%-.192s': used in a foreign key constraint '%-.192s'"
+ spa "No puedo cambiar la columna '%-.192s': usada en una restricción de clave foránea '%-.192s'"
ER_FK_COLUMN_CANNOT_CHANGE_CHILD
- eng "Cannot change column '%-.192s': used in a foreign key constraint '%-.192s' of table '%-.192s'"
- spa "No puedo cambiar la columna '%-.192s': usada en restricción de clave foránea '%-.192s' de la tabla '%-.192s'"
+ chi "无法更改列'%-.192s':用于在外部键约æŸ'%-.192s'的表'%-.192s'"
+ eng "Cannot change column '%-.192s': used in a foreign key constraint '%-.192s' of table '%-.192s'"
+ spa "No puedo cambiar la columna '%-.192s': usada en restricción de clave foránea '%-.192s' de la tabla '%-.192s'"
ER_FK_CANNOT_DELETE_PARENT
- eng "Cannot delete rows from table which is parent in a foreign key constraint '%-.192s' of table '%-.192s'"
- spa "No puedo borrar filas de la tabla que es padre en restricción de clave foránea '%-.192s' de la tabla '%-.192s'"
+ chi "无法从表中删除æ¥è‡ªè¡¨ä¸­çš„父级的表中的行'%-.192sâ€è¡¨'%-.192s'"
+ eng "Cannot delete rows from table which is parent in a foreign key constraint '%-.192s' of table '%-.192s'"
+ spa "No puedo borrar filas de la tabla que es padre en restricción de clave foránea '%-.192s' de la tabla '%-.192s'"
ER_MALFORMED_PACKET
- eng "Malformed communication packet"
- spa "Paquete de comunicación malformado"
+ chi "畸形通信包"
+ eng "Malformed communication packet"
+ spa "Paquete de comunicación malformado"
ER_READ_ONLY_MODE
+ chi "以åªè¯»æ¨¡å¼è¿è¡Œ"
eng "Running in read-only mode"
spa "Ejecutando em modo sólo-lectura"
ER_GTID_NEXT_TYPE_UNDEFINED_GROUP
- eng "When GTID_NEXT is set to a GTID, you must explicitly set it again after a COMMIT or ROLLBACK. If you see this error message in the slave SQL thread, it means that a table in the current transaction is transactional on the master and non-transactional on the slave. In a client connection, it means that you executed SET GTID_NEXT before a transaction and forgot to set GTID_NEXT to a different identifier or to 'AUTOMATIC' after COMMIT or ROLLBACK. Current GTID_NEXT is '%s'"
- spa "Cuando GTID_NEXT se pone a GTID, debe vd de ponerlo de nuevo de forma explícita tras un COMMIT o ROLLBACK. Si vd ve este mensaje de error en el hilo (thread) de SQL esclavo, indica que una tabla de la transacción en curso es transaccional en el maestro (master) y no transaccional en el esclavo. En una conexión cliente, indica que has ejecutado SET GTID_NEXT antes de una transacción y has olvidado poner GTID_NEXT a un identificador diferente o a 'AUTOMATIC' tras COMMIT o ROLLBACK. El GTID_NEXT actual es '%s'"
+ chi "当GTID_NEXT设置为GTID时,必须在æ交或回滚åŽç«‹å³å°†å…¶å†æ¬¡è®¾ç½®ã€‚如果在从SQL线程中看到此错误消æ¯ï¼Œåˆ™è¡¨ç¤ºå½“å‰äº‹åŠ¡ä¸­çš„表是在主站和从站上的éžäº¤æ˜“的事务性。在客户端连接中,它æ„味ç€æ‚¨åœ¨äº‹åŠ¡ä¹‹å‰æ‰§è¡ŒSET GTID_NEXT并忘记将GTID_NEXT设置为ä¸åŒçš„标识符或在æ交或回滚åŽâ€œè‡ªåŠ¨â€ã€‚当å‰gtid_next是'%s'"
+ eng "When GTID_NEXT is set to a GTID, you must explicitly set it again after a COMMIT or ROLLBACK. If you see this error message in the slave SQL thread, it means that a table in the current transaction is transactional on the master and non-transactional on the slave. In a client connection, it means that you executed SET GTID_NEXT before a transaction and forgot to set GTID_NEXT to a different identifier or to 'AUTOMATIC' after COMMIT or ROLLBACK. Current GTID_NEXT is '%s'"
+ spa "Cuando GTID_NEXT se pone a GTID, debe vd de ponerlo de nuevo de forma explícita tras un COMMIT o ROLLBACK. Si vd ve este mensaje de error en el hilo (thread) de SQL esclavo, indica que una tabla de la transacción en curso es transaccional en el maestro (master) y no transaccional en el esclavo. En una conexión cliente, indica que has ejecutado SET GTID_NEXT antes de una transacción y has olvidado poner GTID_NEXT a un identificador diferente o a 'AUTOMATIC' tras COMMIT o ROLLBACK. El GTID_NEXT actual es '%s'"
ER_VARIABLE_NOT_SETTABLE_IN_SP
- eng "The system variable %.200s cannot be set in stored procedures"
- spa "La variable de sistema %.200s no se puede poner en procedimentos almacenados"
+ chi "无法在存储过程中设置系统å˜é‡%.200s"
+ eng "The system variable %.200s cannot be set in stored procedures"
+ spa "La variable de sistema %.200s no se puede poner en procedimentos almacenados"
ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF
- eng "GTID_PURGED can only be set when GTID_MODE = ON"
- spa "GTID_PURGED sólo se puede usar cuando GTID_MODE = ON"
+ chi "åªèƒ½åœ¨GTID_MODE = ON设置GTID_PURGED"
+ eng "GTID_PURGED can only be set when GTID_MODE = ON"
+ spa "GTID_PURGED sólo se puede usar cuando GTID_MODE = ON"
ER_CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY
- eng "GTID_PURGED can only be set when GTID_EXECUTED is empty"
- spa "GTID_PURGED sólo se puede poner cuando GTID_EXECUTED está vacío"
+ chi "åªæœ‰åœ¨GTID_EXECUTED为空时æ‰å¯ä»¥è®¾ç½®GTID_PURGED"
+ eng "GTID_PURGED can only be set when GTID_EXECUTED is empty"
+ spa "GTID_PURGED sólo se puede poner cuando GTID_EXECUTED está vacío"
ER_CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY
- eng "GTID_PURGED can only be set when there are no ongoing transactions (not even in other clients)"
- spa "GTID_PURGED sólo se puede poner cuando no hay trasacciones en curso (ni incluso en otros clientes)"
+ chi "åªæœ‰åœ¨æ²¡æœ‰æŒç»­çš„事务时æ‰å¯ä»¥è®¾ç½®GTID_PURGED(å³ä½¿åœ¨å…¶ä»–客户端中ä¸ï¼‰"
+ eng "GTID_PURGED can only be set when there are no ongoing transactions (not even in other clients)"
+ spa "GTID_PURGED sólo se puede poner cuando no hay trasacciones en curso (ni incluso en otros clientes)"
ER_GTID_PURGED_WAS_CHANGED
- eng "GTID_PURGED was changed from '%s' to '%s'"
- spa "GTID_PURGED se cambió de '%s' a '%s'"
+ chi "GTID_PURGED从'%s'更改为'%s'"
+ eng "GTID_PURGED was changed from '%s' to '%s'"
+ spa "GTID_PURGED se cambió de '%s' a '%s'"
ER_GTID_EXECUTED_WAS_CHANGED
- eng "GTID_EXECUTED was changed from '%s' to '%s'"
- spa "GTID_EXECUTED se cambió de '%s' a '%s'"
+ chi "GTID_EXECUTE从'%s'更改为'%s'"
+ eng "GTID_EXECUTED was changed from '%s' to '%s'"
+ spa "GTID_EXECUTED se cambió de '%s' a '%s'"
ER_BINLOG_STMT_MODE_AND_NO_REPL_TABLES
- eng "Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT, and both replicated and non replicated tables are written to"
- spa "No puedo ejecutar sentencia: imposible escribir en historial (log) binario desde BINLOG_FORMAT = STATEMENT y en tablas replicadas y no replicadas"
+ chi "无法执行语å¥ï¼šç”±äºŽBINLOG_FORMAT = STATEMENT,因此无法写入二进制日志,并将å¤åˆ¶å’Œéžå¤åˆ¶è¡¨å†™å…¥"
+ eng "Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT, and both replicated and non replicated tables are written to"
+ spa "No puedo ejecutar sentencia: imposible escribir en historial (log) binario desde BINLOG_FORMAT = STATEMENT y en tablas replicadas y no replicadas"
ER_ALTER_OPERATION_NOT_SUPPORTED 0A000
- eng "%s is not supported for this operation. Try %s"
- spa "%s no está soportado para esta operación. Pruebe %s"
+ chi "æ­¤æ“作ä¸æ”¯æŒ%s。试试%s"
+ eng "%s is not supported for this operation. Try %s"
+ spa "%s no está soportado para esta operación. Pruebe %s"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON 0A000
- eng "%s is not supported. Reason: %s. Try %s"
- spa "%s no está soportado. Motivo: %s. Pruebe %s"
+ chi "ä¸æ”¯æŒ%s。原因:%s。试试%s"
+ eng "%s is not supported. Reason: %s. Try %s"
+ spa "%s no está soportado. Motivo: %s. Pruebe %s"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY
- eng "COPY algorithm requires a lock"
- spa "El algoritmo de COPY requiere de un bloqueo"
+ chi "å¤åˆ¶ç®—法需è¦é”定"
+ eng "COPY algorithm requires a lock"
+ spa "El algoritmo de COPY requiere de un bloqueo"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_PARTITION
- eng "Partition specific operations do not yet support LOCK/ALGORITHM"
- spa "Las operaciones específicas de partición aún no soportan LOCK/ALGORITHM"
+ chi "分区特定æ“作尚ä¸æ”¯æŒé”定/算法"
+ eng "Partition specific operations do not yet support LOCK/ALGORITHM"
+ spa "Las operaciones específicas de partición aún no soportan LOCK/ALGORITHM"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME
- eng "Columns participating in a foreign key are renamed"
- spa "Las columnas que participan en una clave foránea son renombradas"
+ chi "å‚与外键的列被更å"
+ eng "Columns participating in a foreign key are renamed"
+ spa "Las columnas que participan en una clave foránea son renombradas"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE
- eng "Cannot change column type"
- spa "No puedo cambiar el tipo de la columna"
+ chi "无法更改列类型"
+ eng "Cannot change column type"
+ spa "No puedo cambiar el tipo de la columna"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK
- eng "Adding foreign keys needs foreign_key_checks=OFF"
- spa "El añadir claves foráneas necesita de foreign_key_checks=OFF"
+ chi "添加外键需è¦figner_key_checks = OFF"
+ eng "Adding foreign keys needs foreign_key_checks=OFF"
+ spa "El añadir claves foráneas necesita de foreign_key_checks=OFF"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_IGNORE
- eng "Creating unique indexes with IGNORE requires COPY algorithm to remove duplicate rows"
- spa "El crear ídices únicos con IGNORE requiere del algoritmo COPY para quitar filas duplicadas"
+ chi "使用忽略创建唯一索引需è¦å¤åˆ¶ç®—法删除é‡å¤è¡Œ"
+ eng "Creating unique indexes with IGNORE requires COPY algorithm to remove duplicate rows"
+ spa "El crear ídices únicos con IGNORE requiere del algoritmo COPY para quitar filas duplicadas"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK
- eng "Dropping a primary key is not allowed without also adding a new primary key"
- spa "Eliminar una clave primaria no está permitido sin añadir también una nueva clave primaria"
+ chi "ä¸å…许删除主键,而ä¸æ·»åŠ æ–°çš„主键"
+ eng "Dropping a primary key is not allowed without also adding a new primary key"
+ spa "Eliminar una clave primaria no está permitido sin añadir también una nueva clave primaria"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC
- eng "Adding an auto-increment column requires a lock"
- spa "Para añadir una columna auto-incrementable se requiere de un bloqueo"
+ chi "添加自动增é‡åˆ—需è¦é”定"
+ eng "Adding an auto-increment column requires a lock"
+ spa "Para añadir una columna auto-incrementable se requiere de un bloqueo"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS
- eng "Cannot replace hidden FTS_DOC_ID with a user-visible one"
- spa "No puedo reemplazar FTS_DOC_ID oculta con una visible-por-usuario"
+ chi "无法使用用户å¯è§çš„替æ¢éšè—çš„FTS_DOC_ID"
+ eng "Cannot replace hidden FTS_DOC_ID with a user-visible one"
+ spa "No puedo reemplazar FTS_DOC_ID oculta con una visible-por-usuario"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_CHANGE_FTS
- eng "Cannot drop or rename FTS_DOC_ID"
- spa "No puedo eliminar o renombrar FTS_DOC_ID"
+ chi "无法删除或é‡å‘½åFTS_DOC_ID"
+ eng "Cannot drop or rename FTS_DOC_ID"
+ spa "No puedo eliminar o renombrar FTS_DOC_ID"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FTS
- eng "Fulltext index creation requires a lock"
- spa "La creación de un índice Fulltext requiere de un bloqueo"
+ chi "fulltext索引创建需è¦é”定"
+ eng "Fulltext index creation requires a lock"
+ spa "La creación de un índice Fulltext requiere de un bloqueo"
ER_SQL_SLAVE_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE
- eng "sql_slave_skip_counter can not be set when the server is running with GTID_MODE = ON. Instead, for each transaction that you want to skip, generate an empty transaction with the same GTID as the transaction"
- spa "sql_slave_skip_counter no se puede poner cuando el servidor se ejecuta con GTID_MODE = ON. En su lugar, para cada transacción que desees saltar, genera una transacción vacía con el mismo GTID que la transacción"
+ chi "使用GTID_Mode = ONè¿è¡Œæ—¶ï¼Œæ— æ³•è®¾ç½®SQL_SLAVE_SKIP_COUNTER。相å,对于è¦è·³è¿‡çš„æ¯ä¸ªäº‹åŠ¡ï¼Œä½¿ç”¨ä¸Žäº‹åŠ¡ç›¸åŒçš„GTID生æˆç©ºäº‹åŠ¡"
+ eng "sql_slave_skip_counter can not be set when the server is running with GTID_MODE = ON. Instead, for each transaction that you want to skip, generate an empty transaction with the same GTID as the transaction"
+ spa "sql_slave_skip_counter no se puede poner cuando el servidor se ejecuta con GTID_MODE = ON. En su lugar, para cada transacción que desees saltar, genera una transacción vacía con el mismo GTID que la transacción"
ER_DUP_UNKNOWN_IN_INDEX 23000
- cze "Zdvojený klÃ­Ä (Äíslo klíÄe '%-.192s')"
- dan "Flere ens nøgler for indeks '%-.192s'"
- nla "Dubbele ingang voor zoeksleutel '%-.192s'"
- eng "Duplicate entry for key '%-.192s'"
- est "Kattuv väärtus võtmele '%-.192s'"
- fre "Duplicata du champ pour la clef '%-.192s'"
- ger "Doppelter Eintrag für Schlüssel '%-.192s'"
- greek "Διπλή εγγÏαφή για το κλειδί '%-.192s'"
- hun "Duplikalt bejegyzes a '%-.192s' kulcs szerint"
- ita "Valore duplicato per la chiave '%-.192s'"
- jpn "ã¯ç´¢å¼• '%-.192s' ã§é‡è¤‡ã—ã¦ã„ã¾ã™ã€‚"
- kor "ì¤‘ë³µëœ ìž…ë ¥ ê°’: key '%-.192s'"
- nor "Like verdier for nøkkel '%-.192s'"
- norwegian-ny "Like verdiar for nykkel '%-.192s'"
- pol "Powtórzone wystąpienie dla klucza '%-.192s'"
- por "Entrada duplicada para a chave '%-.192s'"
- rum "Cimpul e duplicat pentru cheia '%-.192s'"
- rus "ДублирующаÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ по ключу '%-.192s'"
- serbian "Dupliran unos za kljuÄ '%-.192s'"
- slo "Opakovaný kÄ¾ÃºÄ (Äíslo kľúÄa '%-.192s')"
- spa "Entrada duplicada para la clave '%-.192s'"
- swe "Dublett för nyckel '%-.192s'"
- ukr "Дублюючий Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° '%-.192s'"
+ chi "索引的é‡å¤æ¡ç›®'%-.192s'"
+ cze "Zdvojený klÃ­Ä (Äíslo klíÄe '%-.192s')"
+ dan "Flere ens nøgler for indeks '%-.192s'"
+ eng "Duplicate entry for key '%-.192s'"
+ est "Kattuv väärtus võtmele '%-.192s'"
+ fre "Duplicata du champ pour la clef '%-.192s'"
+ ger "Doppelter Eintrag für Schlüssel '%-.192s'"
+ greek "Διπλή εγγÏαφή για το κλειδί '%-.192s'"
+ hun "Duplikalt bejegyzes a '%-.192s' kulcs szerint"
+ ita "Valore duplicato per la chiave '%-.192s'"
+ jpn "ã¯ç´¢å¼• '%-.192s' ã§é‡è¤‡ã—ã¦ã„ã¾ã™ã€‚"
+ kor "ì¤‘ë³µëœ ìž…ë ¥ ê°’: key '%-.192s'"
+ nla "Dubbele ingang voor zoeksleutel '%-.192s'"
+ nor "Like verdier for nøkkel '%-.192s'"
+ norwegian-ny "Like verdiar for nykkel '%-.192s'"
+ pol "Powtórzone wystąpienie dla klucza '%-.192s'"
+ por "Entrada duplicada para a chave '%-.192s'"
+ rum "Cimpul e duplicat pentru cheia '%-.192s'"
+ rus "ДублирующаÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ по ключу '%-.192s'"
+ serbian "Dupliran unos za kljuÄ '%-.192s'"
+ slo "Opakovaný kÄ¾ÃºÄ (Äíslo kľúÄa '%-.192s')"
+ spa "Entrada duplicada para la clave '%-.192s'"
+ swe "Dublett för nyckel '%-.192s'"
+ ukr "Дублюючий Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° '%-.192s'"
ER_IDENT_CAUSES_TOO_LONG_PATH
- eng "Long database name and identifier for object resulted in path length exceeding %d characters. Path: '%s'"
- spa "Nombre largo de base de datos e identificador para objeto resultó en que el tamaño de la ruta excedió de %d caracteres. Ruta: '%s'"
+ chi "对象的长数æ®åº“å称和标识符导致路径长度超过%d字符。路径:'%s'"
+ eng "Long database name and identifier for object resulted in path length exceeding %d characters. Path: '%s'"
+ spa "Nombre largo de base de datos e identificador para objeto resultó en que el tamaño de la ruta excedió de %d caracteres. Ruta: '%s'"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOT_NULL
- eng "cannot convert NULL to non-constant DEFAULT"
- spa "no puedo convertir NULL a DEFAULT no-constante"
+ chi "无法将null转æ¢ä¸ºéžå¸¸é‡é»˜è®¤å€¼"
+ eng "cannot convert NULL to non-constant DEFAULT"
+ spa "no puedo convertir NULL a DEFAULT no-constante"
ER_MUST_CHANGE_PASSWORD_LOGIN
- eng "Your password has expired. To log in you must change it using a client that supports expired passwords"
- bgn "Паролата ви е изтекла. За да влезете Ñ‚Ñ€Ñбва да Ñ Ñмените използвайки клиент който поддрържа такива пароли"
- rum "Parola ta a expirat. Pentru a te loga, trebuie sa o schimbi folosind un client ce suporta parole expirate"
- spa "Su contraseña ha expirado. Para ingresar, vd debe de cambiarla usando un cliente que soporte contraseñas expiradas"
+ bgn "Паролата ви е изтекла. За да влезете Ñ‚Ñ€Ñбва да Ñ Ñмените използвайки клиент който поддрържа такива пароли"
+ chi "您的密ç å·²è¿‡æœŸã€‚è¦ç™»å½•æ‚¨å¿…须使用支æŒè¿‡æœŸå¯†ç çš„客户端更改它"
+ eng "Your password has expired. To log in you must change it using a client that supports expired passwords"
+ rum "Parola ta a expirat. Pentru a te loga, trebuie sa o schimbi folosind un client ce suporta parole expirate"
+ spa "Su contraseña ha expirado. Para ingresar, vd debe de cambiarla usando un cliente que soporte contraseñas expiradas"
ER_ROW_IN_WRONG_PARTITION
- eng "Found a row in wrong partition %s"
- spa "Hallada una fila en partición equivocada %s"
- swe "Hittade en rad i fel partition %s"
+ chi "在错误分区%s中找到了一行"
+ eng "Found a row in wrong partition %s"
+ spa "Hallada una fila en partición equivocada %s"
+ swe "Hittade en rad i fel partition %s"
ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX
- eng "Cannot schedule event %s, relay-log name %s, position %s to Worker thread because its size %lu exceeds %lu of slave_pending_jobs_size_max"
- spa "No puedo organizar evento %s, nombre de historial (log)-reenvío %s, posiciona %s a hilo (thread) de Trabajador porque su tamaño %lu excede %lu de slave_pending_jobs_size_max"
+ chi "无法安排事件%s,中继日志å称%s,position%s对工作线程,因为它的大å°%lu超过了slave_pending_jobs_size_max (%lu)"
+ eng "Cannot schedule event %s, relay-log name %s, position %s to Worker thread because its size %lu exceeds %lu of slave_pending_jobs_size_max"
+ spa "No puedo organizar evento %s, nombre de historial (log)-reenvío %s, posiciona %s a hilo (thread) de Trabajador porque su tamaño %lu excede %lu de slave_pending_jobs_size_max"
ER_INNODB_NO_FT_USES_PARSER
- eng "Cannot CREATE FULLTEXT INDEX WITH PARSER on InnoDB table"
- spa "No puedo CREATE FULLTEXT INDEX WITH PARSER en tabla InnoDB"
+ chi "无法在InnoDB表上CREATE FULLTEXT INDEX WITH PARSER"
+ eng "Cannot CREATE FULLTEXT INDEX WITH PARSER on InnoDB table"
+ spa "No puedo CREATE FULLTEXT INDEX WITH PARSER en tabla InnoDB"
ER_BINLOG_LOGICAL_CORRUPTION
- eng "The binary log file '%s' is logically corrupted: %s"
- spa "El fichero/archivo de historial (log) binario '%s' está lógicamente corrupto: %s"
+ chi "二进制日志文件'%s'逻辑æŸå:%s"
+ eng "The binary log file '%s' is logically corrupted: %s"
+ spa "El fichero/archivo de historial (log) binario '%s' está lógicamente corrupto: %s"
ER_WARN_PURGE_LOG_IN_USE
- eng "file %s was not purged because it was being read by %d thread(s), purged only %d out of %d files"
- spa "el fchero %s no se ha purgado porque estaba siendo leído por hilo(s) (thread) %d, purgado sólo %d de %d ficheros/archivos"
+ chi "未清除文件%s,因为它被%d线程读å–,åªæ¸…除%d文件中的%d"
+ eng "file %s was not purged because it was being read by %d thread(s), purged only %d out of %d files"
+ spa "el fchero %s no se ha purgado porque estaba siendo leído por hilo(s) (thread) %d, purgado sólo %d de %d ficheros/archivos"
ER_WARN_PURGE_LOG_IS_ACTIVE
- eng "file %s was not purged because it is the active log file"
- spa "el fichero/archivo %s no fue purgado porque es el fichero/archivo activo de historial (log)"
+ chi "文件%s未清除,因为它是活动日志文件"
+ eng "file %s was not purged because it is the active log file"
+ spa "el fichero/archivo %s no fue purgado porque es el fichero/archivo activo de historial (log)"
ER_AUTO_INCREMENT_CONFLICT
- eng "Auto-increment value in UPDATE conflicts with internally generated values"
- spa "Valor de Auto-incremento en UPDATE está en conflicto con valores generados internamente"
-
+ chi "更新中的自动增é‡å€¼ä¸Žå†…部生æˆçš„值冲çª"
+ eng "Auto-increment value in UPDATE conflicts with internally generated values"
+ spa "Valor de Auto-incremento en UPDATE está en conflicto con valores generados internamente"
WARN_ON_BLOCKHOLE_IN_RBR
- eng "Row events are not logged for %s statements that modify BLACKHOLE tables in row format. Table(s): '%-.192s'"
- spa "Los eventos de fila no son puestos en historial (log) para sentencias %s que modifican tablas BLACKHOLE en formato de fila. Tabla(s): '%-.192s'"
+ chi "未记录行事件的%s语å¥ï¼Œè¯¥è¯­å¥ä»¥è¡Œæ ¼å¼ä¿®æ”¹BlackHole表。表:'%-.192s'"
+ eng "Row events are not logged for %s statements that modify BLACKHOLE tables in row format. Table(s): '%-.192s'"
+ spa "Los eventos de fila no son puestos en historial (log) para sentencias %s que modifican tablas BLACKHOLE en formato de fila. Tabla(s): '%-.192s'"
ER_SLAVE_MI_INIT_REPOSITORY
- eng "Slave failed to initialize master info structure from the repository"
- spa "El esclavo falló al inicializar información de estructura del maestro (master) desde el repositorio"
+ chi "从设备无法从存储库åˆå§‹åŒ–主信æ¯ç»“æž„"
+ eng "Slave failed to initialize master info structure from the repository"
+ spa "El esclavo falló al inicializar información de estructura del maestro (master) desde el repositorio"
ER_SLAVE_RLI_INIT_REPOSITORY
- eng "Slave failed to initialize relay log info structure from the repository"
- spa "El esclavo falló al inicializar estructura de información de historial (log) de reenvío desde el repositorio"
+ chi "从站无法从存储库åˆå§‹åŒ–中继日志信æ¯ç»“æž„"
+ eng "Slave failed to initialize relay log info structure from the repository"
+ spa "El esclavo falló al inicializar estructura de información de historial (log) de reenvío desde el repositorio"
ER_ACCESS_DENIED_CHANGE_USER_ERROR 28000
- eng "Access denied trying to change to user '%-.48s'@'%-.64s' (using password: %s). Disconnecting"
bgn "Отказан доÑтъп при опит за ÑмÑна към потребител %-.48s'@'%-.64s' (използвана парола: %s). ЗатварÑне на връзката"
+ chi "访问拒ç»å°è¯•æ›´æ”¹ä¸ºç”¨æˆ·'%-.48s'@'%-.64s'(使用密ç ï¼š%s)。断开连接"
+ eng "Access denied trying to change to user '%-.48s'@'%-.64s' (using password: %s). Disconnecting"
spa "Acceso denegado intentando cambiar a usuario '%-.48s'@'%-.64s' (usando contraseña: %s). Desconectando"
ER_INNODB_READ_ONLY
- eng "InnoDB is in read only mode"
- hindi "InnoDB केवल READ-ONLY मोड में है"
- spa "InnoDB está en modo de sólo lectura"
+ chi "innodb是åªè¯»æ¨¡å¼"
+ eng "InnoDB is in read only mode"
+ hindi "InnoDB केवल READ-ONLY मोड में है"
+ spa "InnoDB está en modo de sólo lectura"
ER_STOP_SLAVE_SQL_THREAD_TIMEOUT
- eng "STOP SLAVE command execution is incomplete: Slave SQL thread got the stop signal, thread is busy, SQL thread will stop once the current task is complete"
- spa "La ejecución del comando STOP SLAVE está incompleta: El hilo (thread) de SQL esclavo recibió la señal de parada, hilo (thread) ocupado, el hilo (thread) SQL se parará una vez que se complete la tarea actual"
+ chi "STOP SLAVE命令执行ä¸å®Œæ•´ï¼šä»ŽSQL线程获得åœæ­¢ä¿¡å·ï¼Œçº¿ç¨‹æ­£å¿™ï¼Œä¸€æ—¦å½“å‰ä»»åŠ¡å®ŒæˆåŽï¼ŒSQL线程将åœæ­¢"
+ eng "STOP SLAVE command execution is incomplete: Slave SQL thread got the stop signal, thread is busy, SQL thread will stop once the current task is complete"
+ spa "La ejecución del comando STOP SLAVE está incompleta: El hilo (thread) de SQL esclavo recibió la señal de parada, hilo (thread) ocupado, el hilo (thread) SQL se parará una vez que se complete la tarea actual"
ER_STOP_SLAVE_IO_THREAD_TIMEOUT
- eng "STOP SLAVE command execution is incomplete: Slave IO thread got the stop signal, thread is busy, IO thread will stop once the current task is complete"
- spa "La ejecución del comando STOP SLAVE está incompleta: El hilo (thread) de E/S esclavo recibió la señal de parada, hilo (thread) ocupado, el hilo (thread) de E/S se parará una vez que se complete la tarea actual"
+ chi "STOP SLAVE命令执行ä¸å®Œæ•´ï¼šä»ŽæœºåŠ¨ç¨‹çº¿ç¨‹å¾—到åœæ­¢ä¿¡å·ï¼Œçº¿ç¨‹å¾ˆå¿™ï¼Œä¸€æ—¦å½“å‰ä»»åŠ¡å®ŒæˆåŽï¼ŒIO线程将åœæ­¢ã€‚"
+ eng "STOP SLAVE command execution is incomplete: Slave IO thread got the stop signal, thread is busy, IO thread will stop once the current task is complete"
+ spa "La ejecución del comando STOP SLAVE está incompleta: El hilo (thread) de E/S esclavo recibió la señal de parada, hilo (thread) ocupado, el hilo (thread) de E/S se parará una vez que se complete la tarea actual"
ER_TABLE_CORRUPT
- eng "Operation cannot be performed. The table '%-.64s.%-.64s' is missing, corrupt or contains bad data"
- spa "La operación no se puede realizar. Falta la tabla '%-.64s.%-.64s', está corrupta o contiene datos malos"
+ chi "无法执行æ“作。表'%-.64s。%-.64s'丢失,æŸå或包å«ä¸è‰¯æ•°æ®"
+ eng "Operation cannot be performed. The table '%-.64s.%-.64s' is missing, corrupt or contains bad data"
+ spa "La operación no se puede realizar. Falta la tabla '%-.64s.%-.64s', está corrupta o contiene datos malos"
ER_TEMP_FILE_WRITE_FAILURE
- eng "Temporary file write failure"
- spa "Fallo al escribir fichero/archivo temporal"
+ chi "临时文件写入失败"
+ eng "Temporary file write failure"
+ spa "Fallo al escribir fichero/archivo temporal"
ER_INNODB_FT_AUX_NOT_HEX_ID
- eng "Upgrade index name failed, please use create index(alter table) algorithm copy to rebuild index"
- spa "Falló la mejora de nombre de índice. Por favor, use una copia del algoritmo de create index(alter table) para reconstruir el índice"
-
-
+ chi "å‡çº§ç´¢å¼•å称失败,请使用创建索引(ALTER TABLE)算法å¤åˆ¶æ¥é‡å»ºç´¢å¼•"
+ eng "Upgrade index name failed, please use create index(alter table) algorithm copy to rebuild index"
+ spa "Falló la mejora de nombre de índice. Por favor, use una copia del algoritmo de create index(alter table) para reconstruir el índice"
#
-# MariaDB error messages section starts here
#
+# MariaDB error messages section starts here
+
# The following is here to allow us to detect if there was missing
# error messages in the errmsg.sys file
ER_LAST_MYSQL_ERROR_MESSAGE
- eng ""
+ eng ""
# MariaDB error numbers starts from 1900
start-error-number 1900
ER_UNUSED_18
- eng ""
+ eng ""
ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
- eng "Function or expression '%s' cannot be used in the %s clause of %`s"
- spa "La Función o expresión '%s' no se puede usar en la cláusula %s de %`s"
+ chi "函数或表达å¼'%s'ä¸èƒ½ç”¨äºŽ%sçš„%`s"
+ eng "Function or expression '%s' cannot be used in the %s clause of %`s"
+ spa "La Función o expresión '%s' no se puede usar en la cláusula %s de %`s"
ER_UNUSED_19
- eng ""
+ eng ""
ER_PRIMARY_KEY_BASED_ON_GENERATED_COLUMN
- eng "Primary key cannot be defined upon a generated column"
- spa "La clave primaria no se puede definir sobre una columna generada"
+ chi "主键无法在生æˆçš„列上定义"
+ eng "Primary key cannot be defined upon a generated column"
+ spa "La clave primaria no se puede definir sobre una columna generada"
ER_KEY_BASED_ON_GENERATED_VIRTUAL_COLUMN
- eng "Key/Index cannot be defined on a virtual generated column"
- spa "Key/Index no se puede definir en una columna virtual generada"
+ chi "无法在虚拟生æˆçš„列上定义键/索引"
+ eng "Key/Index cannot be defined on a virtual generated column"
+ spa "Key/Index no se puede definir en una columna virtual generada"
ER_WRONG_FK_OPTION_FOR_GENERATED_COLUMN
- eng "Cannot define foreign key with %s clause on a generated column"
- spa "No puedo definir clave foránea con cláusula %s en una columna generada"
+ chi "无法在生æˆçš„列上定义%så­å¥çš„外键"
+ eng "Cannot define foreign key with %s clause on a generated column"
+ spa "No puedo definir clave foránea con cláusula %s en una columna generada"
ER_WARNING_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN
- eng "The value specified for generated column '%s' in table '%s' has been ignored"
- spa "El valor especificado para columna generada '%s' en la tabla '%s' ha sido ignorado"
+ chi "忽略了表'%s'中为生æˆçš„列'%s'指定的值已被忽略"
+ eng "The value specified for generated column '%s' in table '%s' has been ignored"
+ spa "El valor especificado para columna generada '%s' en la tabla '%s' ha sido ignorado"
ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN
- eng "This is not yet supported for generated columns"
- spa "Esto no está aún soportado para columnas generadas"
+ chi "生æˆçš„列尚未支æŒè¿™ä¸€ç‚¹"
+ eng "This is not yet supported for generated columns"
+ spa "Esto no está aún soportado para columnas generadas"
ER_UNUSED_20
- eng ""
+ eng ""
ER_UNUSED_21
- eng ""
+ eng ""
ER_UNSUPPORTED_ENGINE_FOR_GENERATED_COLUMNS
- eng "%s storage engine does not support generated columns"
- hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s COMPUTED कॉलमà¥à¤¸ को सपोरà¥à¤Ÿ नहीं करता"
- spa "El motor de almacenaje %s no soporta columnas generadas"
+ chi "%s存储引擎ä¸æ”¯æŒç”Ÿæˆçš„列"
+ eng "%s storage engine does not support generated columns"
+ hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s COMPUTED कॉलमà¥à¤¸ को सपोरà¥à¤Ÿ नहीं करता"
+ spa "El motor de almacenaje %s no soporta columnas generadas"
ER_UNKNOWN_OPTION
- eng "Unknown option '%-.64s'"
- hindi "अजà¥à¤žà¤¾à¤¤ विकलà¥à¤ª '%-.64s'"
- spa "Opción desconocida '%-.64s'"
+ chi "未知选项'%-.64s'"
+ eng "Unknown option '%-.64s'"
+ hindi "अजà¥à¤žà¤¾à¤¤ विकलà¥à¤ª '%-.64s'"
+ spa "Opción desconocida '%-.64s'"
ER_BAD_OPTION_VALUE
- eng "Incorrect value '%-.64T' for option '%-.64s'"
- hindi "गलत मान '%-.64T' विकलà¥à¤ª '%-.64s' के लिà¤"
- spa "Valor incorrecto '%-.64T' para opción '%-.64s'"
+ chi "值ä¸æ­£ç¡®'%-.64T'选项'%-.64s'"
+ eng "Incorrect value '%-.64T' for option '%-.64s'"
+ hindi "गलत मान '%-.64T' विकलà¥à¤ª '%-.64s' के लिà¤"
+ spa "Valor incorrecto '%-.64T' para opción '%-.64s'"
ER_UNUSED_6
- eng "You should never see it"
- spa "Nunca debería vd de ver esto"
+ chi "你永远ä¸åº”该看到它"
+ eng "You should never see it"
+ spa "Nunca debería vd de ver esto"
ER_UNUSED_7
- eng "You should never see it"
- spa "Nunca debería vd de ver esto"
+ chi "你永远ä¸åº”该看到它"
+ eng "You should never see it"
+ spa "Nunca debería vd de ver esto"
ER_UNUSED_8
- eng "You should never see it"
- spa "Nunca debería vd de ver esto"
+ chi "你永远ä¸åº”该看到它"
+ eng "You should never see it"
+ spa "Nunca debería vd de ver esto"
ER_DATA_OVERFLOW 22003
+ chi "转æ¢'%-.128s'到%-.32s时溢出。值截断"
eng "Got overflow when converting '%-.128s' to %-.32s. Value truncated"
spa "Obtenido desbordamiento al convertir '%-.128s' a %-.32s. Valor truncado"
ER_DATA_TRUNCATED 22003
+ chi "转æ¢'%-.128s'到%-.32s时值截断"
eng "Truncated value '%-.128s' when converting to %-.32s"
spa "Valor truncado '%-.128s' al convertir a %-.32s"
ER_BAD_DATA 22007
+ chi "éžæ³•å€¼'%-.128s',在转æ¢%-.32sæ—¶é‡åˆ°"
eng "Encountered illegal value '%-.128s' when converting to %-.32s"
spa "Encontrado valor ilegal '%-.128s' al convertir a %-.32s"
ER_DYN_COL_WRONG_FORMAT
+ chi "é‡åˆ°éžæ³•æ ¼å¼çš„动æ€åˆ—字符串"
eng "Encountered illegal format of dynamic column string"
spa "Encontrado formato ilegal de cadena en columna dinámica"
ER_DYN_COL_IMPLEMENTATION_LIMIT
+ chi "达到动æ€åˆ—实现é™åˆ¶"
eng "Dynamic column implementation limit reached"
spa "Alcanzado límite de implementación de columna dinámica"
ER_DYN_COL_DATA 22007
+ chi "éžæ³•å€¼ç”¨ä½œåŠ¨æ€åˆ—函数的å‚æ•°"
eng "Illegal value used as argument of dynamic column function"
spa "Valor ilegal usado como argumento de función de columna dinámica"
ER_DYN_COL_WRONG_CHARSET
+ chi "动æ€åˆ—包å«æœªçŸ¥å­—符集"
eng "Dynamic column contains unknown character set"
spa "Columna dinámica contiene conjunto desconocido de caracteres"
ER_ILLEGAL_SUBQUERY_OPTIMIZER_SWITCHES
+ chi "“in_to_existsâ€æˆ–'materialization'optimizer_switch标志中的至少一个必须是'å¼€å¯'"
eng "At least one of the 'in_to_exists' or 'materialization' optimizer_switch flags must be 'on'"
hindi "कम से कम 'in_to_exists' या 'materialization' optimizer_switch फà¥à¤²à¥ˆà¤— 'ON' होना चाहिà¤"
spa "Al menos una de las banderas de optimizer_switch 'in_to_exists' o 'materialization' debe de estar a 'on'"
ER_QUERY_CACHE_IS_DISABLED
+ chi "查询缓存已ç¦ç”¨ï¼ˆè°ƒæ•´å¤§å°æˆ–类似命令正在进行中);ç¨åŽé‡å¤æ­¤å‘½ä»¤"
eng "Query cache is disabled (resize or similar command in progress); repeat this command later"
spa "Caché de consulta (query) desactivada (el comando ajustar o similar está en proceso); repite este comando más tarde"
ER_QUERY_CACHE_IS_GLOBALY_DISABLED
+ chi "查询缓存全局ç¦ç”¨ï¼Œæ‚¨æ— æ³•ä¸ºæ­¤ä¼šè¯å¯ç”¨å®ƒ"
eng "Query cache is globally disabled and you can't enable it only for this session"
hindi "कà¥à¤µà¥‡à¤°à¥€ कैश गà¥à¤²à¥‹à¤¬à¤² सà¥à¤¤à¤° पर DISABLED है और आप इसे केवल सतà¥à¤° के लिठENABLE नहीं कर सकते"
spa "La caché de consulta (query) está desactivada de forma global y no puede activarla sólo para esta sesión"
ER_VIEW_ORDERBY_IGNORED
+ chi "查看'%-.192s'.'%-.192s's ORDER BYå­å¥è¢«å¿½ç•¥ï¼Œå› ä¸ºè¿˜æœ‰å…¶ä»–ORDER BYå­å¥"
eng "View '%-.192s'.'%-.192s' ORDER BY clause ignored because there is other ORDER BY clause already"
spa "Cláusula de vista '%-.192s'.'%-.192s' ORDER BY ignorada porque ya hay otra clásula ORDER BY"
ER_CONNECTION_KILLED 70100
+ chi "连接被æ€æ­»"
eng "Connection was killed"
hindi "कनेकà¥à¤¶à¤¨ को समापà¥à¤¤ कर दिया गया है"
spa "La conexión fue matada"
ER_UNUSED_12
+ chi "你永远ä¸åº”该看到它"
eng "You should never see it"
spa "Nunca debería vd de ver esto"
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SKIP_REPLICATION
+ chi "无法修改事务中的@@session.skip_replication"
eng "Cannot modify @@session.skip_replication inside a transaction"
spa "No puedo modificar @@session.skip_replication dentro de una transacción"
ER_STORED_FUNCTION_PREVENTS_SWITCH_SKIP_REPLICATION
+ chi "无法修改存储函数或触å‘器内的@@session.skip_replication"
eng "Cannot modify @@session.skip_replication inside a stored function or trigger"
spa "No puedo modificar @@session.skip_replication dentro de una función almacenada o disparador"
ER_QUERY_EXCEEDED_ROWS_EXAMINED_LIMIT
+ chi "查询执行被中断。查询检查至少%llu行,超过é™åˆ¶è¡Œï¼ˆ%llu)。查询结果å¯èƒ½æ˜¯ä¸å®Œæ•´çš„"
eng "Query execution was interrupted. The query examined at least %llu rows, which exceeds LIMIT ROWS EXAMINED (%llu). The query result may be incomplete"
spa "Se ha interrumpido la ejecución de la consulta (query). La consulta (query) examinó al menos %llu filas, lo cual excede LIMIT ROWS EXAMINED (%llu). El resultado de la consulta (query) puede estar incompleto"
ER_NO_SUCH_TABLE_IN_ENGINE 42S02
+ chi "表'%-.192s.%-.192s'在引擎中ä¸å­˜åœ¨"
eng "Table '%-.192s.%-.192s' doesn't exist in engine"
hindi "टेबल '%-.192s.%-.192s' इंजन में मौजूद नहीं है"
spa "La tabla '%-.192s.%-.192s' no existe en el motor"
swe "Det finns ingen tabell som heter '%-.192s.%-.192s' i handlern"
ER_TARGET_NOT_EXPLAINABLE
+ chi "目标未è¿è¡Œå¯è§£é‡Šçš„命令"
eng "Target is not running an EXPLAINable command"
spa "El objetivo no está ejecutando un comando EXPLAINable"
ER_CONNECTION_ALREADY_EXISTS
+ chi "连接'%.*s'与现有连接'%.*s'冲çª"
eng "Connection '%.*s' conflicts with existing connection '%.*s'"
spa "La conexión '%.*s' está en conflicto con la conexión existente '%.*s'"
ER_MASTER_LOG_PREFIX
+ chi "Master'%.*s':"
eng "Master '%.*s': "
spa "Maestro (master) '%.*s': "
ER_CANT_START_STOP_SLAVE
+ chi "ä¸èƒ½%sSLAVE'%.*s'"
eng "Can't %s SLAVE '%.*s'"
spa "No puedo %s ESCLAVO '%.*s'"
ER_SLAVE_STARTED
+ chi "SLAVE '%.*s'开始了"
eng "SLAVE '%.*s' started"
spa "ESCLAVO '%.*s' arrancado"
ER_SLAVE_STOPPED
+ chi "slave'%.*s'åœæ­¢äº†"
eng "SLAVE '%.*s' stopped"
spa "ESCLAVO '%.*s' parado"
ER_SQL_DISCOVER_ERROR
+ chi "引擎%s无法å‘现表%`-.192s.%`-.192s,'%s'"
eng "Engine %s failed to discover table %`-.192s.%`-.192s with '%s'"
spa "El motor %s no pudo descubr la tabla %`-.192s.%`-.192s con '%s'"
ER_FAILED_GTID_STATE_INIT
+ chi "åˆå§‹åŒ–å¤åˆ¶GTID状æ€å¤±è´¥"
eng "Failed initializing replication GTID state"
spa "Fallo inicializando estado de réplica GTID"
ER_INCORRECT_GTID_STATE
+ chi "无法解æžGTID列表"
eng "Could not parse GTID list"
spa "No pude analizar la lista GTID"
ER_CANNOT_UPDATE_GTID_STATE
+ chi "无法更新Replication Slave GTID状æ€"
eng "Could not update replication slave gtid state"
spa "No pude actualizar estado gtid de esclavo de réplica"
ER_DUPLICATE_GTID_DOMAIN
- eng "GTID %u-%u-%llu and %u-%u-%llu conflict (duplicate domain id %u)"
- spa "Conflicto GTID %u-%u-%llu y %u-%u-%llu (duplicado id de dominio %u)"
+ chi "GTID %u-%u-%lluå’Œ%u-%u-%llu冲çªï¼ˆé‡å¤åŸŸID%u)"
+ eng "GTID %u-%u-%llu and %u-%u-%llu conflict (duplicate domain id %u)"
+ spa "Conflicto GTID %u-%u-%llu y %u-%u-%llu (duplicado id de dominio %u)"
ER_GTID_OPEN_TABLE_FAILED
+ chi "未能打开%s.%s"
eng "Failed to open %s.%s"
ger "Öffnen von %s.%s fehlgeschlagen"
spa "No pude abrir %s.%s"
ER_GTID_POSITION_NOT_FOUND_IN_BINLOG
- eng "Connecting slave requested to start from GTID %u-%u-%llu, which is not in the master's binlog"
+ chi "连接从站请求从GTID%u-%u-%llu开始,这ä¸åœ¨Masterçš„Binlog中"
+ eng "Connecting slave requested to start from GTID %u-%u-%llu, which is not in the master's binlog"
spa "Se ha requerido que conectar esclavo arranque desde GTID %u-%u-%llu, el cual no está en el binlog del maestro (master)"
ER_CANNOT_LOAD_SLAVE_GTID_STATE
- eng "Failed to load replication slave GTID position from table %s.%s"
+ chi "无法从表%s中加载Replication Slave GTIDä½ç½®ã€‚%s"
+ eng "Failed to load replication slave GTID position from table %s.%s"
spa "No pude cargar posición GTID de esclavo de réplica desde la tabla %s.%s"
ER_MASTER_GTID_POS_CONFLICTS_WITH_BINLOG
- eng "Specified GTID %u-%u-%llu conflicts with the binary log which contains a more recent GTID %u-%u-%llu. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos"
+ chi "指定的GTID%u-%u-%llu与二进制日志冲çªï¼Œå…¶ä¸­åŒ…å«æ›´æ–°çš„GTID%u-%u-%llu。如果使用master_gtid_pos = current_pos,则Binlogä½ç½®å°†è¦†ç›–@@gtid_slave_pos的新值"
+ eng "Specified GTID %u-%u-%llu conflicts with the binary log which contains a more recent GTID %u-%u-%llu. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos"
spa "El especificado GTID %u-%u-%llu está en conflicto con el historial (log) binario el cual contiene un más reciente GTID %u-%u-%llu. Si se usa MASTER_GTID_POS=CURRENT_POS, la posición de binlog sobreescribirá el nuevo valor de @@gtid_slave_pos"
ER_MASTER_GTID_POS_MISSING_DOMAIN
- eng "Specified value for @@gtid_slave_pos contains no value for replication domain %u. This conflicts with the binary log which contains GTID %u-%u-%llu. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos"
+ chi "指定值为@@gtid_slave_posä¸åŒ…å«å¤åˆ¶åŸŸ%u的值。这与二进制日志冲çªï¼Œå…¶ä¸­åŒ…å«gtid%u-%u-%llu。如果使用master_gtid_pos = current_pos,则Binlogä½ç½®å°†è¦†ç›–@@ gtid_slave_pos的新值"
+ eng "Specified value for @@gtid_slave_pos contains no value for replication domain %u. This conflicts with the binary log which contains GTID %u-%u-%llu. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos"
spa "El valor especificado para @@gtid_slave_pos no contiene valor para dominio de réplica %u. Esto está en conflicto con el historial (log) binario el cual contiene un GTID %u-%u-%llu. Si se usa MASTER_GTID_POS=CURRENT_POS, la posición binlog sobreescribirá el nuevo valor de @@gtid_slave_pos"
ER_UNTIL_REQUIRES_USING_GTID
- eng "START SLAVE UNTIL master_gtid_pos requires that slave is using GTID"
+ chi "å¯åŠ¨ä»Žç«™ï¼Œç›´åˆ°master_gtid_posè¦æ±‚从站使用gtid"
+ eng "START SLAVE UNTIL master_gtid_pos requires that slave is using GTID"
spa "START SLAVE UNTIL master_gtid_pos requiere que esclavo esté usando GTID"
ER_GTID_STRICT_OUT_OF_ORDER
- eng "An attempt was made to binlog GTID %u-%u-%llu which would create an out-of-order sequence number with existing GTID %u-%u-%llu, and gtid strict mode is enabled"
+ chi "å°è¯•å¯¹Binlog GTID%u-%u-%llu进行,这将创建具有现有GTID%u-%u-%llu的订å•æ— åºåºåˆ—å·ï¼Œå¹¶ä¸”å¯ç”¨äº†GTID严格模å¼"
+ eng "An attempt was made to binlog GTID %u-%u-%llu which would create an out-of-order sequence number with existing GTID %u-%u-%llu, and gtid strict mode is enabled"
spa "Se ha intentado hacer binlog de GTID %u-%u-%llu lo cual crearía un número de secuencia fuera de orden con el existente GTID %u-%u-%llu y está activado gtid en modo estricto"
ER_GTID_START_FROM_BINLOG_HOLE
- eng "The binlog on the master is missing the GTID %u-%u-%llu requested by the slave (even though a subsequent sequence number does exist), and GTID strict mode is enabled"
+ chi "主机上的Binlog缺少从站所需请求的GTID%u-%u-%llu(å³ä½¿å­˜åœ¨åŽç»­çš„åºåˆ—å·ï¼‰ï¼Œå¹¶å¯ç”¨GTID严格模å¼"
+ eng "The binlog on the master is missing the GTID %u-%u-%llu requested by the slave (even though a subsequent sequence number does exist), and GTID strict mode is enabled"
spa "Al binlog del maestro (master) le falta el GTID %u-%u-%llu requerido por el esclavo (incluso aunque existe un número posterior de secuencia) y está activado GTID en modo estricto"
ER_SLAVE_UNEXPECTED_MASTER_SWITCH
- eng "Unexpected GTID received from master after reconnect. This normally indicates that the master server was replaced without restarting the slave threads. %s"
+ chi "é‡æ–°è¿žæŽ¥åŽï¼Œä»Žmaster收到æ„外的GTID。这通常表示在ä¸é‡æ–°å¯åŠ¨ä»Žçº¿ç¨‹çš„情况下替æ¢ä¸»æœåŠ¡å™¨ã€‚%s."
+ eng "Unexpected GTID received from master after reconnect. This normally indicates that the master server was replaced without restarting the slave threads. %s"
spa "Se ha recibido un GTID inesperado desde el maestro (master) tras reconectar. Esto indica normalmente que el servidor maestro (master) ha sido reemplazado sin rearrancar los hilos (threads) del esclavo. %s"
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_GTID_DOMAIN_ID_SEQ_NO
+ chi "无法修改@@sessient.gtid_domain_id或@@session.gtid_seq_no"
eng "Cannot modify @@session.gtid_domain_id or @@session.gtid_seq_no inside a transaction"
spa "No puedo modificar @@session.gtid_domain_id o @@session.gtid_seq_no dentro de una transacción"
ER_STORED_FUNCTION_PREVENTS_SWITCH_GTID_DOMAIN_ID_SEQ_NO
+ chi "无法修改@@sessient.gtid_domain_id或@@session.gtid_seq_no或触å‘器"
eng "Cannot modify @@session.gtid_domain_id or @@session.gtid_seq_no inside a stored function or trigger"
spa "No puedo modificar @@session.gtid_domain_id o @@session.gtid_seq_no dentro de una función almacenada o de un disparador"
ER_GTID_POSITION_NOT_FOUND_IN_BINLOG2
- eng "Connecting slave requested to start from GTID %u-%u-%llu, which is not in the master's binlog. Since the master's binlog contains GTIDs with higher sequence numbers, it probably means that the slave has diverged due to executing extra erroneous transactions"
+ chi "连接从站请求从GTID%u-%u-%llu开始,这ä¸åœ¨Masterçš„Binlog中。由于Masterçš„Binlog包å«å…·æœ‰æ›´é«˜åºåˆ—å·çš„GTID,因此它å¯èƒ½æ„味ç€ç”±äºŽæ‰§è¡Œé¢å¤–错误的交易,因此slaveå·²ç»åˆ†æ­§"
+ eng "Connecting slave requested to start from GTID %u-%u-%llu, which is not in the master's binlog. Since the master's binlog contains GTIDs with higher sequence numbers, it probably means that the slave has diverged due to executing extra erroneous transactions"
spa "Se ha requerido arrancar la conexión a esclavo desde GTID %u-%u-%llu, el cual no está en el binlog del maestro (master). Ya que el binlog del maestro (master) contiene GTIDs con números mayores de secuencia, es probable que indique que el esclavo diverge debido a ejecutar transacciones extra erróneas"
ER_BINLOG_MUST_BE_EMPTY
- eng "This operation is not allowed if any GTID has been logged to the binary log. Run RESET MASTER first to erase the log"
+ chi "如果已将任何GTID记录到二进制日志,则ä¸å…许此æ“作。首先è¿è¡ŒRESET MASTER擦除日志"
+ eng "This operation is not allowed if any GTID has been logged to the binary log. Run RESET MASTER first to erase the log"
spa "Esta operación no está permitida si cualquier GTID ha sido puesto en historial (log) binario. Ejecuta primero RESET MASTER para borrar el historial (log)"
ER_NO_SUCH_QUERY
+ chi "未知查询ID:%lld"
eng "Unknown query id: %lld"
ger "Unbekannte Abfrage-ID: %lld"
hindi "अजà¥à¤žà¤¾à¤¤ कà¥à¤µà¥‡à¤°à¥€ ID: %lld"
rus "ÐеизвеÑтный номер запроÑа: %lld"
spa "Id desconocido de consulta (query): %lld"
ER_BAD_BASE64_DATA
- eng "Bad base64 data as position %u"
+ chi "错误Base64æ•°æ®ä½œä¸ºä½ç½®%u"
+ eng "Bad base64 data as position %u"
spa "Datos base64 malos en posición %u"
ER_INVALID_ROLE OP000
- eng "Invalid role specification %`s"
- hindi "अमानà¥à¤¯ रोल विनिरà¥à¤¦à¥‡à¤¶ %`s"
- rum "Rolul %`s este invalid"
- spa "Especificación inválida de rol %`s"
+ chi "无效的角色规范%`s"
+ eng "Invalid role specification %`s"
+ hindi "अमानà¥à¤¯ रोल विनिरà¥à¤¦à¥‡à¤¶ %`s"
+ rum "Rolul %`s este invalid"
+ spa "Especificación inválida de rol %`s"
ER_INVALID_CURRENT_USER 0L000
- eng "The current user is invalid"
- hindi "वरà¥à¤¤à¤®à¤¾à¤¨ यूज़र अमानà¥à¤¯ है"
- rum "Utilizatorul curent este invalid"
+ chi "当å‰ç”¨æˆ·æ— æ•ˆ"
+ eng "The current user is invalid"
+ hindi "वरà¥à¤¤à¤®à¤¾à¤¨ यूज़र अमानà¥à¤¯ है"
+ rum "Utilizatorul curent este invalid"
spa "El usuario en curso no es válido"
ER_CANNOT_GRANT_ROLE
- eng "Cannot grant role '%s' to: %s"
- hindi "रोल '%s', %s को पà¥à¤°à¤¦à¤¾à¤¨ नहीं कर सकते"
- rum "Rolul '%s' nu poate fi acordat catre: %s"
+ chi "无法将角色'%s'授予:%s"
+ eng "Cannot grant role '%s' to: %s"
+ hindi "रोल '%s', %s को पà¥à¤°à¤¦à¤¾à¤¨ नहीं कर सकते"
+ rum "Rolul '%s' nu poate fi acordat catre: %s"
spa "No puedo conceder rol '%s' a: %s"
ER_CANNOT_REVOKE_ROLE
- eng "Cannot revoke role '%s' from: %s"
- hindi "रोल '%s', %s से हटाया नहीं जा सका"
- rum "Rolul '%s' nu poate fi revocat de la: %s"
+ chi "无法撤消æ¥è‡ªï¼š%s的角色'%s'"
+ eng "Cannot revoke role '%s' from: %s"
+ hindi "रोल '%s', %s से हटाया नहीं जा सका"
+ rum "Rolul '%s' nu poate fi revocat de la: %s"
spa "No puedo revocar rol '%s' desde: %s"
ER_CHANGE_SLAVE_PARALLEL_THREADS_ACTIVE
- eng "Cannot change @@slave_parallel_threads while another change is in progress"
+ chi "无法更改@@slave_parallel_threads,而å¦ä¸€ä¸ªæ›´æ”¹æ­£åœ¨è¿›è¡Œä¸­"
+ eng "Cannot change @@slave_parallel_threads while another change is in progress"
spa "No puedo cambiar @@slave_parallel_threads mientras otro cambio esté en proceso"
ER_PRIOR_COMMIT_FAILED
- eng "Commit failed due to failure of an earlier commit on which this one depends"
+ chi "由于早期æ交的失败å–决于ä¾èµ–于哪个ä¾èµ–性,æ交失败"
+ eng "Commit failed due to failure of an earlier commit on which this one depends"
spa "Ha fallado la acometida (commit) debido a un fallo previo en acometida (commit) de la que depende ésta"
ER_IT_IS_A_VIEW 42S02
+ chi "'%-.192s'是一个VIEW"
eng "'%-.192s' is a view"
hindi "'%-.192s' à¤à¤• VIEW है"
spa "'%-.192s' es una vista"
ER_SLAVE_SKIP_NOT_IN_GTID
- eng "When using parallel replication and GTID with multiple replication domains, @@sql_slave_skip_counter can not be used. Instead, setting @@gtid_slave_pos explicitly can be used to skip to after a given GTID position"
+ chi "使用并行å¤åˆ¶å’Œå¸¦æœ‰å¤šä¸ªå¤åˆ¶åŸŸçš„GTID时,无法使用@@SQL_SLAVE_SKIP_COUNTER。相å,å¯ä»¥ä½¿ç”¨æ˜Žç¡®è®¾ç½®@@gtid_slave_pos以在给定的gtidä½ç½®ä¹‹åŽè·³åˆ°"
+ eng "When using parallel replication and GTID with multiple replication domains, @@sql_slave_skip_counter can not be used. Instead, setting @@gtid_slave_pos explicitly can be used to skip to after a given GTID position"
spa "Al usar réplica paralela y GTID con múltiples dominios de réplica, no se puede usar @@sql_slave_skip_counter. En su lugar, poner @@gtid_slave_pos de forma explícita se puede usar para saltar tras una posición GTID dada"
ER_TABLE_DEFINITION_TOO_BIG
+ chi "表%`s的定义太大了"
eng "The definition for table %`s is too big"
hindi "टेबल %`s की परिभाषा बहà¥à¤¤ बड़ी है"
spa "La definición para la tabla %`s es demasiado larga"
ER_PLUGIN_INSTALLED
+ chi "æ’件'%-.192s'已安装"
eng "Plugin '%-.192s' already installed"
hindi "पà¥à¤²à¤—-इन '%-.192s' पहले से ही इनà¥à¤¸à¥à¤Ÿà¥‰à¤²à¥à¤¡ है"
rus "Плагин '%-.192s' уже уÑтановлен"
spa "Ya instalado el enchufe (plugin) '%-.192s'"
ER_STATEMENT_TIMEOUT 70100
+ chi "查询执行中断(超出MAX_STATEMENT_TIME)"
eng "Query execution was interrupted (max_statement_time exceeded)"
spa "Se ha interrumpido la ejecución de una consulta (query) (excedido max_statement_time)
ER_SUBQUERIES_NOT_SUPPORTED 42000
+ chi "%sä¸æ”¯æŒå­æŸ¥è¯¢æˆ–存储的函数"
eng "%s does not support subqueries or stored functions"
spa "%s no soporta subconsultas (subqueries) o funciones almacenadas"
ER_SET_STATEMENT_NOT_SUPPORTED 42000
+ chi "系统å˜é‡%.200s无法在set语å¥ä¸­è®¾ç½®ã€‚“"
eng "The system variable %.200s cannot be set in SET STATEMENT."
spa "La variable del sistema %.200s no se puede poner en SET STATEMENT."
ER_UNUSED_9
+ chi "你永远ä¸åº”该看到它"
eng "You should never see it"
spa "Nunca debería vd de ver esto"
ER_USER_CREATE_EXISTS
+ chi "无法创建用户'%-.64s'@'%-.64s';它已ç»å­˜åœ¨"
eng "Can't create user '%-.64s'@'%-.64s'; it already exists"
hindi "यूज़र '%-.64s'@'%-.64s' को नहीं बना सकते; यह पहले से ही मौजूद है"
spa "No puedo crear usuario '%-.64s'@'%-.64s'; ya existe"
ER_USER_DROP_EXISTS
+ chi "无法删除用户'%-.64s'@'%-.64s';它ä¸å­˜åœ¨"
eng "Can't drop user '%-.64s'@'%-.64s'; it doesn't exist"
hindi "यूज़र '%-.64s'@'%-.64s' को डà¥à¤°à¥‰à¤ª नहीं कर सकते; यह मौजूद नहीं है"
spa "No puedo eliminar usuario '%-.64s'@'%-.64s'; no existe"
ER_ROLE_CREATE_EXISTS
+ chi "无法创建角色'%-.64s';它已ç»å­˜åœ¨"
eng "Can't create role '%-.64s'; it already exists"
hindi "रोल '%-.64s' को नहीं बना सकते; यह पहले से ही मौजूद है"
spa "No puedo crear rol '%-.64s'; ya existe"
ER_ROLE_DROP_EXISTS
+ chi "无法删除'%-.64s'。它ä¸å­˜åœ¨"
eng "Can't drop role '%-.64s'; it doesn't exist"
hindi "रोल '%-.64s' को डà¥à¤°à¥‰à¤ª नहीं कर सकते; यह मौजूद नहीं है"
spa "No puedo eliminar rol '%-.64s'; no existe"
ER_CANNOT_CONVERT_CHARACTER
+ chi "无法将'%s'字符0x转æ¢ä¸º0x%-.64s到'%s'"
eng "Cannot convert '%s' character 0x%-.64s to '%s'"
spa "No puedo convertir '%s' carácter 0x%-.64s a '%s'"
ER_INVALID_DEFAULT_VALUE_FOR_FIELD 22007
+ chi "列的默认值ä¸æ­£ç¡®'%-.128T' '%.192s'"
eng "Incorrect default value '%-.128T' for column '%.192s'"
hindi "गलत डिफ़ॉलà¥à¤Ÿ मान '%-.128T' कॉलम '%.192s' के लिà¤"
spa "Valor por defecto incorrecto '%-.128T' para columna '%.192s'"
ER_KILL_QUERY_DENIED_ERROR
+ chi "ä½ ä¸æ˜¯æŸ¥è¯¢%lu的所有者"
eng "You are not owner of query %lu"
ger "Sie sind nicht Eigentümer von Abfrage %lu"
hindi "आप कà¥à¤µà¥‡à¤°à¥€ %lu के OWNER नहीं हैं"
rus "Ð’Ñ‹ не ÑвлÑетеÑÑŒ владельцем запроÑа %lu"
spa "No eres el propietario de la consulta (query) %lu"
ER_NO_EIS_FOR_FIELD
+ chi "没有收集无关的统计信æ¯åˆ—'%s'"
eng "Engine-independent statistics are not collected for column '%s'"
hindi "Engine-independent सांखà¥à¤¯à¤¿à¤•à¥€ कॉलम '%s' के लिठà¤à¤•à¤¤à¥à¤°à¤¿à¤¤ नहीं किया जा रहा है"
spa "No se han recolectado estadísticas independientes del motor para la columna '%s'"
ukr "Ðезалежна від типу таблиці ÑтатиÑтика не збираєтьÑÑ Ð´Ð»Ñ ÑÑ‚Ð¾Ð²Ð±Ñ†Ñ '%s'"
ER_WARN_AGGFUNC_DEPENDENCE
+ chi "èšåˆå‡½æ•°'%-.192s)'SELECT#%d的属于选择#%d"
eng "Aggregate function '%-.192s)' of SELECT #%d belongs to SELECT #%d"
spa "La función de agregación '%-.192s)' del SELECT #%d pertenece a SELECT #%d"
ukr "Ðгрегатна Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ '%-.192s)' з SELECTу #%d належить до SELECTу #%d"
WARN_INNODB_PARTITION_OPTION_IGNORED
+ chi "<%-.64s> innodb分区忽略的选项"
eng "<%-.64s> option ignored for InnoDB partition"
spa "<%-.64s> opción ignorada para partición InnoDB"
@@ -8034,251 +8961,311 @@ skip-to-error-number 2000
skip-to-error-number 3000
ER_FILE_CORRUPT
- eng "File %s is corrupted"
- spa "El fichero/archivo %s está corrupto"
+ chi "文件%så·²æŸå"
+ eng "File %s is corrupted"
+ spa "El fichero/archivo %s está corrupto"
ER_ERROR_ON_MASTER
- eng "Query partially completed on the master (error on master: %d) and was aborted. There is a chance that your master is inconsistent at this point. If you are sure that your master is ok, run this query manually on the slave and then restart the slave with SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;. Query:'%s'"
- spa "Consulta (query) completada de forma parcial en el maestro (master) (error en maestro (master): %d) y se ha abortado. Existe una posibilidad de que su maestro (master) esté inconsitente en este punto. Si está seguro de que su maestro (master) está ok, ejecute esta consulta (query) de forma manual en el esclavo y luego rearranque el esclavo mediante SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;. Consulta (query):'%s'"
+ chi "查询在主设备上部分完æˆï¼ˆä¸»è®¾å¤‡ï¼š%d)并中止。你的master在这一点上有å¯èƒ½ä¸ä¸€è‡´ã€‚如果您确定您的主站是å¯ä»¥çš„,请在从站上手动è¿è¡Œæ­¤æŸ¥è¯¢ï¼Œç„¶åŽä½¿ç”¨SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE ;查询:'%s'"
+ eng "Query partially completed on the master (error on master: %d) and was aborted. There is a chance that your master is inconsistent at this point. If you are sure that your master is ok, run this query manually on the slave and then restart the slave with SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;. Query:'%s'"
+ spa "Consulta (query) completada de forma parcial en el maestro (master) (error en maestro (master): %d) y se ha abortado. Existe una posibilidad de que su maestro (master) esté inconsitente en este punto. Si está seguro de que su maestro (master) está ok, ejecute esta consulta (query) de forma manual en el esclavo y luego rearranque el esclavo mediante SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;. Consulta (query):'%s'"
ER_INCONSISTENT_ERROR
- eng "Query caused different errors on master and slave. Error on master: message (format)='%s' error code=%d; Error on slave:actual message='%s', error code=%d. Default database:'%s'. Query:'%s'"
- spa "La consulta (query) ha ocasionado diferentes errores en el maestro (master) y en el esclavo. Error en maestro (master): mensaje (formato)='%s' código de error=%d; Error en esclavo: mensaje actual='%s', código de error=%d. Base de datos por defecto:'%s'. Consulta (query):'%s'"
+ chi "查询在主站和从站上引起了ä¸åŒçš„错误。主站错误:消æ¯ï¼ˆæ ¼å¼ï¼‰='%s'错误代ç =%d;从站错误:实际消æ¯='%s',错误代ç =%d。默认数æ®åº“:'%s'。查询:'%s'"
+ eng "Query caused different errors on master and slave. Error on master: message (format)='%s' error code=%d; Error on slave:actual message='%s', error code=%d. Default database:'%s'. Query:'%s'"
+ spa "La consulta (query) ha ocasionado diferentes errores en el maestro (master) y en el esclavo. Error en maestro (master): mensaje (formato)='%s' código de error=%d; Error en esclavo: mensaje actual='%s', código de error=%d. Base de datos por defecto:'%s'. Consulta (query):'%s'"
ER_STORAGE_ENGINE_NOT_LOADED
+ chi "表'%s'的存储引擎'%s'没有加载。"
eng "Storage engine for table '%s'.'%s' is not loaded."
spa "El motor de almacenaje para la tabla '%s'.'%s' no ha sido cargado."
ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER 0Z002
- eng "GET STACKED DIAGNOSTICS when handler not active"
- spa "GET STACKED DIAGNOSTICS cuando el manejador no está activo"
+ chi "处ç†ç¨‹åºæœªæ¿€æ´»æ—¶GET STACKED DIAGNOSTICS"
+ eng "GET STACKED DIAGNOSTICS when handler not active"
+ spa "GET STACKED DIAGNOSTICS cuando el manejador no está activo"
ER_WARN_LEGACY_SYNTAX_CONVERTED
- eng "%s is no longer supported. The statement was converted to %s."
- spa "%s ya no está soportada. Se ha convertido la sentencia a %s."
+ chi "ä¸å†æ”¯æŒ%s。该语å¥è¢«è½¬æ¢ä¸º%s。"
+ eng "%s is no longer supported. The statement was converted to %s."
+ spa "%s ya no está soportada. Se ha convertido la sentencia a %s."
ER_BINLOG_UNSAFE_FULLTEXT_PLUGIN
- eng "Statement is unsafe because it uses a fulltext parser plugin which may not return the same value on the slave."
- spa "La sentencia no es segura porque usa un enchufe (plugin) analizador de fulltext que puede que no devuelva el mismo valor en el esclavo."
+ chi "语å¥ä¸å®‰å…¨ï¼Œå› ä¸ºå®ƒä½¿ç”¨å…¨æ–‡è§£æžå™¨æ’件,它å¯èƒ½ä¸ä¼šåœ¨ä»Žç«™ä¸Šè¿”回相åŒçš„值。"
+ eng "Statement is unsafe because it uses a fulltext parser plugin which may not return the same value on the slave."
+ spa "La sentencia no es segura porque usa un enchufe (plugin) analizador de fulltext que puede que no devuelva el mismo valor en el esclavo."
ER_CANNOT_DISCARD_TEMPORARY_TABLE
- eng "Cannot DISCARD/IMPORT tablespace associated with temporary table"
- spa "No puedo DISCARD/IMPORT espacio de tabla asociado con tabla temporal"
+ chi "无法丢弃与临时表相关è”çš„/导入表空间"
+ eng "Cannot DISCARD/IMPORT tablespace associated with temporary table"
+ spa "No puedo DISCARD/IMPORT espacio de tabla asociado con tabla temporal"
ER_FK_DEPTH_EXCEEDED
- eng "Foreign key cascade delete/update exceeds max depth of %d."
- spa "La cascada borrar/actualizar en clave foránea excede la máxima profundidad de %d."
+ chi "外键级è”删除/更新超出了%d的最大深度。"
+ eng "Foreign key cascade delete/update exceeds max depth of %d."
+ spa "La cascada borrar/actualizar en clave foránea excede la máxima profundidad de %d."
ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2
+ chi "列数为%s.%s是错误的。预期的%d,找到%d。使用MariaDB%d创建,现在è¿è¡Œ%d。请使用mariadb-upgradeæ¥ä¿®å¤æ­¤é”™è¯¯ã€‚"
eng "Column count of %s.%s is wrong. Expected %d, found %d. Created with MariaDB %d, now running %d. Please use mariadb-upgrade to fix this error."
ger "Spaltenanzahl von %s.%s falsch. %d erwartet, aber %d erhalten. Erzeugt mit MariaDB %d, jetzt unter %d. Bitte benutzen Sie mariadb-upgrade, um den Fehler zu beheben"
spa "El contador de columna de %s.%s está equivocado. Se esperaba %d, hallado %d, Creado con MariaDB %d, ahora ejecutando %d. Por favor, use mariadb-upgrade para arreglar este error."
ER_WARN_TRIGGER_DOESNT_HAVE_CREATED
- eng "Trigger %s.%s.%s does not have CREATED attribute."
- spa "El disparador %s.%s.%s no tiene el atributo CREATED."
+ chi "触å‘器%s.%s.%s没有CREATE属性。"
+ eng "Trigger %s.%s.%s does not have CREATED attribute."
+ spa "El disparador %s.%s.%s no tiene el atributo CREATED."
ER_REFERENCED_TRG_DOES_NOT_EXIST_MYSQL
- eng "Referenced trigger '%s' for the given action time and event type does not exist."
- spa "El disparador referenciado '%s' para el momento dado de acción y el tipo de evento no existe."
+ chi "引用的触å‘器'%s'用于给定的动作时间和事件类型ä¸å­˜åœ¨ã€‚"
+ eng "Referenced trigger '%s' for the given action time and event type does not exist."
+ spa "El disparador referenciado '%s' para el momento dado de acción y el tipo de evento no existe."
ER_EXPLAIN_NOT_SUPPORTED
+ chi "EXPLAIN FOR CONNECTION仅支æŒSELECT/UPDATE/INSERT/DELETE/REPLACE"
eng "EXPLAIN FOR CONNECTION command is supported only for SELECT/UPDATE/INSERT/DELETE/REPLACE"
spa "El comando EXPLAIN FOR CONNECTION sólo se soporta para SELECT/UPDATE/INSERT/DELETE/REPLACE"
ER_INVALID_FIELD_SIZE
+ chi "列'%-.192s'的大å°æ— æ•ˆã€‚"
eng "Invalid size for column '%-.192s'."
spa "Tamaño inválido para columna '%-.192s'."
ER_MISSING_HA_CREATE_OPTION
+ chi "表存储引擎'%-.64s'所找到的必备创建选项丢失"
eng "Table storage engine '%-.64s' found required create option missing"
spa "El motor hallado de almacenaje de tabla '%-.64s' requería de la opción de crear que falta"
ER_ENGINE_OUT_OF_MEMORY
- eng "Out of memory in storage engine '%-.64s'."
- spa "Memoria agotada en motor de almacenaje '%-.64s'."
+ chi "存储引擎'%-.64s'中的内存ä¸è¶³ã€‚"
+ eng "Out of memory in storage engine '%-.64s'."
+ spa "Memoria agotada en motor de almacenaje '%-.64s'."
ER_PASSWORD_EXPIRE_ANONYMOUS_USER
- eng "The password for anonymous user cannot be expired."
- spa "La contraseña para usuario anónimo no puede expirar."
+ chi "匿å用户的密ç ä¸èƒ½è¿‡æœŸã€‚"
+ eng "The password for anonymous user cannot be expired."
+ spa "La contraseña para usuario anónimo no puede expirar."
ER_SLAVE_SQL_THREAD_MUST_STOP
- eng "This operation cannot be performed with a running slave sql thread; run STOP SLAVE SQL_THREAD first"
- spa "Esta operación no se puede realizar con hilo (thread) sql esclavo en ejecución; ejecuta STOP SLAVE SQL_THREAD primero"
+ chi "无法使用正在è¿è¡Œçš„从SQL线程执行此æ“作;首先è¿è¡ŒSTOP SLAVE SQL_THREAD"
+ eng "This operation cannot be performed with a running slave sql thread; run STOP SLAVE SQL_THREAD first"
+ spa "Esta operación no se puede realizar con hilo (thread) sql esclavo en ejecución; ejecuta STOP SLAVE SQL_THREAD primero"
ER_NO_FT_MATERIALIZED_SUBQUERY
- eng "Cannot create FULLTEXT index on materialized subquery"
- spa "No puedo crear índice FULLTEXT en subconsulta (subquery) materializada"
+ chi "无法在物化的å­æŸ¥è¯¢ä¸Šåˆ›å»ºFullText索引"
+ eng "Cannot create FULLTEXT index on materialized subquery"
+ spa "No puedo crear índice FULLTEXT en subconsulta (subquery) materializada"
ER_INNODB_UNDO_LOG_FULL
- eng "Undo Log error: %s"
- spa "Error de Historial (log) de Deshacer: %s"
+ chi "撤消日志错误:%s"
+ eng "Undo Log error: %s"
+ spa "Error de Historial (log) de Deshacer: %s"
ER_INVALID_ARGUMENT_FOR_LOGARITHM 2201E
- eng "Invalid argument for logarithm"
- spa "Argumento inválido para logaritmo"
+ chi "对数的å‚数无效"
+ eng "Invalid argument for logarithm"
+ spa "Argumento inválido para logaritmo"
ER_SLAVE_CHANNEL_IO_THREAD_MUST_STOP
- eng "This operation cannot be performed with a running slave io thread; run STOP SLAVE IO_THREAD FOR CHANNEL '%s' first."
- spa "Esta operación no se puede realizar con un hilo (thread) de e/s de esclavo en ejecución; ejecuta STOP SLAVE IO_THREAD FOR CHANNEL '%s' primero."
+ chi "无法使用正在è¿è¡Œçš„slave IO线程执行此æ“作;首先è¿è¡ŒSTOP SLAVE IO_THREAD FOR CHANNEL'%s'。"
+ eng "This operation cannot be performed with a running slave io thread; run STOP SLAVE IO_THREAD FOR CHANNEL '%s' first."
+ spa "Esta operación no se puede realizar con un hilo (thread) de e/s de esclavo en ejecución; ejecuta STOP SLAVE IO_THREAD FOR CHANNEL '%s' primero."
ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO
- eng "This operation may not be safe when the slave has temporary tables. The tables will be kept open until the server restarts or until the tables are deleted by any replicated DROP statement. Suggest to wait until slave_open_temp_tables = 0."
- spa "Esta operación puede no ser segura cuando el esclavo tenga tablas temporales. Las tablas serán mantenidas abiertas hasta que el servidor rearranque o hasta que las tablas sean borradas por cualquier sentencia DROP replicada. Se sugiere esperar hasta slave_open_temp_tables = 0."
+ chi "当从站具有临时表时,此æ“作å¯èƒ½ä¸å®‰å…¨ã€‚表将ä¿æŒæ‰“开,直到æœåŠ¡å™¨é‡æ–°å¯åŠ¨æˆ–通过任何å¤åˆ¶çš„DROP语å¥åˆ é™¤è¡¨ã€‚建议等到Slave_open_temp_tables = 0。"
+ eng "This operation may not be safe when the slave has temporary tables. The tables will be kept open until the server restarts or until the tables are deleted by any replicated DROP statement. Suggest to wait until slave_open_temp_tables = 0."
+ spa "Esta operación puede no ser segura cuando el esclavo tenga tablas temporales. Las tablas serán mantenidas abiertas hasta que el servidor rearranque o hasta que las tablas sean borradas por cualquier sentencia DROP replicada. Se sugiere esperar hasta slave_open_temp_tables = 0."
ER_WARN_ONLY_MASTER_LOG_FILE_NO_POS
- eng "CHANGE MASTER TO with a MASTER_LOG_FILE clause but no MASTER_LOG_POS clause may not be safe. The old position value may not be valid for the new binary log file."
- spa "CHANGE MASTER TO mediante una cláusula MASTER_LOG_FILE pero sin existir cláusula MASTER_LOG_POS puede no ser seguro. El valor viejo de la posición puede no ser válido para el nuevo fichero/archivo binario de historial (log)."
+ chi "使用CHANGE MASTER TO master_log_fileå­å¥æ›´æ”¹master,但没有master_log_poså­å¥å¯èƒ½ä¸å®‰å…¨ã€‚æ—§ä½ç½®å€¼å¯èƒ½å¯¹æ–°çš„二进制日志文件无效。"
+ eng "CHANGE MASTER TO with a MASTER_LOG_FILE clause but no MASTER_LOG_POS clause may not be safe. The old position value may not be valid for the new binary log file."
+ spa "CHANGE MASTER TO mediante una cláusula MASTER_LOG_FILE pero sin existir cláusula MASTER_LOG_POS puede no ser seguro. El valor viejo de la posición puede no ser válido para el nuevo fichero/archivo binario de historial (log)."
ER_QUERY_TIMEOUT
- eng "Query execution was interrupted, maximum statement execution time exceeded"
- spa "Se ha interrumpido la ejecución de la consulta (query), se ha excedido el tiempo máximo de ejecución de sentencia"
+ chi "查询执行中断,超过了最大语å¥æ‰§è¡Œæ—¶é—´"
+ eng "Query execution was interrupted, maximum statement execution time exceeded"
+ spa "Se ha interrumpido la ejecución de la consulta (query), se ha excedido el tiempo máximo de ejecución de sentencia"
ER_NON_RO_SELECT_DISABLE_TIMER
- eng "Select is not a read only statement, disabling timer"
- spa "Select no es una sentencia de sólo lectura, desactivando cronómetro"
+ chi "SELECTä¸æ˜¯åªè¯»è¯­å¥ï¼Œç¦ç”¨è®¡æ—¶å™¨"
+ eng "Select is not a read only statement, disabling timer"
+ spa "Select no es una sentencia de sólo lectura, desactivando cronómetro"
ER_DUP_LIST_ENTRY
- eng "Duplicate entry '%-.192s'."
- spa "Entrada duplicada '%-.192s'."
+ chi "é‡å¤æ¡ç›®'%-.192s'。"
+ eng "Duplicate entry '%-.192s'."
+ spa "Entrada duplicada '%-.192s'."
ER_SQL_MODE_NO_EFFECT
- eng "'%s' mode no longer has any effect. Use STRICT_ALL_TABLES or STRICT_TRANS_TABLES instead."
- spa "El modo '%s' ya no tiene efecto alguno. Use STRICT_ALL_TABLES o STRICT_TRANS_TABLES en su lugar"
+ chi "'%s'模å¼ä¸å†æœ‰ä»»ä½•æ•ˆæžœã€‚使用STRICT_ALL_TABLES或STRICT_TRANS_TABLES。"
+ eng "'%s' mode no longer has any effect. Use STRICT_ALL_TABLES or STRICT_TRANS_TABLES instead."
+ spa "El modo '%s' ya no tiene efecto alguno. Use STRICT_ALL_TABLES o STRICT_TRANS_TABLES en su lugar"
ER_AGGREGATE_ORDER_FOR_UNION
- eng "Expression #%u of ORDER BY contains aggregate function and applies to a UNION"
- spa "La expresión #%u de ORDER BY contiene función de agregación y se aplica a UNION"
+ chi "表达å¼ï¼ƒ%u ORDER BY包å«èšåˆå‡½æ•°å¹¶é€‚用于UNION"
+ eng "Expression #%u of ORDER BY contains aggregate function and applies to a UNION"
+ spa "La expresión #%u de ORDER BY contiene función de agregación y se aplica a UNION"
ER_AGGREGATE_ORDER_NON_AGG_QUERY
- eng "Expression #%u of ORDER BY contains aggregate function and applies to the result of a non-aggregated query"
- spa "La expresión #%u de ORDER BY contiene función de agregación y se aplica al resultado de una consulta (query) no agregada"
+ chi "表达å¼ï¼ƒ%u通过包å«èšåˆå‡½æ•°ï¼Œå¹¶é€‚用于éžèšåˆæŸ¥è¯¢çš„结果"
+ eng "Expression #%u of ORDER BY contains aggregate function and applies to the result of a non-aggregated query"
+ spa "La expresión #%u de ORDER BY contiene función de agregación y se aplica al resultado de una consulta (query) no agregada"
ER_SLAVE_WORKER_STOPPED_PREVIOUS_THD_ERROR
- eng "Slave worker has stopped after at least one previous worker encountered an error when slave-preserve-commit-order was enabled. To preserve commit order, the last transaction executed by this thread has not been committed. When restarting the slave after fixing any failed threads, you should fix this worker as well."
- spa "El trabajador esclavo se ha parado tras al menos encontrar un error en trabajador previo cuando slave-preserve-commit-order fue activado. Para preserver el orden de acometida (commit), la última transacción ejecutada por este hilo (thread) no se ha acometido (commit). Al rearrancar el esclavo tras arreglar cualquier hilo (thread) fallido, vd debería de arreglar este trabajador también"
+ chi "在å¯ç”¨äº†slaveä¿å­˜æ交次åºæ—¶è‡³å°‘有一个以å‰çš„工人é‡åˆ°é”™è¯¯åŽï¼Œslave工作者已åœæ­¢ã€‚è¦ä¿ç•™æ交次åºï¼Œæ­¤çº¿ç¨‹æ‰§è¡Œçš„最åŽä¸€é¡¹äº‹åŠ¡å°šæœªæ交。在修å¤ä»»ä½•æ•…障线程åŽé‡æ–°å¯åŠ¨ä»Žç«™æ—¶ï¼Œæ‚¨ä¹Ÿåº”该修å¤æ­¤å·¥ä½œäººã€‚"
+ eng "Slave worker has stopped after at least one previous worker encountered an error when slave-preserve-commit-order was enabled. To preserve commit order, the last transaction executed by this thread has not been committed. When restarting the slave after fixing any failed threads, you should fix this worker as well."
+ spa "El trabajador esclavo se ha parado tras al menos encontrar un error en trabajador previo cuando slave-preserve-commit-order fue activado. Para preserver el orden de acometida (commit), la última transacción ejecutada por este hilo (thread) no se ha acometido (commit). Al rearrancar el esclavo tras arreglar cualquier hilo (thread) fallido, vd debería de arreglar este trabajador también"
ER_DONT_SUPPORT_SLAVE_PRESERVE_COMMIT_ORDER
- eng "slave_preserve_commit_order is not supported %s."
- spa "slave_preserve_commit_order no está soportado %s."
+ chi "slave_preerve_commit_orderä¸æ”¯æŒ%s。"
+ eng "slave_preserve_commit_order is not supported %s."
+ spa "slave_preserve_commit_order no está soportado %s."
ER_SERVER_OFFLINE_MODE
- eng "The server is currently in offline mode"
- spa "El servidor se encuentra actualmente en modo fuera de línea"
+ chi "æœåŠ¡å™¨ç›®å‰å¤„于离线模å¼"
+ eng "The server is currently in offline mode"
+ spa "El servidor se encuentra actualmente en modo fuera de línea"
ER_GIS_DIFFERENT_SRIDS
- eng "Binary geometry function %s given two geometries of different srids: %u and %u, which should have been identical."
- spa "La función binaria de geomertía %s ha dado dos geometrías de diferente srids: %u y %u, que deberían de haber sido idénticas"
+ chi "二进制几何函数%s给定两个ä¸åŒSRID的几何形状:%uå’Œ%u,应该是相åŒçš„。"
+ eng "Binary geometry function %s given two geometries of different srids: %u and %u, which should have been identical."
+ spa "La función binaria de geomertía %s ha dado dos geometrías de diferente srids: %u y %u, que deberían de haber sido idénticas"
ER_GIS_UNSUPPORTED_ARGUMENT
- eng "Calling geometry function %s with unsupported types of arguments."
- spa "Llamando a función de geometría %s con tipos de argumento no soportados."
+ chi "调用几何函数%s与ä¸å—支æŒç±»åž‹çš„å‚数。"
+ eng "Calling geometry function %s with unsupported types of arguments."
+ spa "Llamando a función de geometría %s con tipos de argumento no soportados."
ER_GIS_UNKNOWN_ERROR
- eng "Unknown GIS error occurred in function %s."
- spa "Ha ocurrido un error GIS desconocido en función %s."
+ chi "未知的GIS错误å‘生在功能%s中。"
+ eng "Unknown GIS error occurred in function %s."
+ spa "Ha ocurrido un error GIS desconocido en función %s."
ER_GIS_UNKNOWN_EXCEPTION
- eng "Unknown exception caught in GIS function %s."
- spa "Excepción desconocida capturada en función GIS %s."
+ chi "在GIS功能%s中æ•èŽ·çš„未知异常。"
+ eng "Unknown exception caught in GIS function %s."
+ spa "Excepción desconocida capturada en función GIS %s."
ER_GIS_INVALID_DATA 22023
- eng "Invalid GIS data provided to function %s."
- spa "Suministrados datos GIS inválidos a función %s."
+ chi "æ供给功能%sçš„GISæ•°æ®æ— æ•ˆã€‚"
+ eng "Invalid GIS data provided to function %s."
+ spa "Suministrados datos GIS inválidos a función %s."
ER_BOOST_GEOMETRY_EMPTY_INPUT_EXCEPTION
- eng "The geometry has no data in function %s."
- spa "La geometría no tiene datos en función %s."
+ chi "几何形状在功能%s中没有数æ®ã€‚"
+ eng "The geometry has no data in function %s."
+ spa "La geometría no tiene datos en función %s."
ER_BOOST_GEOMETRY_CENTROID_EXCEPTION
- eng "Unable to calculate centroid because geometry is empty in function %s."
- spa "Imposible calcular centroid porque la geometría está vacía en la función %s."
+ chi "无法计算质心,因为在功能%s中几何为空。"
+ eng "Unable to calculate centroid because geometry is empty in function %s."
+ spa "Imposible calcular centroid porque la geometría está vacía en la función %s."
ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION
- eng "Geometry overlay calculation error: geometry data is invalid in function %s."
- spa "Error de cálculo de superposición de geometría: el dato de geometría es inválido en la función %s."
+ chi "几何å åŠ è®¡ç®—错误:几何数æ®åœ¨åŠŸèƒ½%s中无效。"
+ eng "Geometry overlay calculation error: geometry data is invalid in function %s."
+ spa "Error de cálculo de superposición de geometría: el dato de geometría es inválido en la función %s."
ER_BOOST_GEOMETRY_TURN_INFO_EXCEPTION
- eng "Geometry turn info calculation error: geometry data is invalid in function %s."
- spa "Error de cálculo de información devuelto: los datos de geometría son inválidos en la función %s."
+ chi "几何旋转信æ¯è®¡ç®—错误:几何数æ®åœ¨åŠŸèƒ½%s中无效。"
+ eng "Geometry turn info calculation error: geometry data is invalid in function %s."
+ spa "Error de cálculo de información devuelto: los datos de geometría son inválidos en la función %s."
ER_BOOST_GEOMETRY_SELF_INTERSECTION_POINT_EXCEPTION
- eng "Analysis procedures of intersection points interrupted unexpectedly in function %s."
- spa "Los procedimientos de análisis de puntos de intersección se interrumpieron inesperadamente en la función %s."
+ chi "在功能%s中出乎æ„料地中断交å‰ç‚¹çš„分æžç¨‹åºã€‚"
+ eng "Analysis procedures of intersection points interrupted unexpectedly in function %s."
+ spa "Los procedimientos de análisis de puntos de intersección se interrumpieron inesperadamente en la función %s."
ER_BOOST_GEOMETRY_UNKNOWN_EXCEPTION
- eng "Unknown exception thrown in function %s."
- spa "Excepción desconocida lanzada en la función %s."
+ chi "在功能%s中抛出的未知异常。"
+ eng "Unknown exception thrown in function %s."
+ spa "Excepción desconocida lanzada en la función %s."
ER_STD_BAD_ALLOC_ERROR
- eng "Memory allocation error: %-.256s in function %s."
- spa "Error en adjudicación de memoria: %-.256s en la función %s."
+ chi "内存分é…错误:%-.256s。函数%s。"
+ eng "Memory allocation error: %-.256s in function %s."
+ spa "Error en adjudicación de memoria: %-.256s en la función %s."
ER_STD_DOMAIN_ERROR
- eng "Domain error: %-.256s in function %s."
- spa "Error en dominio: %-.256s en función %s."
+ chi "域å错误:%-.256s. 函数%s"
+ eng "Domain error: %-.256s in function %s."
+ spa "Error en dominio: %-.256s en función %s."
ER_STD_LENGTH_ERROR
- eng "Length error: %-.256s in function %s."
- spa "Error de tamaño: %-.256s en función %s."
+ chi "长度误差:%-.256s函数%s。"
+ eng "Length error: %-.256s in function %s."
+ spa "Error de tamaño: %-.256s en función %s."
ER_STD_INVALID_ARGUMENT
- eng "Invalid argument error: %-.256s in function %s."
- spa "Error de argumento inválido: %-.256s en función %s."
+ chi "无效的å‚数错误:%-.256s函数%s。"
+ eng "Invalid argument error: %-.256s in function %s."
+ spa "Error de argumento inválido: %-.256s en función %s."
ER_STD_OUT_OF_RANGE_ERROR
- eng "Out of range error: %-.256s in function %s."
- spa "Error de fuera de rango: %-.256s en función %s."
+ chi "超出范围错误:%-.256s 函数%s。"
+ eng "Out of range error: %-.256s in function %s."
+ spa "Error de fuera de rango: %-.256s en función %s."
ER_STD_OVERFLOW_ERROR
- eng "Overflow error error: %-.256s in function %s."
- spa "Error de desbordamiento: %-.256s en función %s."
+ chi "溢出错误:%-.256s。功能%s。"
+ eng "Overflow error: %-.256s in function %s."
+ spa "Error de desbordamiento: %-.256s en función %s."
ER_STD_RANGE_ERROR
- eng "Range error: %-.256s in function %s."
- spa "Error de rango: %-.256s en función %s."
+ chi "范围错误:%-.256s函数%s。"
+ eng "Range error: %-.256s in function %s."
+ spa "Error de rango: %-.256s en función %s."
ER_STD_UNDERFLOW_ERROR
- eng "Underflow error: %-.256s in function %s."
- spa "Error de refreno (underflow): %-.256s en la función %s."
+ chi "下溢错误:%-.256s函数%s。"
+ eng "Underflow error: %-.256s in function %s."
+ spa "Error de refreno (underflow): %-.256s en la función %s."
ER_STD_LOGIC_ERROR
- eng "Logic error: %-.256s in function %s."
- spa "Error lógico: %-.256s en la función %s."
+ chi "逻辑错误:%-.256s 函数%s。"
+ eng "Logic error: %-.256s in function %s."
+ spa "Error lógico: %-.256s en la función %s."
ER_STD_RUNTIME_ERROR
- eng "Runtime error: %-.256s in function %s."
- spa "Error en tiempo de ejecución: %-.256s en la función %s."
+ chi "è¿è¡Œæ—¶é”™è¯¯ï¼š%-.256s函数%s。"
+ eng "Runtime error: %-.256s in function %s."
+ spa "Error en tiempo de ejecución: %-.256s en la función %s."
ER_STD_UNKNOWN_EXCEPTION
- eng "Unknown exception: %-.384s in function %s."
- spa "Excepción desconocida: %-.384s en la función %s."
+ chi "未知例外:%-.384s在函数%s中。"
+ eng "Unknown exception: %-.384s in function %s."
+ spa "Excepción desconocida: %-.384s en la función %s."
ER_GIS_DATA_WRONG_ENDIANESS
- eng "Geometry byte string must be little endian."
- spa "La cadena de byte en Geometría debe de ser 'little endian'."
+ chi "几何字节字符串必须是å°endian。"
+ eng "Geometry byte string must be little endian."
+ spa "La cadena de byte en Geometría debe de ser 'little endian'."
ER_CHANGE_MASTER_PASSWORD_LENGTH
- eng "The password provided for the replication user exceeds the maximum length of 32 characters"
- spa "La contraseña suministrada para el usuario de réplica excede el tamaño máximo de 32 caracteres"
+ chi "为Replication Useræ供的密ç è¶…过32个字符的最大长度"
+ eng "The password provided for the replication user exceeds the maximum length of 32 characters"
+ spa "La contraseña suministrada para el usuario de réplica excede el tamaño máximo de 32 caracteres"
ER_USER_LOCK_WRONG_NAME 42000
+ chi "用户级é”åå称'%-.192s'ä¸æ­£ç¡®ã€‚"
eng "Incorrect user-level lock name '%-.192s'."
spa "Nombre de bloqueo incorrecto a nivel de usuario '%-.192s'."
# Should be different from ER_LOCK_DEADLOCK since it doesn't cause implicit
# rollback. Should not be mapped to SQLSTATE 40001 for the same reason.
ER_USER_LOCK_DEADLOCK
- eng "Deadlock found when trying to get user-level lock; try rolling back transaction/releasing locks and restarting lock acquisition."
- spa "Hallado estancamiento (deadlock) al intentar obtener bloqueo a nivel de usuario; intente retroceder (roll back) bloqueos de transacción/entrega y rearranque la adquisición de bloqueo."
+ chi "在å°è¯•èŽ·å¾—用户级é”æ—¶å‘现死é”;å°è¯•å›žæ»šäº¤æ˜“/释放é”定并é‡æ–°å¯åŠ¨é”定采集。"
+ eng "Deadlock found when trying to get user-level lock; try rolling back transaction/releasing locks and restarting lock acquisition."
+ spa "Hallado estancamiento (deadlock) al intentar obtener bloqueo a nivel de usuario; intente retroceder (roll back) bloqueos de transacción/entrega y rearranque la adquisición de bloqueo."
ER_REPLACE_INACCESSIBLE_ROWS
- eng "REPLACE cannot be executed as it requires deleting rows that are not in the view"
- spa "REPLACE no se puede ejecutar ya que requiere borrar filas que no están en la vista"
+ chi "无法执行REPLACE,因为它需è¦åˆ é™¤ä¸åœ¨è§†å›¾ä¸­çš„è¡Œ"
+ eng "REPLACE cannot be executed as it requires deleting rows that are not in the view"
+ spa "REPLACE no se puede ejecutar ya que requiere borrar filas que no están en la vista"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_GIS
- eng "Do not support online operation on table with GIS index"
- spa "No soporta operación en línea en tabla con índice GIS"
-
+ chi "ä¸è¦æ”¯æŒä½¿ç”¨GIS索引的表中的在线æ“作"
+ eng "Do not support online operation on table with GIS index"
+ spa "No soporta operación en línea en tabla con índice GIS"
# MariaDB extra error numbers starts from 4000
skip-to-error-number 4000
@@ -8289,553 +9276,708 @@ ER_UNUSED_27
eng "This error never happens"
spa "Este error nunca ocurre"
ER_WITH_COL_WRONG_LIST
+ chi "使用列列表并选择字段列表具有ä¸åŒçš„列计数"
eng "WITH column list and SELECT field list have different column counts"
spa "La lista de columnas de WITH y lista de campos de SELECT tienen diferentes contadores de columna"
ER_TOO_MANY_DEFINITIONS_IN_WITH_CLAUSE
+ chi "WITHæ¡æ¬¾ä¸­çš„元素太多了"
eng "Too many WITH elements in WITH clause"
spa "Demasiados elementos WITH en cláusua WITH"
ER_DUP_QUERY_NAME
+ chi "WITHå­å¥é‡å¤æŸ¥è¯¢å称%`-.64s"
eng "Duplicate query name %`-.64s in WITH clause"
spa "Nombre de consulta (query) %`-.64s duplicada en cláusula WITH"
ER_RECURSIVE_WITHOUT_ANCHORS
+ chi "没有元素'%s'递归的锚点"
eng "No anchors for recursive WITH element '%s'"
spa "No hay anclajes para elemento WITH recursivo '%s'"
ER_UNACCEPTABLE_MUTUAL_RECURSION
+ chi "锚定表'%s'ä¸å¯æŽ¥å—的相互递归"
eng "Unacceptable mutual recursion with anchored table '%s'"
spa "Recursión mutua inaceptable con tabla anclada '%s'"
ER_REF_TO_RECURSIVE_WITH_TABLE_IN_DERIVED
+ chi "物质化的è¡ç”Ÿå‚考指å‘递归的WITH 表'%s'"
eng "Reference to recursive WITH table '%s' in materialized derived"
spa "Referencia recursiva con WITH tabla '%s' en derivada materializada"
ER_NOT_STANDARD_COMPLIANT_RECURSIVE
+ chi "表'%s'è¿å了递归定义的é™åˆ¶"
eng "Restrictions imposed on recursive definitions are violated for table '%s'"
- spa "Las restricciónes impuestas en definiciones recursivas son violadas para la tabla '%s'"
ER_WRONG_WINDOW_SPEC_NAME
- eng "Window specification with name '%s' is not defined"
- spa "Especificación de ventana con nombre '%s' no definida"
+ chi "没有定义å称'%s'的窗å£è§„范"
+ eng "Window specification with name '%s' is not defined"
+ spa "Especificación de ventana con nombre '%s' no definida"
ER_DUP_WINDOW_NAME
+ chi "具有相åŒå称'%s'的多个窗å£è§„范"
eng "Multiple window specifications with the same name '%s'"
spa "Múltiples especificaciones de ventana con el mismo nombre '%s'"
ER_PARTITION_LIST_IN_REFERENCING_WINDOW_SPEC
+ chi "窗å£è§„范引用å¦ä¸€ä¸ª'%s'ä¸èƒ½åŒ…å«åˆ†åŒºåˆ—表"
eng "Window specification referencing another one '%s' cannot contain partition list"
spa "La especificación de ventana que referencia a otra '%s' no puede contener una lista de partición"
ER_ORDER_LIST_IN_REFERENCING_WINDOW_SPEC
+ chi "引用的窗å£è§„范'%s'已包å«æ¬¡åºåˆ—表"
eng "Referenced window specification '%s' already contains order list"
spa "La especificación de ventana referenciada '%s' ya contiene lista de orden"
ER_WINDOW_FRAME_IN_REFERENCED_WINDOW_SPEC
+ chi "引用的窗å£è§„范'%s'ä¸èƒ½åŒ…å«çª—å£æ¡†æž¶"
eng "Referenced window specification '%s' cannot contain window frame"
spa "La especificación referenciada de ventana '%s' no puede contener marco de ventana"
ER_BAD_COMBINATION_OF_WINDOW_FRAME_BOUND_SPECS
+ chi "窗框绑定规格的ä¸å¯æŽ¥å—的组åˆ"
eng "Unacceptable combination of window frame bound specifications"
spa "Combinación inaceptable de especificaciones ligadas a marco de ventana"
ER_WRONG_PLACEMENT_OF_WINDOW_FUNCTION
+ chi "窗å£å‡½æ•°ä»…在SELECT列表和ORDER BYå­å¥ä¸­å…许"
eng "Window function is allowed only in SELECT list and ORDER BY clause"
spa "La función de ventana sólo se permite en lista SELECT y en cláusula ORDER BY"
ER_WINDOW_FUNCTION_IN_WINDOW_SPEC
+ chi "窗å£è§„范中ä¸å…许窗å£åŠŸèƒ½"
eng "Window function is not allowed in window specification"
spa "La función de ventana no está permitida en especificación de ventana"
ER_NOT_ALLOWED_WINDOW_FRAME
+ chi "窗框ä¸å…许使用'%s'"
eng "Window frame is not allowed with '%s'"
spa "El marco de ventana no está permitido con '%s'"
ER_NO_ORDER_LIST_IN_WINDOW_SPEC
+ chi "在“%sâ€çš„窗å£è§„范中没有订å•åˆ—表"
eng "No order list in window specification for '%s'"
spa "No exite lista de orden en especificación de ventana para '%s'"
ER_RANGE_FRAME_NEEDS_SIMPLE_ORDERBY
+ chi "范围型框架需è¦å•ä¸ªæŽ’åºé”®è®¢è´­é€ä¸ªæ¡æ¬¾"
eng "RANGE-type frame requires ORDER BY clause with single sort key"
spa "El marco tipo-RANGE requiere de la cláusula ORDER BY con clave única de clasificación"
ER_WRONG_TYPE_FOR_ROWS_FRAME
+ chi "行类型框架需è¦æ•´æ•°"
eng "Integer is required for ROWS-type frame"
spa "Se requiere de un entero para marco tipo-ROWS"
ER_WRONG_TYPE_FOR_RANGE_FRAME
+ chi "范围类型框架需è¦æ•°å­—æ•°æ®ç±»åž‹"
eng "Numeric datatype is required for RANGE-type frame"
spa "Se requiere de tipo de dato numérico para marco tipo-RANGE"
ER_FRAME_EXCLUSION_NOT_SUPPORTED
+ chi "帧排除尚ä¸æ”¯æŒ"
eng "Frame exclusion is not supported yet"
spa "No se seporta aún la exclusión del marco"
ER_WINDOW_FUNCTION_DONT_HAVE_FRAME
+ chi "此窗å£åŠŸèƒ½å¯èƒ½æ²¡æœ‰çª—å£æ¡†æž¶"
eng "This window function may not have a window frame"
spa "Esta función de ventana puede no tener un marco de ventana"
ER_INVALID_NTILE_ARGUMENT
+ chi "NTILEçš„å‚数必须大于0"
eng "Argument of NTILE must be greater than 0"
spa "El argumento de NTILE debe de ser mayor de 0"
ER_CONSTRAINT_FAILED 23000
+ chi "CONSTRAINT %`s失败的%`-.192s。%`-.192s"
eng "CONSTRAINT %`s failed for %`-.192s.%`-.192s"
ger "CONSTRAINT %`s fehlgeschlagen: %`-.192s.%`-.192s"
rus "проверка CONSTRAINT %`s Ð´Ð»Ñ %`-.192s.%`-.192s провалилаÑÑŒ"
spa "No se cumple la RESTRICCIÓN %`s para %`-.192s.%`-.192s"
ukr "Перевірка CONSTRAINT %`s Ð´Ð»Ñ %`-.192s.%`-.192s не пройшла"
ER_EXPRESSION_IS_TOO_BIG
+ chi "%sæ¡æ¬¾ä¸­çš„表达太大了"
eng "Expression in the %s clause is too big"
spa "La expresión en la cláusula %s es demasiado grande"
ER_ERROR_EVALUATING_EXPRESSION
+ chi "获得了一个错误评估存储的表达å¼%s"
eng "Got an error evaluating stored expression %s"
spa "Obtenido error evaluando expresión almacenada %s"
ER_CALCULATING_DEFAULT_VALUE
+ chi "计算默认值为%`s时出错"
eng "Got an error when calculating default value for %`s"
spa "Obtenido un error al calcular valor por defecto para %`s"
ER_EXPRESSION_REFERS_TO_UNINIT_FIELD 01000
+ chi "字段%`-.64s的表达指的是未åˆå§‹åŒ–的字段%`s"
eng "Expression for field %`-.64s is referring to uninitialized field %`s"
spa "La expresión para campo %`-.64s se refiere a un campo sin inicializar %`s"
ER_PARTITION_DEFAULT_ERROR
+ chi "åªå…许一个默认分区"
eng "Only one DEFAULT partition allowed"
spa "Sólo se permite una partición DEFAULT"
ukr "ПрипуÑтимо мати тільки один DEFAULT розділ"
ER_REFERENCED_TRG_DOES_NOT_EXIST
- eng "Referenced trigger '%s' for the given action time and event type does not exist"
- spa "No existe disparador referenciado '%s' para el momento dado de acción y para el tipo de evento"
+ chi "给定动作时间和事件类型的引用触å‘'%s'ä¸å­˜åœ¨"
+ eng "Referenced trigger '%s' for the given action time and event type does not exist"
+ spa "No existe disparador referenciado '%s' para el momento dado de acción y para el tipo de evento"
ER_INVALID_DEFAULT_PARAM
+ chi "此类å‚数使用ä¸æ”¯æŒé»˜è®¤/忽略值"
eng "Default/ignore value is not supported for such parameter usage"
spa "El valor por defecto/ignorado no está soportado para tal utilización de parámetro"
ukr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° замовчуваннÑм або ігнороване Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ підтримано Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ випадку викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°ÑŒÐµÑ‚Ñ€Ð°"
ER_BINLOG_NON_SUPPORTED_BULK
+ chi "仅支æŒåŸºäºŽè¡Œçš„å¤åˆ¶ï¼Œæ”¯æŒæ‰¹é‡æ“作"
eng "Only row based replication supported for bulk operations"
spa "Sólo la réplica basada en fila es soportada para operaciones enormes"
ER_BINLOG_UNCOMPRESS_ERROR
+ chi "解压压缩的binlog失败"
eng "Uncompress the compressed binlog failed"
spa "Ha fallado la descompresión del binlog comprimido"
ER_JSON_BAD_CHR
+ chi "åJSON,å‚æ•°%d 函数'%s' ä½ç½®%d"
eng "Broken JSON string in argument %d to function '%s' at position %d"
spa "Cadena JSON rota en argumento %d para función '%s' en posición %d"
ER_JSON_NOT_JSON_CHR
+ chi "å˜é‡%d出现ç¦æ­¢å­—符,函数'%s'在%d处"
eng "Character disallowed in JSON in argument %d to function '%s' at position %d"
spa "Carácter no permitido en JSON en argumento %d para función '%s' en la posición %d"
ER_JSON_EOS
+ chi "JSON文本中的æ„外结尾,å‚æ•°%d 函数'%s'"
eng "Unexpected end of JSON text in argument %d to function '%s'"
spa "Fin inesperado de texto JSON en argumento %d a función '%s'"
ER_JSON_SYNTAX
+ chi "JSON文本语法错误 å‚æ•°%d 函数'%s' ä½ç½®%d"
eng "Syntax error in JSON text in argument %d to function '%s' at position %d"
spa "Error de sintaxis en texto JSON en argumento %d a función '%s' en la posición %d"
ER_JSON_ESCAPING
+ chi "JSON文本中逸出ä¸æ­£ç¡® å‚æ•°%d 函数'%s' ä½ç½®%d"
eng "Incorrect escaping in JSON text in argument %d to function '%s' at position %d"
spa "Incorrecta escapatoria en texto JSON en argumento %d a función '%s' en la posicón %d"
ER_JSON_DEPTH
+ chi "超过JSON嵌套深度的%dé™åˆ¶ å‚æ•°%d 函数'%s' ä½ç½®%dçš„"
eng "Limit of %d on JSON nested strucures depth is reached in argument %d to function '%s' at position %d"
spa "El límite de %d en profundidad de estructuras JSON anidadas se ha alcanzado en argumento %d a función '%s' en la posición %d"
ER_JSON_PATH_EOS
+ chi "JSON文本路径错误 å‚æ•°%d 函数'%s'"
eng "Unexpected end of JSON path in argument %d to function '%s'"
spa "Fin inesperado de ruta JSON en argumento %d a función '%s'"
ER_JSON_PATH_SYNTAX
+ chi "JSON路径语法错误 å‚æ•°%d 函数'%s' ä½ç½®%d"
eng "Syntax error in JSON path in argument %d to function '%s' at position %d"
spa "Error de sintaxis en ruta JSON en argumento %d a función '%s' en la posición %d"
ER_JSON_PATH_DEPTH
+ chi "JSON路径深度上é™è¾¾åˆ°ï¼š%d å‚æ•°%d 函数'%s' ä½ç½®%d"
eng "Limit of %d on JSON path depth is reached in argument %d to function '%s' at position %d"
spa "El límite de %d en profundidad de ruta JSON se ha alcanzado en argumento %d a función '%s' en la posición %d"
ER_JSON_PATH_NO_WILDCARD
+ chi "JSON路径中的通é…符ä¸å…许 å‚æ•°%d 函数'%s'"
eng "Wildcards in JSON path not allowed in argument %d to function '%s'"
spa "Comodines en ruta JSON no permitidos en argumento %d a función '%s'"
ER_JSON_PATH_ARRAY
+ chi "JSON路径应当以排列为终 å‚æ•°%d 函数'%s'"
eng "JSON path should end with an array identifier in argument %d to function '%s'"
spa "La ruta JSON debería de terminar con identificador de arreglo en argumento %d a función '%s'"
ER_JSON_ONE_OR_ALL
+ chi "函数'%s'的第二个å‚数必须是'一个'或'全部'"
eng "Argument 2 to function '%s' must be "one" or "all"."
spa "El argumento 2 a función '%s' debe de ser "one" o "all"."
ER_UNSUPPORTED_COMPRESSED_TABLE
+ chi "CREATE TEMPORARY TABLE ä¸å…许用ROW_FORMAT=COMPRESSED或KEY_BLOCK_SIZE"
eng "InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE."
spa "InnoDB rechaza grabar en tablas con ROW_FORMAT=COMPRESSED o KEY_BLOCK_SIZE."
ER_GEOJSON_INCORRECT
+ chi "为st_geomfromgeojson函数指定了ä¸æ­£ç¡®çš„GeoJSONæ ¼å¼ã€‚"
eng "Incorrect GeoJSON format specified for st_geomfromgeojson function."
spa "Especficado formato GeoJSON incorrecto para función st_geomfromgeojson."
ER_GEOJSON_TOO_FEW_POINTS
+ chi "Geojsonæ ¼å¼ä¸æ­£ç¡® - Linestring指定的太少点。"
eng "Incorrect GeoJSON format - too few points for linestring specified."
spa "Formato GeoJSON incorrecto - demasiados pocos puntos especificados para linestring."
ER_GEOJSON_NOT_CLOSED
+ chi "Geojsonæ ¼å¼ä¸æ­£ç¡® - 多边形未关闭。"
eng "Incorrect GeoJSON format - polygon not closed."
spa "Formato GeoJSON incorrect - polígono no cerrado."
ER_JSON_PATH_EMPTY
+ chi "path表达å¼'$'ä¸å…许在å‚æ•°%d中å…许è¿è¡Œ'%s'。"
eng "Path expression '$' is not allowed in argument %d to function '%s'."
spa "La expresión de ruta '$' no está permitida en argumento %d a función '%s'."
ER_SLAVE_SAME_ID
+ chi "与此从站相åŒçš„server_uuId / server_id的从站已连接到主设备"
eng "A slave with the same server_uuid/server_id as this slave has connected to the master"
spa "Un esclavo con el mismo server_uuid/server_id que este esclavo se ha conectado al maestro (master)"
ER_FLASHBACK_NOT_SUPPORTED
+ chi "闪回ä¸æ”¯æŒ%s%s"
eng "Flashback does not support %s %s"
spa "Retrospectiva no soporta %s %s"
-
-
-#
+#
# MyRocks error messages
#
ER_KEYS_OUT_OF_ORDER
- eng "Keys are out order during bulk load"
- spa "Claves desordenadas durante carga enorme"
+ chi "钥匙在散装负载期间出现订å•"
+ eng "Keys are out order during bulk load"
+ spa "Claves desordenadas durante carga enorme"
ER_OVERLAPPING_KEYS
- eng "Bulk load rows overlap existing rows"
- spa "La carga enorme de filas se superpone con filas existentes"
+ chi "批é‡è´Ÿè½½è¡Œé‡å çŽ°æœ‰è¡Œ"
+ eng "Bulk load rows overlap existing rows"
+ spa "La carga enorme de filas se superpone con filas existentes"
ER_REQUIRE_ROW_BINLOG_FORMAT
- eng "Can't execute updates on master with binlog_format != ROW."
- spa "No puedo ejecutar actualizaciones en maestro (master) con binlog_format != ROW."
+ chi "binlog_format != ROW时无法在master上执行更新"
+ eng "Can't execute updates on master with binlog_format != ROW."
+ spa "No puedo ejecutar actualizaciones en maestro (master) con binlog_format != ROW."
ER_ISOLATION_MODE_NOT_SUPPORTED
- eng "MyRocks supports only READ COMMITTED and REPEATABLE READ isolation levels. Please change from current isolation level %s"
- spa "MyRocks soporta sólo niveles de aislamiento READ COMMITTED y REPEATABLE READ. Por favor, cambie desde nivel de aislamiento actual %s"
+ chi "MyRocks仅支æŒè¯»å–承诺和å¯é‡å¤è¯»å–隔离级别。请从当å‰éš”离级别的%s改å˜"
+ eng "MyRocks supports only READ COMMITTED and REPEATABLE READ isolation levels. Please change from current isolation level %s"
+ spa "MyRocks soporta sólo niveles de aislamiento READ COMMITTED y REPEATABLE READ. Por favor, cambie desde nivel de aislamiento actual %s"
ER_ON_DUPLICATE_DISABLED
- eng "When unique checking is disabled in MyRocks, INSERT,UPDATE,LOAD statements with clauses that update or replace the key (i.e. INSERT ON DUPLICATE KEY UPDATE, REPLACE) are not allowed. Query: %s"
- spa "Al desactivar chequeo de único en MyRocks, las sentencias INSERT, UPDATE, LOAD con cláusulas que actualizan o reemplazan la clave (p.ej. INSERT ON DUPLICATE KEY UPDATE, REPLACE) no se permiten. Consulte (query): %s"
+ chi "当在MyRocksç¦ç”¨å”¯ä¸€æ£€æŸ¥æ—¶ï¼ŒINSERT,UPDATE, LOAD,使用Clauses更新或替æ¢ç´¢å¼•çš„å­å¥ï¼ˆå³ï¼Œåœ¨é‡å¤çš„é‡å¤é”®æ›´æ–°ï¼Œæ›¿æ¢ï¼‰ä¸­ï¼Œä¸å…许使用。查询:%s"
+ eng "When unique checking is disabled in MyRocks, INSERT,UPDATE,LOAD statements with clauses that update or replace the key (i.e. INSERT ON DUPLICATE KEY UPDATE, REPLACE) are not allowed. Query: %s"
+ spa "Al desactivar chequeo de único en MyRocks, las sentencias INSERT, UPDATE, LOAD con cláusulas que actualizan o reemplazan la clave (p.ej. INSERT ON DUPLICATE KEY UPDATE, REPLACE) no se permiten. Consulte (query): %s"
ER_UPDATES_WITH_CONSISTENT_SNAPSHOT
- eng "Can't execute updates when you started a transaction with START TRANSACTION WITH CONSISTENT [ROCKSDB] SNAPSHOT."
- spa "No puedo ejecutar actualizaciones cuando has iniciado una transacción mediante START TRANSACTION WITH CONSISTENT [ROCKSDB] SNAPSHOT."
+ chi "START TRANSACTION WITH CONSISTENT [ROCKSDB] SNAPSHOT时,无法执行更新。"
+ eng "Can't execute updates when you started a transaction with START TRANSACTION WITH CONSISTENT [ROCKSDB] SNAPSHOT."
+ spa "No puedo ejecutar actualizaciones cuando has iniciado una transacción mediante START TRANSACTION WITH CONSISTENT [ROCKSDB] SNAPSHOT."
ER_ROLLBACK_ONLY
- eng "This transaction was rolled back and cannot be committed. Only supported operation is to roll it back, so all pending changes will be discarded. Please restart another transaction."
- spa "Esta transacción se ha retrocedido (rolled back) y no puede ser acometida (commit). La única operación soportada es retroceder (roll back), de tal forma que se descartarán todos los cambios pendientes. Por favor, rearranque otra transacción."
+ chi "此交易回滚并无法承诺。åªæ”¯æŒæ”¯æŒçš„æ“作是滚动,因此将丢弃所有待处ç†çš„更改。请é‡æ–°å¯åŠ¨å…¶ä»–事务。"
+ eng "This transaction was rolled back and cannot be committed. Only supported operation is to roll it back, so all pending changes will be discarded. Please restart another transaction."
+ spa "Esta transacción se ha retrocedido (rolled back) y no puede ser acometida (commit). La única operación soportada es retroceder (roll back), de tal forma que se descartarán todos los cambios pendientes. Por favor, rearranque otra transacción."
ER_ROLLBACK_TO_SAVEPOINT
- eng "MyRocks currently does not support ROLLBACK TO SAVEPOINT if modifying rows."
- spa "MyRocks en este momento no soporta ROLLBACK TO SAVEPOINT si se están modificando filas."
+ chi "如果修改行,MyRocksç›®å‰ä¸æ”¯æŒä¿å­˜ç‚¹çš„回滚。"
+ eng "MyRocks currently does not support ROLLBACK TO SAVEPOINT if modifying rows."
+ spa "MyRocks en este momento no soporta ROLLBACK TO SAVEPOINT si se están modificando filas."
ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
- eng "Only REPEATABLE READ isolation level is supported for START TRANSACTION WITH CONSISTENT SNAPSHOT in RocksDB Storage Engine."
- spa "Sólo el nivel de aislamiento REPEATABLE READ se soporta para START TRANSACTION WITH CONSISTENT SNAPSHOT en Motor de Almacenaje RocksDB."
+ chi "在RockSDB存储引擎中,START TRANSACTION WITH CONSISTENT SNAPSHOT åªæ”¯æŒREPEATABLE READ隔离"
+ eng "Only REPEATABLE READ isolation level is supported for START TRANSACTION WITH CONSISTENT SNAPSHOT in RocksDB Storage Engine."
+ spa "Sólo el nivel de aislamiento REPEATABLE READ se soporta para START TRANSACTION WITH CONSISTENT SNAPSHOT en Motor de Almacenaje RocksDB."
ER_UNSUPPORTED_COLLATION
- eng "Unsupported collation on string indexed column %s.%s Use binary collation (%s)."
- spa "Cotejo (collation) no soportado en columna indizada de cadena %s.%s Use cotejo binario (%s)."
+ chi "字符串索引列%sçš„ä¸å—支æŒçš„归类。%s使用二进制校构(%s)。"
+ eng "Unsupported collation on string indexed column %s.%s Use binary collation (%s)."
+ spa "Cotejo (collation) no soportado en columna indizada de cadena %s.%s Use cotejo binario (%s)."
ER_METADATA_INCONSISTENCY
- eng "Table '%s' does not exist, but metadata information exists inside MyRocks. This is a sign of data inconsistency. Please check if '%s.frm' exists, and try to restore it if it does not exist."
- spa "La tabla '%s' no existe, pero existe información de metadatos dentro de MyRocks. Esto es una señal de datos inconsistentes. Por favor, revise si existe '%s.frm' e intente restaurarla si no existe."
+ chi "表'%s'ä¸å­˜åœ¨ï¼Œä½†MyRocks内存存在元数æ®ä¿¡æ¯ã€‚这是数æ®ä¸ä¸€è‡´çš„标志。请检查是å¦å­˜åœ¨'%s.frm',并å°è¯•æ¢å¤å¦‚果它ä¸å­˜åœ¨ã€‚"
+ eng "Table '%s' does not exist, but metadata information exists inside MyRocks. This is a sign of data inconsistency. Please check if '%s.frm' exists, and try to restore it if it does not exist."
+ spa "La tabla '%s' no existe, pero existe información de metadatos dentro de MyRocks. Esto es una señal de datos inconsistentes. Por favor, revise si existe '%s.frm' e intente restaurarla si no existe."
ER_CF_DIFFERENT
- eng "Column family ('%s') flag (%d) is different from an existing flag (%d). Assign a new CF flag, or do not change existing CF flag."
- spa "La familia de columna ('%s') bandera (%d) es diferente de una bandera existente (%d). Asigne una nueva bandera CF o no cambie la bandera CF."
+ chi "列æ—('%s')标志(%d)与现有标志(%d)ä¸åŒã€‚分é…æ–°çš„CF标志,或者ä¸è¦æ›´æ”¹çŽ°æœ‰çš„CF标志。"
+ eng "Column family ('%s') flag (%d) is different from an existing flag (%d). Assign a new CF flag, or do not change existing CF flag."
+ spa "La familia de columna ('%s') bandera (%d) es diferente de una bandera existente (%d). Asigne una nueva bandera CF o no cambie la bandera CF."
ER_RDB_TTL_DURATION_FORMAT
- eng "TTL duration (%s) in MyRocks must be an unsigned non-null 64-bit integer."
- spa "La duración de TTL (%s) en MyRocks debe de ser un entero sin signo no-null de 64-bit."
+ chi "Myrocks中的TTLæŒç»­æ—¶é—´(%s)必须是无符å·éžç©º64ä½æ•´æ•°ã€‚"
+ eng "TTL duration (%s) in MyRocks must be an unsigned non-null 64-bit integer."
+ spa "La duración de TTL (%s) en MyRocks debe de ser un entero sin signo no-null de 64-bit."
ER_RDB_STATUS_GENERAL
+ chi "状æ€è¯¯å·®%d从RockSDB收到:%s"
eng "Status error %d received from RocksDB: %s"
spa "Recibido error de estado %d desde RocksDB: %s"
ER_RDB_STATUS_MSG
+ chi "%s,状æ€è¯¯å·®%d从rocksdb收到:%s"
eng "%s, Status error %d received from RocksDB: %s"
spa "%s, Recibido error de estado %d desde RocksDB: %s"
ER_RDB_TTL_UNSUPPORTED
- eng "TTL support is currently disabled when table has a hidden PK."
- spa "El soporte TTL está desactivado en este momento cuando la tabla tiene una PK oculta."
+ chi "当表有éšè—çš„PK时,目å‰ç¦ç”¨TTL支æŒã€‚"
+ eng "TTL support is currently disabled when table has a hidden PK."
+ spa "El soporte TTL está desactivado en este momento cuando la tabla tiene una PK oculta."
ER_RDB_TTL_COL_FORMAT
- eng "TTL column (%s) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration."
- spa "La columna TTL (%s) en MyRocks debe de ser un entero sin signo no-null de 64-bit, debe de existir dentro de la tabla y debe de tener una duración ttl acompañante."
+ chi "Myrocks中的TTL列(%s)必须是一个无符å·çš„éžç©º64ä½æ•´æ•°ï¼Œå­˜åœ¨äºŽè¡¨å†…,并具有伴éšçš„TTLæŒç»­æ—¶é—´ã€‚"
+ eng "TTL column (%s) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration."
+ spa "La columna TTL (%s) en MyRocks debe de ser un entero sin signo no-null de 64-bit, debe de existir dentro de la tabla y debe de tener una duración ttl acompañante."
ER_PER_INDEX_CF_DEPRECATED
- eng "The per-index column family option has been deprecated"
- spa "La opcion de familia de columna por-índice está obsoleta"
+ chi "已弃用æ¯ä¸ªç´¢å¼•åˆ—æ—选项"
+ eng "The per-index column family option has been deprecated"
+ spa "La opcion de familia de columna por-índice está obsoleta"
ER_KEY_CREATE_DURING_ALTER
- eng "MyRocks failed creating new key definitions during alter."
- spa "MyRocks no pudo crear nuevas definiciones de clave durante 'alter'."
+ chi "MyRocks在Alter期间创建新的索引定义失败。"
+ eng "MyRocks failed creating new key definitions during alter."
+ spa "MyRocks no pudo crear nuevas definiciones de clave durante 'alter'."
ER_SK_POPULATE_DURING_ALTER
- eng "MyRocks failed populating secondary key during alter."
- spa "MyRocks falló al poblar clave secundaria duante el 'alter'."
-
+ chi "MyRocks在Alter期间失败填充次è¦ç´¢å¼•ã€‚"
+ eng "MyRocks failed populating secondary key during alter."
+ spa "MyRocks falló al poblar clave secundaria duante el 'alter'."
# MyRocks messages end
+
ER_SUM_FUNC_WITH_WINDOW_FUNC_AS_ARG
- eng "Window functions can not be used as arguments to group functions."
- spa "Las funciones de ventana no se pueden usar como argumentos para agrupar funciones."
+ chi "窗å£å‡½æ•°ä¸èƒ½ç”¨ä½œç»„函数的å‚数。"
+ eng "Window functions can not be used as arguments to group functions."
+ spa "Las funciones de ventana no se pueden usar como argumentos para agrupar funciones."
ER_NET_OK_PACKET_TOO_LARGE
- eng "OK packet too large"
- spa "Paquete OK demasiado grande"
+ chi "好的包太大了"
+ eng "OK packet too large"
+ spa "Paquete OK demasiado grande"
ER_GEOJSON_EMPTY_COORDINATES
+ chi "Geojsonæ ¼å¼ä¸æ­£ç¡® - 空的'coordinates'阵列。"
eng "Incorrect GeoJSON format - empty 'coordinates' array."
spa "Formato GeoJSON incorrecto - arreglo vacío de coordenadas."
ER_MYROCKS_CANT_NOPAD_COLLATION
- eng "MyRocks doesn't currently support collations with \"No pad\" attribute."
- spa "MyRocks no soporta en la actualidad cotejos con atributo \"No pad\"."
+ chi "MyRocksç›®å‰ä¸æ”¯æŒä¸Žâ€œNo Pad \â€å±žæ€§çš„归类。"
+ eng "MyRocks doesn't currently support collations with \"No pad\" attribute."
+ spa "MyRocks no soporta en la actualidad cotejos con atributo \"No pad\"."
ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+ chi "éžæ³•å‚æ•°æ•°æ®ç±»åž‹%så’Œ%s为æ“作'%s'"
eng "Illegal parameter data types %s and %s for operation '%s'"
spa "Tipos de datos de parámetro ilegales %s y %s para operación '%s'"
ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+ chi "éžæ³•å‚æ•°æ•°æ®ç±»åž‹%s用于æ“作'%s'"
eng "Illegal parameter data type %s for operation '%s'"
spa "Tipo de dato %s de parámetro ilegal para operación '%s'"
ER_WRONG_PARAMCOUNT_TO_CURSOR 42000
+ chi "对Cursorçš„å‚数计数ä¸æ­£ç¡®'%-.192s'"
eng "Incorrect parameter count to cursor '%-.192s'"
spa "Contador incorrecto de parámetro para cursor '%-.192s'"
rus "Ðекорректное количеÑтво параметров Ð´Ð»Ñ ÐºÑƒÑ€Ñора '%-.192s'"
ER_UNKNOWN_STRUCTURED_VARIABLE
+ chi "未知的结构系统å˜é‡æˆ–行程å˜é‡'%-.*s'"
eng "Unknown structured system variable or ROW routine variable '%-.*s'"
spa "Variable de sistema con estructura desconocida o variable de rutina ROW '%-.*s'"
ER_ROW_VARIABLE_DOES_NOT_HAVE_FIELD
+ chi "è¡Œå˜é‡'%-.192s'没有字段'%-.192s'"
eng "Row variable '%-.192s' does not have a field '%-.192s'"
spa "La variable de fila '%-.192s' no tiene un campo '%-.192s'"
ER_END_IDENTIFIER_DOES_NOT_MATCH
+ chi "结æŸæ ‡è¯†ç¬¦'%-.192s'ä¸åŒ¹é…'%-.192s'"
eng "END identifier '%-.192s' does not match '%-.192s'"
spa "Identificador END '%-.192s' no coincide con '%-.192s'"
ER_SEQUENCE_RUN_OUT
+ chi "åºåˆ—'%-.64s。%-.64s'å·²ç»ç”¨å®Œäº†"
eng "Sequence '%-.64s.%-.64s' has run out"
spa "La secuencia '%-.64s.%-.64s' se ha agotado"
ER_SEQUENCE_INVALID_DATA
+ chi "åºåˆ—'%-.64s。%-.64s的值冲çª"
eng "Sequence '%-.64s.%-.64s' has out of range value for options"
spa "La secuencia '%-.64s.%-.64s' tiene un valor fuera de rango para las opciones"
ER_SEQUENCE_INVALID_TABLE_STRUCTURE
+ chi "åºåˆ—'%-.64s。%-.64s'表结构无效(%s)"
eng "Sequence '%-.64s.%-.64s' table structure is invalid (%s)"
spa "La estuctura de tabla de secuencia '%-.64s.%-.64s' es inválida (%s)"
ER_SEQUENCE_ACCESS_ERROR
+ chi "åºåˆ—'%-.64s。%-.64s的访问错误"
eng "Sequence '%-.64s.%-.64s' access error"
spa "Error en acceso a secuencia '%-.64s.%-.64s'"
ER_SEQUENCE_BINLOG_FORMAT
eng "Sequences requires binlog_format mixed or row"
spa "Las secuencias requieren binlog_format mixto o fila"
ER_NOT_SEQUENCE 42S02
+ chi "'%-.64s。%-.64s'ä¸æ˜¯åºåˆ—"
eng "'%-.64s.%-.64s' is not a SEQUENCE"
spa "'%-.64s.%-.64s' no es una SECUENCIA"
ER_NOT_SEQUENCE2 42S02
+ chi "'%-.192s'ä¸æ˜¯åºåˆ—"
eng "'%-.192s' is not a SEQUENCE"
spa "'%-.192s' no es una SECUENCIA"
ER_UNKNOWN_SEQUENCES 42S02
+ chi "未知åºåˆ—:'%-.300s'"
eng "Unknown SEQUENCE: '%-.300s'"
spa "SECUENCIA desconocida: '%-.300s'"
ER_UNKNOWN_VIEW 42S02
+ chi "未知视图:'%-.300s'"
eng "Unknown VIEW: '%-.300s'"
spa "VISTA desconocida: '%-.300s'"
ER_WRONG_INSERT_INTO_SEQUENCE
+ chi "错误æ’å…¥åºåˆ—。人们åªèƒ½å°†å•è¡¨æ’入到åºåˆ—对象(与mariadb-dump)中进行。如果è¦æ›´æ”¹åºåˆ—,请使用更改åºåˆ—。"
eng "Wrong INSERT into a SEQUENCE. One can only do single table INSERT into a sequence object (like with mariadb-dump). If you want to change the SEQUENCE, use ALTER SEQUENCE instead."
spa "INSERT equivocado dentro de SEQUENCE. Uno sólo puede hacer INSERT único en tabla dentro de un objeto de secuencia (como con volcado-mariadb). Si desea cambiar la SECUENCIA, use ALTER SEQUENCE en su lugar."
ER_SP_STACK_TRACE
+ chi "在%u中以%s"
eng "At line %u in %s"
spa "En la línea %u en %s"
ER_PACKAGE_ROUTINE_IN_SPEC_NOT_DEFINED_IN_BODY
+ chi "在包规范中声明å­ç¨‹åº'%-.192s',但未在包主体中定义"
eng "Subroutine '%-.192s' is declared in the package specification but is not defined in the package body"
spa "La subrutina '%-.192s' está declarada en la especificación del paquete pero no está definida en el cuerpo del paquete"
ER_PACKAGE_ROUTINE_FORWARD_DECLARATION_NOT_DEFINED
+ chi "å­ç¨‹åº'%-.192s'具有å‰å‘声明但未定义"
eng "Subroutine '%-.192s' has a forward declaration but is not defined"
spa "La subrutina '%-.192s' tiene una declaración adelantada pero no está definida"
ER_COMPRESSED_COLUMN_USED_AS_KEY
- eng "Compressed column '%-.192s' can't be used in key specification"
- spa "Una columna comprimida '%-.192s' no se puede usar en especificación de clave"
+ chi "压缩列'%-.192s'ä¸èƒ½ç”¨äºŽç´¢å¼•è§„范"
+ eng "Compressed column '%-.192s' can't be used in key specification"
+ spa "Una columna comprimida '%-.192s' no se puede usar en especificación de clave"
ER_UNKNOWN_COMPRESSION_METHOD
- eng "Unknown compression method: %s"
- spa "Método de compresión desconocido: %s"
+ chi "未知压缩方法:%s"
+ eng "Unknown compression method: %s"
+ spa "Método de compresión desconocido: %s"
ER_WRONG_NUMBER_OF_VALUES_IN_TVC
+ chi "使用的表值构造函数具有ä¸åŒæ•°é‡çš„值"
eng "The used table value constructor has a different number of values"
spa "El constructor del valor de tabla usado tiene un número diferente de valores"
ER_FIELD_REFERENCE_IN_TVC
- eng "Field reference '%-.192s' can't be used in table value constructor"
+ chi "字段å‚考'%-.192s'ä¸èƒ½ç”¨äºŽè¡¨å€¼æž„造函数"
+ eng "Field reference '%-.192s' can't be used in table value constructor"
spa "La referencia a campo '%-.192s' no se puede usar en constructor de valor de tabla"
ER_WRONG_TYPE_FOR_PERCENTILE_FUNC
+ chi "%s函数需è¦æ•°å­—æ•°æ®ç±»åž‹"
eng "Numeric datatype is required for %s function"
spa "Se requiere de tipo de dato numérico para función %s"
ER_ARGUMENT_NOT_CONSTANT
+ chi "%s函数的å‚æ•°ä¸æ˜¯åˆ†åŒºçš„常é‡"
eng "Argument to the %s function is not a constant for a partition"
spa "El argumento de la función %s no es una constante para una partición"
ER_ARGUMENT_OUT_OF_RANGE
+ chi "%s函数的å‚æ•°ä¸å±žäºŽèŒƒå›´[0,1]"
eng "Argument to the %s function does not belong to the range [0,1]"
spa "El argumento de la función %s no pertenece al rango [0,1]"
ER_WRONG_TYPE_OF_ARGUMENT
+ chi "%s函数仅接å—å¯ä»¥è½¬æ¢ä¸ºæ•°å­—类型的å‚æ•°"
eng "%s function only accepts arguments that can be converted to numerical types"
spa "La función %s sólo acepta argumentos que se puedan convertir a tipos numéricos"
ER_NOT_AGGREGATE_FUNCTION
+ chi "在错误的上下文中使用的èšåˆç‰¹å®šæŒ‡ä»¤ï¼ˆfetch组下一行)"
eng "Aggregate specific instruction (FETCH GROUP NEXT ROW) used in a wrong context"
spa "Instrucción específica de agregación (FETCH GROUP NEXT ROW) usada en contexto equivocado"
ER_INVALID_AGGREGATE_FUNCTION
+ chi "èšåˆå‡½æ•°ä¸¢å¤±çš„èšåˆç‰¹å®šæŒ‡ä»¤ï¼ˆfetch组下一行)"
eng "Aggregate specific instruction(FETCH GROUP NEXT ROW) missing from the aggregate function"
spa "Falta instrucción específica de agregación (FETCH GROUP NEXT ROW) de la función de agregación"
ER_INVALID_VALUE_TO_LIMIT
+ chi "é™åˆ¶ä»…接å—整数值"
eng "Limit only accepts integer values"
spa "El límite sólo acepta valores enteros"
ER_INVISIBLE_NOT_NULL_WITHOUT_DEFAULT
+ chi "éšå½¢åˆ—%`s必须具有默认值"
eng "Invisible column %`s must have a default value"
spa "Una columna invisible %`s debe de tener valor por defecto"
# MariaDB error numbers related to System Versioning
+
ER_UPDATE_INFO_WITH_SYSTEM_VERSIONING
+ chi "匹é…的行:%ld已更改:%ldæ’入:%ld警告:%ld"
eng "Rows matched: %ld Changed: %ld Inserted: %ld Warnings: %ld"
spa "Filas coincidentes: %ld Cambiadas: %ld Insertadas: %ld Avisos: %ld"
ER_VERS_FIELD_WRONG_TYPE
+ chi "%`s必须为系统版本为表%s的类型%`s"
eng "%`s must be of type %s for system-versioned table %`s"
spa "%`s debe de ser del tipo %s para tabla versionada del sistema %`s"
ER_VERS_ENGINE_UNSUPPORTED
+ chi "Transaction-Precise系统版本控制%`sä¸å—支æŒ"
eng "Transaction-precise system versioning for %`s is not supported"
spa "No se soporta versionado de sistema de transacción precisa para %`s"
ER_UNUSED_23
+ chi "你永远ä¸åº”该看到它"
eng "You should never see it"
spa "Nunca debería vd de ver esto"
ER_PARTITION_WRONG_TYPE
+ chi "错误的分区类型,预期类型:%`s"
eng "Wrong partitioning type, expected type: %`s"
spa "Tipo de partición equivocada, tipo esperado: %`s"
WARN_VERS_PART_FULL
+ chi "版本化表%`s.%`s:partition%`s已满,添加更多历å²åˆ†åŒº(out of %s)"
eng "Versioned table %`s.%`s: last HISTORY partition (%`s) is out of %s, need more HISTORY partitions"
spa "Tabla versionada %`s.%`s: última partición HISTORY (%`s) fuera de %s, necesita de más particiones HISTORY"
WARN_VERS_PARAMETERS
+ chi "也许缺少å‚数:%s"
eng "Maybe missing parameters: %s"
spa "Parámetros que quizás faltan: %s"
ER_VERS_DROP_PARTITION_INTERVAL
+ chi "åªèƒ½åœ¨æ—‹è½¬é—´éš”时丢弃最旧的分区"
eng "Can only drop oldest partitions when rotating by INTERVAL"
spa "Sólo se pueden eliminar viejas particiones al rotar mediante INTERVAL"
ER_UNUSED_25
+ chi "你永远ä¸åº”该看到它"
eng "You should never see it"
spa "Nunca debería vd de ver esto"
WARN_VERS_PART_NON_HISTORICAL
+ chi "分区%`s包å«éžåŽ†å²æ•°æ®"
eng "Partition %`s contains non-historical data"
spa "La partición %`s contiene datos no históricos"
ER_VERS_ALTER_NOT_ALLOWED
+ chi "系统版本为%`s.%`sä¸å…许。更改@@system_versioning_alter_history用ALTER。"
eng "Not allowed for system-versioned %`s.%`s. Change @@system_versioning_alter_history to proceed with ALTER."
spa "No permitido para versionado del sistema %`s.%`s. Cambie @@system_versioning_alter_history para proceder con ALTER."
ER_VERS_ALTER_ENGINE_PROHIBITED
+ chi "ä¸å…许系统版本为%`s.%`s。ä¸æ”¯æŒæ›´æ”¹è¿”回/æ¥è‡ªæœ¬æœºç³»ç»Ÿç‰ˆæœ¬ä¼ è¾“引擎。"
eng "Not allowed for system-versioned %`s.%`s. Change to/from native system versioning engine is not supported."
spa "No permitido para versionado del sistema %`s.%`s. Cambio a/desde motor de versionado nativo no soportado."
ER_VERS_RANGE_PROHIBITED
+ chi "ä¸å…许使用SYSTEM_TIME范围选择器"
eng "SYSTEM_TIME range selector is not allowed"
spa "Selector de rango SYSTEM_TIME no permitido"
ER_CONFLICTING_FOR_SYSTEM_TIME
+ chi "与递归的System_timeå­å¥ç›¸å†²çª"
eng "Conflicting FOR SYSTEM_TIME clauses in WITH RECURSIVE"
spa "Cláusulas conflictivas FOR SYSTEM_TIME en WITH RECURSIVE"
ER_VERS_TABLE_MUST_HAVE_COLUMNS
+ chi "表%`s必须至少有一个版本åŽçš„列"
eng "Table %`s must have at least one versioned column"
spa "La tabla %`s debe de tener al menos una columna versionada"
ER_VERS_NOT_VERSIONED
+ chi "表%`sä¸æ˜¯ç³»ç»Ÿç‰ˆæœ¬çš„"
eng "Table %`s is not system-versioned"
spa "La tabla %`s no es versionada del sistema"
ER_MISSING
+ chi "%`s的错误å‚数:缺少'%s'"
eng "Wrong parameters for %`s: missing '%s'"
spa "Parámetros equivocados para %`s: falta '%s'"
ER_VERS_PERIOD_COLUMNS
+ chi "system_time的时期必须使用列%`s和%`s"
eng "PERIOD FOR SYSTEM_TIME must use columns %`s and %`s"
spa "PERIOD FOR SYSTEM_TIME debe de usar columnas %`s y %`s"
ER_PART_WRONG_VALUE
+ chi "用于分区%`s的错误å‚数:'%s'的错误值"
eng "Wrong parameters for partitioned %`s: wrong value for '%s'"
spa "Parámetros equivocados para particionado %`s: valor equivocado para '%s'"
ER_VERS_WRONG_PARTS
+ chi "%`s的错误分区:必须至少有一个HISTORY,åªèƒ½æœ‰ä¸€ä¸ªCURRENT"
eng "Wrong partitions for %`s: must have at least one HISTORY and exactly one last CURRENT"
spa "Particiones equivocadas para %`s: debe de tener al menos una HISTORY y exactamente un último CURRENT"
ER_VERS_NO_TRX_ID
+ chi "TRX_ID%llu在`mysql.transaction_registry`中找ä¸åˆ°"
eng "TRX_ID %llu not found in `mysql.transaction_registry`"
spa "TRX_ID %llu no hallado en `mysql.transaction_registry`"
ER_VERS_ALTER_SYSTEM_FIELD
+ chi "无法更改系统版本é…置字段%`s"
eng "Can not change system versioning field %`s"
spa "No puedo cambiar campo de versionado de sistema %`s"
ER_DROP_VERSIONING_SYSTEM_TIME_PARTITION
+ chi "无法删除由SYSTEM_TIME分区的表%`s的系统版本"
eng "Can not DROP SYSTEM VERSIONING for table %`s partitioned BY SYSTEM_TIME"
spa "No puedo DROP SYSTEM VERSIONING para la tabla %`s particionada BY SYSTEM_TIME"
ER_VERS_DB_NOT_SUPPORTED
- eng "System-versioned tables in the %`s database are not supported"
- spa "No se soportan las tablas versionadas del sistema en la base de datos %`s"
+ chi "ä¸æ”¯æŒ%`sæ•°æ®åº“中的系统版本化表"
+ eng "System-versioned tables in the %`s database are not supported"
+ spa "No se soportan las tablas versionadas del sistema en la base de datos %`s"
ER_VERS_TRT_IS_DISABLED
+ chi "事务注册表已ç¦ç”¨"
eng "Transaction registry is disabled"
spa "El registro de transaciones está desactivado"
ER_VERS_DUPLICATE_ROW_START_END
- eng "Duplicate ROW %s column %`s"
+ chi "é‡å¤è¡Œ%s列%`s"
+ eng "Duplicate ROW %s column %`s"
spa "Duplicada FILA %s columna %`s"
ER_VERS_ALREADY_VERSIONED
+ chi "表%`så·²ç»æ˜¯ç³»ç»Ÿç‰ˆæœ¬çš„"
eng "Table %`s is already system-versioned"
spa "La tabla %`s ya es versionada del sistema"
ER_UNUSED_24
- eng "You should never see it"
- spa "Nunca debería vd de ver esto"
+ chi "你永远ä¸åº”该看到它"
+ eng "You should never see it"
+ spa "Nunca debería vd de ver esto"
ER_VERS_NOT_SUPPORTED
- eng "System-versioned tables do not support %s"
+ chi "系统版本的表ä¸æ”¯æŒ%s"
+ eng "System-versioned tables do not support %s"
spa "Las tablas versionadas del sistema no soportan %s"
ER_VERS_TRX_PART_HISTORIC_ROW_NOT_SUPPORTED
+ chi "事务 - 精确的系统 - 版本的表ä¸æ”¯æŒæŒ‰è¡Œå¼€å§‹æˆ–行末端分区"
eng "Transaction-precise system-versioned tables do not support partitioning by ROW START or ROW END"
spa "Las tablas versionadas del sistemas de transacción precisa no soportan particionado mediante ROW START o ROW END"
ER_INDEX_FILE_FULL
+ chi "表'%-.192s'的索引文件已满"
eng "The index file for table '%-.192s' is full"
spa "El fichero/archivo índice para la tabla '%-.192s' está lleno"
ER_UPDATED_COLUMN_ONLY_ONCE
+ chi "列%`s.%`s在å•ä¸ªæ›´æ–°è¯­å¥ä¸­ä¸èƒ½æ›´æ¢ä¸€æ¬¡"
eng "The column %`s.%`s cannot be changed more than once in a single UPDATE statement"
spa "La columna %`s.%`s no se pude cambiar más de ua vez en una sentencia UPDATE única"
ER_EMPTY_ROW_IN_TVC
+ chi "在此上下文中,表值构造函数ä¸å…许在没有元素的行"
eng "Row with no elements is not allowed in table value constructor in this context"
spa "Fila sin elementos no se permite en constructor de valor de tabla en este contexto"
ER_VERS_QUERY_IN_PARTITION
+ chi "表%`sçš„SYSTEM_TIME分区ä¸æ”¯æŒåŽ†å²æŸ¥è¯¢"
eng "SYSTEM_TIME partitions in table %`s does not support historical query"
spa "Las particiones SYSTEM_TIME en la tabla %`s no soportan consulta (query) histórica"
ER_KEY_DOESNT_SUPPORT
+ chi "%s索引%`sä¸æ”¯æŒæ­¤æ“作"
eng "%s index %`s does not support this operation"
spa "%s índice %`s no soporta esta operación"
ER_ALTER_OPERATION_TABLE_OPTIONS_NEED_REBUILD
- eng "Changing table options requires the table to be rebuilt"
+ chi "更改表选项需è¦å°†è¦é‡å»ºçš„表格é‡å»º"
+ eng "Changing table options requires the table to be rebuilt"
spa "Cambiar las opciones de tabla requiere que la tabla sea reconstruida"
ER_BACKUP_LOCK_IS_ACTIVE
+ chi "由于您在è¿è¡ŒBACKUP STAGE,无法执行命令"
eng "Can't execute the command as you have a BACKUP STAGE active"
spa "No puedo ejecutar el comando cuando vd tiene activo un BACKUP STAGE"
ER_BACKUP_NOT_RUNNING
+ chi "您必须å¯åŠ¨å¤‡ä»½â€œå¤‡ä»½é˜¶æ®µå¼€å§‹â€"
eng "You must start backup with \"BACKUP STAGE START\""
spa "Vd debe de arracar respaldo mediante \"BACKUP STAGE START\""
ER_BACKUP_WRONG_STAGE
+ chi "备份阶段'%s'相åŒæˆ–在当å‰å¤‡ä»½é˜¶æ®µ'%s'之å‰"
eng "Backup stage '%s' is same or before current backup stage '%s'"
spa "La fase de respaldo '%s' es la misma o anterior a la fase de respaldo actual '%s'"
ER_BACKUP_STAGE_FAILED
+ chi "备份阶段'%s'失败"
eng "Backup stage '%s' failed"
spa "La fase de respaldo '%s' ha fallado"
ER_BACKUP_UNKNOWN_STAGE
+ chi "未知备份阶段:'%s'。阶段应该是START,FLUSH,BLOCK_DDL,BLOCK_COMIT或END之一"
eng "Unknown backup stage: '%s'. Stage should be one of START, FLUSH, BLOCK_DDL, BLOCK_COMMIT or END"
spa "Fase de respaldo desconocida: '%s'. La fase debería de ser una de START, FLUSH, BLOCK_DDL, BLOCK_COMMIT o END"
ER_USER_IS_BLOCKED
+ chi "由于凭è¯é”™è¯¯å¤ªå¤šï¼Œç”¨æˆ·è¢«é˜»æ­¢;用'FLUSH PRIVILEGES'解é”"
eng "User is blocked because of too many credential errors; unblock with 'FLUSH PRIVILEGES'"
spa "El usuario está bloqueado a causa de demasiados errores de credenciales; desbloquee mediante 'FLUSH PRIVILEGES'"
ER_ACCOUNT_HAS_BEEN_LOCKED
+ chi "访问拒ç»ï¼Œæ­¤å¸æˆ·å·²é”定"
eng "Access denied, this account is locked"
rum "Acces refuzat, acest cont este blocat"
spa "Acceso denegado, esta cuenta está bloqueada"
ER_PERIOD_TEMPORARY_NOT_ALLOWED
+ chi "应用程åºæ—¶é—´æ®µè¡¨ä¸èƒ½ä¸´æ—¶"
eng "Application-time period table cannot be temporary"
spa "Una tabla de período de momento-de-aplicación no puede ser temporal"
ER_PERIOD_TYPES_MISMATCH
+ chi "%`s的期间的字段有ä¸åŒçš„类型"
eng "Fields of PERIOD FOR %`s have different types"
spa "Los campos de PERIOD FOR %`s tienen tipos diferentes"
ER_MORE_THAN_ONE_PERIOD
+ chi "无法指定多个应用程åºæ—¶é—´æ®µ"
eng "Cannot specify more than one application-time period"
spa "No se puede especificar más de un período de momento de aplicación"
ER_PERIOD_FIELD_WRONG_ATTRIBUTES
+ chi "期间字段%`sä¸èƒ½æ˜¯%s"
eng "Period field %`s cannot be %s"
spa "El campo de período %`s no puede ser %s"
ER_PERIOD_NOT_FOUND
+ chi "期间%`s未在表中找到"
eng "Period %`s is not found in table"
spa "El período %`s no se ha hallado en la tabla"
ER_PERIOD_COLUMNS_UPDATED
+ chi "列%`s在更新集列表中指定的周期%`s中使用"
eng "Column %`s used in period %`s specified in update SET list"
spa "La columna %`s usada en período %`s especificado en lista de actualizar SET"
ER_PERIOD_CONSTRAINT_DROP
+ chi "无法DROP CONSTRAINT `%s`。使用DROP PERIOD `%s`"
eng "Can't DROP CONSTRAINT `%s`. Use DROP PERIOD `%s` for this"
spa "No puedo DROP CONSTRAINT `%s`. Use DROP PERIOD `%s` para esto"
ER_TOO_LONG_KEYPART 42000 S1009
+ chi "指定的索引部分太长;最大索引部分长度为 %u 个字节"
eng "Specified key part was too long; max key part length is %u bytes"
spa "La parte de clave especificada es demasiado larga; el tamaño máximo de la parte de clave es de %u bytes"
ER_TOO_LONG_DATABASE_COMMENT
- eng "Comment for database '%-.64s' is too long (max = %u)"
- spa "El comentario para la base de datos '%-.64s' es demasiado largo (máx = %u)"
+ eng "Comment for database '%-.64s' is too long (max = %u)"
+ spa "El comentario para la base de datos '%-.64s' es demasiado largo (máx = %u)"
ER_UNKNOWN_DATA_TYPE
eng "Unknown data type: '%-.64s'"
spa "Tipo de datos desconocido: '%-.64s'"
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index 78d367e4005..bc16af59d8d 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -1,5 +1,5 @@
/* Copyright (c) 2000, 2016, Oracle and/or its affiliates.
- Copyright (c) 2010, 2021, MariaDB
+ Copyright (c) 2010, 2022, MariaDB
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
@@ -807,6 +807,9 @@ int close_thread_tables(THD *thd)
DBUG_PRINT("tcache", ("table: '%s' query_id: %lu",
table->s->table_name.str, (ulong) table->query_id));
+ if (thd->locked_tables_mode)
+ table->vcol_cleanup_expr(thd);
+
/* Detach MERGE children after every statement. Even under LOCK TABLES. */
if (thd->locked_tables_mode <= LTM_LOCK_TABLES ||
table->query_id == thd->query_id)
@@ -943,6 +946,8 @@ void close_thread_table(THD *thd, TABLE **table_ptr)
table->s->db.str,
table->s->table_name.str,
MDL_SHARED));
+
+ table->vcol_cleanup_expr(thd);
table->mdl_ticket= NULL;
if (table->file)
@@ -1670,6 +1675,7 @@ bool open_table(THD *thd, TABLE_LIST *table_list, Open_table_context *ot_ctx)
MDL_ticket *mdl_ticket;
TABLE_SHARE *share;
uint gts_flags;
+ bool from_share= false;
#ifdef WITH_PARTITION_STORAGE_ENGINE
int part_names_error=0;
#endif
@@ -2032,6 +2038,7 @@ retry_share:
/* Add table to the share's used tables list. */
tc_add_table(thd, table);
+ from_share= true;
}
if (!(flags & MYSQL_OPEN_HAS_MDL_LOCK) &&
@@ -2123,6 +2130,9 @@ retry_share:
table_list->updatable= 1; // It is not derived table nor non-updatable VIEW
table_list->table= table;
+ if (!from_share && table->vcol_fix_expr(thd))
+ DBUG_RETURN(true);
+
#ifdef WITH_PARTITION_STORAGE_ENGINE
if (unlikely(table->part_info))
{
@@ -4689,7 +4699,7 @@ prepare_fk_prelocking_list(THD *thd, Query_tables_list *prelocking_ctx,
if ((op & trg2bit(TRG_EVENT_DELETE) && fk_modifies_child(fk->delete_method))
|| (op & trg2bit(TRG_EVENT_UPDATE) && fk_modifies_child(fk->update_method)))
- lock_type= TL_WRITE_ALLOW_WRITE;
+ lock_type= TL_FIRST_WRITE;
else
lock_type= TL_READ;
@@ -5436,54 +5446,6 @@ static void mark_real_tables_as_free_for_reuse(TABLE_LIST *table_list)
DBUG_VOID_RETURN;
}
-int TABLE::fix_vcol_exprs(THD *thd)
-{
- for (Field **vf= vfield; vf && *vf; vf++)
- if (fix_session_vcol_expr(thd, (*vf)->vcol_info))
- return 1;
-
- for (Field **df= default_field; df && *df; df++)
- if ((*df)->default_value &&
- fix_session_vcol_expr(thd, (*df)->default_value))
- return 1;
-
- for (Virtual_column_info **cc= check_constraints; cc && *cc; cc++)
- if (fix_session_vcol_expr(thd, (*cc)))
- return 1;
-
- return 0;
-}
-
-
-static bool fix_all_session_vcol_exprs(THD *thd, TABLE_LIST *tables)
-{
- Security_context *save_security_ctx= thd->security_ctx;
- TABLE_LIST *first_not_own= thd->lex->first_not_own_table();
- DBUG_ENTER("fix_session_vcol_expr");
-
- int error= 0;
- for (TABLE_LIST *table= tables; table && table != first_not_own && !error;
- table= table->next_global)
- {
- TABLE *t= table->table;
- if (!table->placeholder() && t->s->vcols_need_refixing &&
- table->lock_type >= TL_FIRST_WRITE)
- {
- Query_arena *stmt_backup= thd->stmt_arena;
- if (thd->stmt_arena->is_conventional())
- thd->stmt_arena= t->expr_arena;
- if (table->security_ctx)
- thd->security_ctx= table->security_ctx;
-
- error= t->fix_vcol_exprs(thd);
-
- thd->security_ctx= save_security_ctx;
- thd->stmt_arena= stmt_backup;
- }
- }
- DBUG_RETURN(error);
-}
-
/**
Lock all tables in a list.
@@ -5659,9 +5621,8 @@ bool lock_tables(THD *thd, TABLE_LIST *tables, uint count, uint flags)
}
}
- bool res= fix_all_session_vcol_exprs(thd, tables);
- if (!res && !(flags & MYSQL_OPEN_IGNORE_LOGGING_FORMAT))
- res= thd->decide_logging_format(tables);
+ const bool res= !(flags & MYSQL_OPEN_IGNORE_LOGGING_FORMAT) &&
+ thd->decide_logging_format(tables);
DBUG_RETURN(res);
}
diff --git a/sql/sql_cursor.cc b/sql/sql_cursor.cc
index 0add5845558..d45f2ac8777 100644
--- a/sql/sql_cursor.cc
+++ b/sql/sql_cursor.cc
@@ -80,19 +80,7 @@ public:
Select_materialize(THD *thd_arg, select_result *result_arg):
select_unit(thd_arg), result(result_arg), materialized_cursor(0) {}
virtual bool send_result_set_metadata(List<Item> &list, uint flags);
- bool send_eof()
- {
- if (materialized_cursor)
- materialized_cursor->on_table_fill_finished();
- return false;
- }
-
- void abort_result_set()
- {
- if (materialized_cursor)
- materialized_cursor->on_table_fill_finished();
- }
-
+ bool send_eof() { return false; }
bool view_structure_only() const
{
return result->view_structure_only();
@@ -333,6 +321,8 @@ int Materialized_cursor::open(JOIN *join __attribute__((unused)))
result->abort_result_set();
}
+ on_table_fill_finished();
+
return rc;
}
diff --git a/sql/sql_explain.cc b/sql/sql_explain.cc
index 4fd4e6d3b77..3cee9bbb2c5 100644
--- a/sql/sql_explain.cc
+++ b/sql/sql_explain.cc
@@ -606,27 +606,29 @@ void Explain_union::print_explain_json(Explain_query *query,
else
writer->add_member("union_result").start_object();
- // using_temporary_table
- make_union_table_name(table_name_buffer);
- writer->add_member("table_name").add_str(table_name_buffer);
- writer->add_member("access_type").add_str("ALL"); // not very useful
-
- /* r_loops (not present in tabular output) */
- if (is_analyze)
+ if (using_tmp)
{
- writer->add_member("r_loops").add_ll(fake_select_lex_tracker.get_loops());
- }
+ make_union_table_name(table_name_buffer);
+ writer->add_member("table_name").add_str(table_name_buffer);
+ writer->add_member("access_type").add_str("ALL"); // not very useful
- /* `r_rows` */
- if (is_analyze)
- {
- writer->add_member("r_rows");
- if (fake_select_lex_tracker.has_scans())
- writer->add_double(fake_select_lex_tracker.get_avg_rows());
- else
- writer->add_null();
- }
+ /* r_loops (not present in tabular output) */
+ if (is_analyze)
+ {
+ writer->add_member("r_loops").add_ll(
+ fake_select_lex_tracker.get_loops());
+ }
+ /* `r_rows` */
+ if (is_analyze)
+ {
+ writer->add_member("r_rows");
+ if (fake_select_lex_tracker.has_scans())
+ writer->add_double(fake_select_lex_tracker.get_avg_rows());
+ else
+ writer->add_null();
+ }
+ }
writer->add_member("query_specifications").start_array();
for (int i= 0; i < (int) union_members.elements(); i++)
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 6b9310791da..b097f84132b 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -5844,7 +5844,7 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
}
case SQLCOM_XA_START:
#ifdef WITH_WSREP
- if (WSREP(thd))
+ if (WSREP_ON)
{
my_error(ER_NOT_SUPPORTED_YET, MYF(0),
"XA transactions with Galera replication");
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index be983b7017c..0f4f5eda83b 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -897,8 +897,10 @@ void vers_select_conds_t::print(String *str, enum_query_type query_type) const
end.print(str, query_type, STRING_WITH_LEN(" AND "));
break;
case SYSTEM_TIME_BEFORE:
+ start.print(str, query_type, STRING_WITH_LEN(" FOR SYSTEM_TIME BEFORE "));
+ break;
case SYSTEM_TIME_HISTORY:
- DBUG_ASSERT(0);
+ // nothing to add
break;
case SYSTEM_TIME_ALL:
str->append(STRING_WITH_LEN(" FOR SYSTEM_TIME ALL"));
@@ -4035,12 +4037,9 @@ JOIN::create_postjoin_aggr_table(JOIN_TAB *tab, List<Item> *table_fields,
tab->join= this;
DBUG_ASSERT(tab > tab->join->join_tab || !top_join_tab_count ||
!tables_list);
+ tab->table= table;
if (tab > join_tab)
(tab - 1)->next_select= sub_select_postjoin_aggr;
- if (!(tab->aggr= new (thd->mem_root) AGGR_OP(tab)))
- goto err;
- tab->table= table;
- table->reginfo.join_tab= tab;
/* if group or order on first table, sort first */
if ((group_list && simple_group) ||
@@ -4089,12 +4088,15 @@ JOIN::create_postjoin_aggr_table(JOIN_TAB *tab, List<Item> *table_fields,
order= NULL;
}
}
-
+ if (!(tab->aggr= new (thd->mem_root) AGGR_OP(tab)))
+ goto err;
+ table->reginfo.join_tab= tab;
DBUG_RETURN(false);
err:
if (table != NULL)
free_tmp_table(thd, table);
+ tab->table= NULL;
DBUG_RETURN(true);
}
@@ -14278,6 +14280,7 @@ void JOIN::cleanup(bool full)
if (curr_tab->aggr)
{
free_tmp_table(thd, curr_tab->table);
+ curr_tab->table= NULL;
delete curr_tab->tmp_table_param;
curr_tab->tmp_table_param= NULL;
curr_tab->aggr= NULL;
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index bed3d055c09..dc8a8c53223 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -2639,7 +2639,8 @@ static int show_create_view(THD *thd, TABLE_LIST *table, String *buff)
tbl;
tbl= tbl->next_global)
{
- if (cmp(&table->view_db, tbl->view ? &tbl->view_db : &tbl->db))
+ if (!tbl->is_derived() &&
+ cmp(&table->view_db, tbl->view ? &tbl->view_db : &tbl->db))
{
table->compact_view_format= FALSE;
break;
@@ -5105,7 +5106,8 @@ end:
*/
DBUG_ASSERT(thd->open_tables == NULL);
thd->mdl_context.rollback_to_savepoint(open_tables_state_backup->mdl_system_tables_svp);
- thd->clear_error();
+ if (!thd->is_fatal_error)
+ thd->clear_error();
return res;
}
@@ -5321,6 +5323,8 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
error= 0;
goto err;
}
+ if (thd->is_fatal_error)
+ goto err;
DEBUG_SYNC(thd, "before_open_in_get_all_tables");
if (fill_schema_table_by_open(thd, &tmp_mem_root, FALSE,
@@ -9064,7 +9068,7 @@ ST_FIELD_INFO columns_fields_info[]=
Column("COLLATION_NAME", CSName(), NULLABLE, "Collation", OPEN_FRM_ONLY),
Column("COLUMN_TYPE", Longtext(65535), NOT_NULL, "Type", OPEN_FRM_ONLY),
Column("COLUMN_KEY", Varchar(3), NOT_NULL, "Key", OPEN_FRM_ONLY),
- Column("EXTRA", Varchar(30), NOT_NULL, "Extra", OPEN_FRM_ONLY),
+ Column("EXTRA", Varchar(80), NOT_NULL, "Extra", OPEN_FRM_ONLY),
Column("PRIVILEGES", Varchar(80), NOT_NULL, "Privileges", OPEN_FRM_ONLY),
Column("COLUMN_COMMENT", Varchar(COLUMN_COMMENT_MAXLEN), NOT_NULL, "Comment",
OPEN_FRM_ONLY),
diff --git a/sql/sql_tvc.cc b/sql/sql_tvc.cc
index 6efdf5f9471..be6e120716d 100644
--- a/sql/sql_tvc.cc
+++ b/sql/sql_tvc.cc
@@ -422,7 +422,9 @@ bool table_value_constr::exec(SELECT_LEX *sl)
DBUG_ENTER("table_value_constr::exec");
List_iterator_fast<List_item> li(lists_of_values);
List_item *elem;
+ THD *cur_thd= sl->parent_lex->thd;
ha_rows send_records= 0;
+ int rc=0;
if (select_options & SELECT_DESCRIBE)
DBUG_RETURN(false);
@@ -438,10 +440,10 @@ bool table_value_constr::exec(SELECT_LEX *sl)
while ((elem= li++))
{
+ cur_thd->get_stmt_da()->inc_current_row_for_warning();
if (send_records >= sl->master_unit()->lim.get_select_limit())
break;
- int rc=
- result->send_data_with_check(*elem, sl->master_unit(), send_records);
+ rc= result->send_data_with_check(*elem, sl->master_unit(), send_records);
if (!rc)
send_records++;
else if (rc > 0)
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 2afd04d4068..7e273fe9b54 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -6493,10 +6493,15 @@ binary:
| BINARY charset_or_alias { bincmp_collation($2, true); }
| charset_or_alias collate
{
- if (!my_charset_same($2, $1))
- my_yyabort_error((ER_COLLATION_CHARSET_MISMATCH, MYF(0),
- $2->coll_name.str, $1->cs_name.str));
- Lex->charset= $2;
+ if (!$2)
+ Lex->charset= $1; // CHARACTER SET cs COLLATE DEFAULT
+ else
+ {
+ if (!my_charset_same($2, $1))
+ my_yyabort_error((ER_COLLATION_CHARSET_MISMATCH, MYF(0),
+ $2->coll_name.str, $1->cs_name.str));
+ Lex->charset= $2;
+ }
}
| collate { Lex->charset= $1; }
;
diff --git a/sql/structs.h b/sql/structs.h
index 59bab6c6f18..b49b5ffcdfd 100644
--- a/sql/structs.h
+++ b/sql/structs.h
@@ -76,14 +76,14 @@ typedef struct st_key_part_info { /* Info about a key part */
uint offset; /* Offset in record (from 0) */
uint null_offset; /* Offset to null_bit in record */
/* Length of key part in bytes, excluding NULL flag and length bytes */
- uint16 length;
+ uint length;
/*
Number of bytes required to store the keypart value. This may be
different from the "length" field as it also counts
- possible NULL-flag byte (see HA_KEY_NULL_LENGTH)
- possible HA_KEY_BLOB_LENGTH bytes needed to store actual value length.
*/
- uint16 store_length;
+ uint store_length;
uint16 key_type;
field_index_t fieldnr; /* Fieldnr begins counting from 1 */
uint16 key_part_flag; /* 0 or HA_REVERSE_SORT */
diff --git a/sql/table.cc b/sql/table.cc
index f33dacc8d8c..b9f0e7596aa 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -88,10 +88,8 @@ struct extra2_fields
{ bzero((void*)this, sizeof(*this)); }
};
-static Virtual_column_info * unpack_vcol_info_from_frm(THD *, MEM_ROOT *,
+static Virtual_column_info * unpack_vcol_info_from_frm(THD *,
TABLE *, String *, Virtual_column_info **, bool *);
-static bool check_vcol_forward_refs(Field *, Virtual_column_info *,
- bool check_constraint);
/* INFORMATION_SCHEMA name */
LEX_CSTRING INFORMATION_SCHEMA_NAME= {STRING_WITH_LEN("information_schema")};
@@ -1119,9 +1117,6 @@ static void mysql57_calculate_null_position(TABLE_SHARE *share,
}
}
-static bool fix_and_check_vcol_expr(THD *thd, TABLE *table,
- Virtual_column_info *vcol);
-
/** Parse TABLE_SHARE::vcol_defs
unpack_vcol_info_from_frm
@@ -1147,6 +1142,31 @@ static bool fix_and_check_vcol_expr(THD *thd, TABLE *table,
bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
bool *error_reported, vcol_init_mode mode)
{
+ struct check_vcol_forward_refs
+ {
+ static bool check(Field *field, Virtual_column_info *vcol)
+ {
+ return vcol &&
+ vcol->expr->walk(&Item::check_field_expression_processor, 0, field);
+ }
+ static bool check_constraint(Field *field, Virtual_column_info *vcol)
+ {
+ uint32 flags= field->flags;
+ /* Check constraints can refer it itself */
+ field->flags|= NO_DEFAULT_VALUE_FLAG;
+ const bool res= check(field, vcol);
+ field->flags= flags;
+ return res;
+ }
+ static bool check(Field *field)
+ {
+ if (check(field, field->vcol_info) ||
+ check_constraint(field, field->check_constraint) ||
+ check(field, field->default_value))
+ return true;
+ return false;
+ }
+ };
CHARSET_INFO *save_character_set_client= thd->variables.character_set_client;
CHARSET_INFO *save_collation= thd->variables.collation_connection;
Query_arena *backup_stmt_arena_ptr= thd->stmt_arena;
@@ -1221,7 +1241,7 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
switch (type) {
case VCOL_GENERATED_VIRTUAL:
case VCOL_GENERATED_STORED:
- vcol= unpack_vcol_info_from_frm(thd, mem_root, table, &expr_str,
+ vcol= unpack_vcol_info_from_frm(thd, table, &expr_str,
&((*field_ptr)->vcol_info), error_reported);
*(vfield_ptr++)= *field_ptr;
DBUG_ASSERT(table->map == 0);
@@ -1241,7 +1261,7 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
table->map= 0;
break;
case VCOL_DEFAULT:
- vcol= unpack_vcol_info_from_frm(thd, mem_root, table, &expr_str,
+ vcol= unpack_vcol_info_from_frm(thd, table, &expr_str,
&((*field_ptr)->default_value),
error_reported);
*(dfield_ptr++)= *field_ptr;
@@ -1249,13 +1269,13 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
table->s->non_determinstic_insert= true;
break;
case VCOL_CHECK_FIELD:
- vcol= unpack_vcol_info_from_frm(thd, mem_root, table, &expr_str,
+ vcol= unpack_vcol_info_from_frm(thd, table, &expr_str,
&((*field_ptr)->check_constraint),
error_reported);
*check_constraint_ptr++= (*field_ptr)->check_constraint;
break;
case VCOL_CHECK_TABLE:
- vcol= unpack_vcol_info_from_frm(thd, mem_root, table, &expr_str,
+ vcol= unpack_vcol_info_from_frm(thd, table, &expr_str,
check_constraint_ptr, error_reported);
check_constraint_ptr++;
break;
@@ -1307,7 +1327,7 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
field->vcol_info= v;
field->vcol_info->expr= hash_item;
field->vcol_info->set_vcol_type(VCOL_USING_HASH);
- if (fix_and_check_vcol_expr(thd, table, v))
+ if (v->fix_and_check_expr(thd, table))
goto end;
key->user_defined_key_parts= key->ext_key_parts= key->usable_key_parts= 1;
key->key_part+= parts;
@@ -1325,7 +1345,7 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
expr_str.append(STRING_WITH_LEN("current_timestamp("));
expr_str.append_ulonglong(field->decimals());
expr_str.append(')');
- vcol= unpack_vcol_info_from_frm(thd, mem_root, table, &expr_str,
+ vcol= unpack_vcol_info_from_frm(thd, table, &expr_str,
&((*field_ptr)->default_value),
error_reported);
*(dfield_ptr++)= *field_ptr;
@@ -1347,16 +1367,11 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
/* Check that expressions aren't referring to not yet initialized fields */
for (field_ptr= table->field; *field_ptr; field_ptr++)
- {
- Field *field= *field_ptr;
- if (check_vcol_forward_refs(field, field->vcol_info, 0) ||
- check_vcol_forward_refs(field, field->check_constraint, 1) ||
- check_vcol_forward_refs(field, field->default_value, 0))
+ if (check_vcol_forward_refs::check(*field_ptr))
{
*error_reported= true;
goto end;
}
- }
table->find_constraint_correlated_indexes();
@@ -3594,21 +3609,21 @@ void TABLE_SHARE::free_frm_image(const uchar *frm)
}
-static bool fix_vcol_expr(THD *thd, Virtual_column_info *vcol)
+bool Virtual_column_info::fix_expr(THD *thd)
{
DBUG_ENTER("fix_vcol_expr");
const enum enum_column_usage saved_column_usage= thd->column_usage;
thd->column_usage= COLUMNS_WRITE;
- int error= vcol->expr->fix_fields(thd, &vcol->expr);
+ int error= expr->fix_fields(thd, &expr);
thd->column_usage= saved_column_usage;
if (unlikely(error))
{
StringBuffer<MAX_FIELD_WIDTH> str;
- vcol->print(&str);
+ print(&str);
my_error(ER_ERROR_EVALUATING_EXPRESSION, MYF(0), str.c_ptr_safe());
DBUG_RETURN(1);
}
@@ -3621,36 +3636,129 @@ static bool fix_vcol_expr(THD *thd, Virtual_column_info *vcol)
@note this is done for all vcols for INSERT/UPDATE/DELETE,
and only as needed for SELECTs.
*/
-bool fix_session_vcol_expr(THD *thd, Virtual_column_info *vcol)
+bool Virtual_column_info::fix_session_expr(THD *thd)
{
- DBUG_ENTER("fix_session_vcol_expr");
- if (!(vcol->flags & (VCOL_TIME_FUNC|VCOL_SESSION_FUNC)))
- DBUG_RETURN(0);
+ if (!need_refix())
+ return false;
- vcol->expr->walk(&Item::cleanup_excluding_fields_processor, 0, 0);
- DBUG_ASSERT(!vcol->expr->fixed());
- DBUG_RETURN(fix_vcol_expr(thd, vcol));
+ DBUG_ASSERT(!expr->fixed());
+ return fix_expr(thd);
}
-/** invoke fix_session_vcol_expr for a vcol
+bool Virtual_column_info::cleanup_session_expr()
+{
+ DBUG_ASSERT(need_refix());
+ return expr->walk(&Item::cleanup_excluding_fields_processor, 0, 0);
+}
- @note this is called for generated column or a DEFAULT expression from
- their corresponding fix_fields on SELECT.
-*/
-bool fix_session_vcol_expr_for_read(THD *thd, Field *field,
- Virtual_column_info *vcol)
+
+
+class Vcol_expr_context
{
- DBUG_ENTER("fix_session_vcol_expr_for_read");
- TABLE_LIST *tl= field->table->pos_in_table_list;
- if (!tl || tl->lock_type >= TL_FIRST_WRITE)
- DBUG_RETURN(0);
- Security_context *save_security_ctx= thd->security_ctx;
- if (tl->security_ctx)
+ bool inited;
+ THD *thd;
+ TABLE *table;
+ LEX *old_lex;
+ LEX lex;
+ table_map old_map;
+ Security_context *save_security_ctx;
+ sql_mode_t save_sql_mode;
+
+public:
+ Vcol_expr_context(THD *_thd, TABLE *_table) :
+ inited(false),
+ thd(_thd),
+ table(_table),
+ old_lex(thd->lex),
+ old_map(table->map),
+ save_security_ctx(thd->security_ctx),
+ save_sql_mode(thd->variables.sql_mode) {}
+ bool init();
+
+ ~Vcol_expr_context();
+};
+
+
+bool Vcol_expr_context::init()
+{
+ /*
+ As this is vcol expression we must narrow down name resolution to
+ single table.
+ */
+ if (init_lex_with_single_table(thd, table, &lex))
+ {
+ my_error(ER_OUT_OF_RESOURCES, MYF(0));
+ table->map= old_map;
+ return true;
+ }
+
+ lex.sql_command= old_lex->sql_command;
+ thd->variables.sql_mode= 0;
+
+ TABLE_LIST const *tl= table->pos_in_table_list;
+ DBUG_ASSERT(table->pos_in_table_list);
+
+ if (table->pos_in_table_list->security_ctx)
thd->security_ctx= tl->security_ctx;
- bool res= fix_session_vcol_expr(thd, vcol);
+
+ inited= true;
+ return false;
+}
+
+Vcol_expr_context::~Vcol_expr_context()
+{
+ if (!inited)
+ return;
+ end_lex_with_single_table(thd, table, old_lex);
+ table->map= old_map;
thd->security_ctx= save_security_ctx;
- DBUG_RETURN(res);
+ thd->variables.sql_mode= save_sql_mode;
+}
+
+
+bool TABLE::vcol_fix_expr(THD *thd)
+{
+ if (pos_in_table_list->placeholder() || vcol_refix_list.is_empty())
+ return false;
+
+ if (!thd->stmt_arena->is_conventional() &&
+ vcol_refix_list.head()->expr->fixed())
+ {
+ /* NOTE: Under trigger we already have fixed expressions */
+ return false;
+ }
+
+ Vcol_expr_context expr_ctx(thd, this);
+ if (expr_ctx.init())
+ return true;
+
+ List_iterator_fast<Virtual_column_info> it(vcol_refix_list);
+ while (Virtual_column_info *vcol= it++)
+ if (vcol->fix_session_expr(thd))
+ goto error;
+
+ return false;
+
+error:
+ DBUG_ASSERT(thd->get_stmt_da()->is_error());
+ return true;
+}
+
+
+bool TABLE::vcol_cleanup_expr(THD *thd)
+{
+ if (vcol_refix_list.is_empty())
+ return false;
+
+ List_iterator<Virtual_column_info> it(vcol_refix_list);
+ bool result= false;
+
+ while (Virtual_column_info *vcol= it++)
+ result|= vcol->cleanup_session_expr();
+
+ DBUG_ASSERT(!result || thd->get_stmt_da()->is_error());
+ return result;
}
@@ -3675,28 +3783,25 @@ bool fix_session_vcol_expr_for_read(THD *thd, Field *field,
FALSE Otherwise
*/
-static bool fix_and_check_vcol_expr(THD *thd, TABLE *table,
- Virtual_column_info *vcol)
+bool Virtual_column_info::fix_and_check_expr(THD *thd, TABLE *table)
{
- Item* func_expr= vcol->expr;
- DBUG_ENTER("fix_and_check_vcol_expr");
- DBUG_PRINT("info", ("vcol: %p", vcol));
- DBUG_ASSERT(func_expr);
+ DBUG_ENTER("Virtual_column_info::fix_and_check_expr");
+ DBUG_PRINT("info", ("vcol: %p", this));
+ DBUG_ASSERT(expr);
- if (func_expr->fixed())
+ /* NOTE: constants are fixed when constructed */
+ if (expr->fixed())
DBUG_RETURN(0); // nothing to do
- if (fix_vcol_expr(thd, vcol))
+ if (fix_expr(thd))
DBUG_RETURN(1);
- if (vcol->flags)
+ if (flags)
DBUG_RETURN(0); // already checked, no need to do it again
- /* fix_fields could've changed the expression */
- func_expr= vcol->expr;
/* this was checked in check_expression(), but the frm could be mangled... */
- if (unlikely(func_expr->result_type() == ROW_RESULT))
+ if (unlikely(expr->result_type() == ROW_RESULT))
{
my_error(ER_OPERAND_COLUMNS, MYF(0), 1);
DBUG_RETURN(1);
@@ -3708,12 +3813,12 @@ static bool fix_and_check_vcol_expr(THD *thd, TABLE *table,
*/
Item::vcol_func_processor_result res;
- int error= func_expr->walk(&Item::check_vcol_func_processor, 0, &res);
+ int error= expr->walk(&Item::check_vcol_func_processor, 0, &res);
if (unlikely(error || (res.errors & VCOL_IMPOSSIBLE)))
{
// this can only happen if the frm was corrupted
my_error(ER_VIRTUAL_COLUMN_FUNCTION_IS_NOT_ALLOWED, MYF(0), res.name,
- vcol->get_vcol_type_name(), vcol->name.str);
+ get_vcol_type_name(), name.str);
DBUG_RETURN(1);
}
else if (unlikely(res.errors & VCOL_AUTO_INC))
@@ -3728,14 +3833,14 @@ static bool fix_and_check_vcol_expr(THD *thd, TABLE *table,
*/
myf warn= table->s->frm_version < FRM_VER_EXPRESSSIONS ? ME_WARNING : 0;
my_error(ER_VIRTUAL_COLUMN_FUNCTION_IS_NOT_ALLOWED, MYF(warn),
- "AUTO_INCREMENT", vcol->get_vcol_type_name(), res.name);
+ "AUTO_INCREMENT", get_vcol_type_name(), res.name);
if (!warn)
DBUG_RETURN(1);
}
- vcol->flags= res.errors;
+ flags= res.errors;
- if (vcol->flags & VCOL_SESSION_FUNC)
- table->s->vcols_need_refixing= true;
+ if (!table->s->tmp_table && need_refix())
+ table->vcol_refix_list.push_back(this, &table->mem_root);
DBUG_RETURN(0);
}
@@ -3773,7 +3878,7 @@ static bool fix_and_check_vcol_expr(THD *thd, TABLE *table,
*/
static Virtual_column_info *
-unpack_vcol_info_from_frm(THD *thd, MEM_ROOT *mem_root, TABLE *table,
+unpack_vcol_info_from_frm(THD *thd, TABLE *table,
String *expr_str, Virtual_column_info **vcol_ptr,
bool *error_reported)
{
@@ -3812,7 +3917,7 @@ unpack_vcol_info_from_frm(THD *thd, MEM_ROOT *mem_root, TABLE *table,
vcol_storage.vcol_info->stored_in_db= vcol->stored_in_db;
vcol_storage.vcol_info->name= vcol->name;
vcol_storage.vcol_info->utf8= vcol->utf8;
- if (!fix_and_check_vcol_expr(thd, table, vcol_storage.vcol_info))
+ if (!vcol_storage.vcol_info->fix_and_check_expr(thd, table))
{
*vcol_ptr= vcol_info= vcol_storage.vcol_info; // Expression ok
DBUG_ASSERT(vcol_info->expr);
@@ -3826,22 +3931,6 @@ end:
DBUG_RETURN(vcol_info);
}
-static bool check_vcol_forward_refs(Field *field, Virtual_column_info *vcol,
- bool check_constraint)
-{
- bool res;
- uint32 flags= field->flags;
- if (check_constraint)
- {
- /* Check constraints can refer it itself */
- field->flags|= NO_DEFAULT_VALUE_FLAG;
- }
- res= (vcol &&
- vcol->expr->walk(&Item::check_field_expression_processor, 0, field));
- field->flags= flags;
- return res;
-}
-
#ifndef DBUG_OFF
static void print_long_unique_table(TABLE *table)
{
@@ -4042,6 +4131,7 @@ enum open_frm_error open_table_from_share(THD *thd, TABLE_SHARE *share,
goto err;
outparam->alias.set(tmp_alias, alias->length, table_alias_charset);
+ outparam->vcol_refix_list.empty();
/* Allocate handler */
outparam->file= 0;
@@ -8688,7 +8778,16 @@ int TABLE::update_virtual_fields(handler *h, enum_vcol_update_mode update_mode)
if (h->keyread_enabled())
DBUG_RETURN(0);
-
+ /*
+ TODO: this imposes memory leak until table flush when save_in_field()
+ does expr_arena allocation. F.ex. case in
+ gcol.gcol_supported_sql_funcs_innodb (see CONVERT_TZ):
+
+ create table t1 (
+ a datetime, b datetime generated always as
+ (convert_tz(a, 'MET', 'UTC')) virtual);
+ insert into t1 values ('2008-08-31', default);
+ */
in_use->set_n_backup_active_arena(expr_arena, &backup_arena);
/* When reading or deleting row, ignore errors from virtual columns */
@@ -8759,10 +8858,12 @@ int TABLE::update_virtual_fields(handler *h, enum_vcol_update_mode update_mode)
if (update)
{
- int field_error __attribute__((unused)) = 0;
/* Compute the actual value of the virtual fields */
DBUG_FIX_WRITE_SET(vf);
- field_error= vcol_info->expr->save_in_field(vf, 0);
+# ifndef DBUG_OFF
+ int field_error=
+# endif
+ vcol_info->expr->save_in_field(vf, 0);
DBUG_RESTORE_WRITE_SET(vf);
DBUG_PRINT("info", ("field '%s' - updated error: %d",
vf->field_name.str, field_error));
@@ -8796,6 +8897,11 @@ int TABLE::update_virtual_field(Field *vf)
Query_arena backup_arena;
Counting_error_handler count_errors;
in_use->push_internal_handler(&count_errors);
+ /*
+ TODO: this may impose memory leak until table flush.
+ See comment in
+ TABLE::update_virtual_fields(handler *, enum_vcol_update_mode).
+ */
in_use->set_n_backup_active_arena(expr_arena, &backup_arena);
bitmap_clear_all(&tmp_set);
vf->vcol_info->expr->walk(&Item::update_vcol_processor, 0, &tmp_set);
@@ -8836,6 +8942,11 @@ int TABLE::update_default_fields(bool ignore_errors)
DBUG_ENTER("TABLE::update_default_fields");
DBUG_ASSERT(default_field);
+ /*
+ TODO: this may impose memory leak until table flush.
+ See comment in
+ TABLE::update_virtual_fields(handler *, enum_vcol_update_mode).
+ */
in_use->set_n_backup_active_arena(expr_arena, &backup_arena);
/* Iterate over fields with default functions in the table */
diff --git a/sql/table.h b/sql/table.h
index 497502b2d06..dd40b1760b4 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -860,7 +860,6 @@ struct TABLE_SHARE
/* This is set for temporary tables where CREATE was binary logged */
bool table_creation_was_logged;
bool non_determinstic_insert;
- bool vcols_need_refixing;
bool has_update_default_function;
bool can_do_row_logging; /* 1 if table supports RBR */
bool long_unique_table;
@@ -1492,8 +1491,15 @@ public:
*/
bool auto_increment_field_not_null;
bool insert_or_update; /* Can be used by the handler */
+ /*
+ NOTE: alias_name_used is only a hint! It works only in need_correct_ident()
+ condition. On other cases it is FALSE even if table_name is alias.
+
+ E.g. in update t1 as x set a = 1
+ */
bool alias_name_used; /* true if table_name is alias */
bool get_fields_in_item_tree; /* Signal to fix_field */
+ List<Virtual_column_info> vcol_refix_list;
private:
bool m_needs_reopen;
bool created; /* For tmp tables. TRUE <=> tmp table was actually created.*/
@@ -1689,7 +1695,8 @@ public:
TABLE *tmp_table,
TMP_TABLE_PARAM *tmp_table_param,
bool with_cleanup);
- int fix_vcol_exprs(THD *thd);
+ bool vcol_fix_expr(THD *thd);
+ bool vcol_cleanup_expr(THD *thd);
Field *find_field_by_name(LEX_CSTRING *str) const;
bool export_structure(THD *thd, class Row_definition_list *defs);
bool is_splittable() { return spl_opt_info != NULL; }
diff --git a/sql/tztime.cc b/sql/tztime.cc
index c7756d36824..f794e3ad5cc 100644
--- a/sql/tztime.cc
+++ b/sql/tztime.cc
@@ -2432,6 +2432,11 @@ print_tz_as_sql(const char* tz_name, const TIME_ZONE_INFO *sp)
}
+#define SAVE_ENGINE(e) \
+ "\"select ENGINE into @" e "_engine" \
+ " from information_schema.TABLES" \
+ " where TABLE_SCHEMA=DATABASE() and TABLE_NAME='" e "'\""
+
/*
Print info about leap seconds in time zone as SQL statements
populating mysql.time_zone_leap_second table.
@@ -2450,12 +2455,11 @@ print_tz_leaps_as_sql(const TIME_ZONE_INFO *sp)
For all timezones.
*/
if (!opt_skip_write_binlog)
- printf("\\d |\n"
- "IF (select count(*) from information_schema.global_variables where\n"
- "variable_name='wsrep_on' and variable_value='ON') = 1 THEN\n"
- "ALTER TABLE time_zone_leap_second ENGINE=InnoDB;\n"
- "END IF|\n"
- "\\d ;\n");
+ printf(
+ "execute immediate if(@wsrep_cannot_replicate_tz, "
+ SAVE_ENGINE("time_zone_leap_second") ", 'do 0');\n"
+ "execute immediate if(@wsrep_cannot_replicate_tz, "
+ "'ALTER TABLE time_zone_leap_second ENGINE=InnoDB', 'do 0');\n");
printf("TRUNCATE TABLE time_zone_leap_second;\n");
@@ -2470,12 +2474,10 @@ print_tz_leaps_as_sql(const TIME_ZONE_INFO *sp)
}
if (!opt_skip_write_binlog)
- printf("\\d |\n"
- "IF (select count(*) from information_schema.global_variables where\n"
- "variable_name='wsrep_on' and variable_value='ON') = 1 THEN\n"
- "ALTER TABLE time_zone_leap_second ENGINE=Aria;\n"
- "END IF|\n"
- "\\d ;\n");
+ printf(
+ "execute immediate if(@wsrep_cannot_replicate_tz, "
+ "concat('ALTER TABLE time_zone_leap_second ENGINE=', "
+ "@time_zone_leap_second_engine), 'do 0');\n");
printf("ALTER TABLE time_zone_leap_second ORDER BY Transition_time;\n");
}
@@ -2654,7 +2656,7 @@ static struct my_option my_long_options[] =
&opt_verbose, &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"skip-write-binlog", 'S', "Do not replicate changes to time zone tables to the binary log, or to other nodes in a Galera cluster (if wsrep_on=ON).",
+ {"skip-write-binlog", 'S', "Do not replicate changes to time zone tables to the binary log, or to other nodes in a Galera cluster.",
&opt_skip_write_binlog,&opt_skip_write_binlog, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
@@ -2731,17 +2733,23 @@ static const char *lock_tables=
" time_zone_leap_second WRITE,\n"
" time_zone_name WRITE,\n"
" time_zone_transition WRITE,\n"
- " time_zone_transition_type WRITE;\n";
+ " time_zone_transition_type WRITE";
static const char *trunc_tables_const=
"TRUNCATE TABLE time_zone;\n"
"TRUNCATE TABLE time_zone_name;\n"
"TRUNCATE TABLE time_zone_transition;\n"
"TRUNCATE TABLE time_zone_transition_type;\n";
+static const char *wsrep_is_on=
+ "select sum(VARIABLE_NAME='wsrep_on' AND SESSION_VALUE='ON')"
+ " from information_schema.SYSTEM_VARIABLES";
+static const char *wsrep_cannot_replicate_tz=
+ "select sum(VARIABLE_NAME='wsrep_mode' and GLOBAL_VALUE NOT LIKE @replicate_opt)"
+ " from information_schema.SYSTEM_VARIABLES";
int
main(int argc, char **argv)
{
- const char *trunc_tables;
+ const char *trunc_tables= "";
MY_INIT(argv[0]);
load_defaults_or_exit("my", load_default_groups, &argc, &argv);
@@ -2757,38 +2765,47 @@ main(int argc, char **argv)
return 1;
}
- if (!(argc == 1 && !opt_leap))
- trunc_tables= "SELECT 'skip truncate tables';\n"; // No-op - needed for ELSE clause
- else
+ if (argc == 1 && !opt_leap)
trunc_tables= trunc_tables_const;
+ printf("set @wsrep_is_on=(%s);\n", wsrep_is_on);
+ printf("SELECT concat('%%', GROUP_CONCAT(OPTION), '%%') INTO @replicate_opt "
+ " FROM"
+ " (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION"
+ " FROM information_schema.TABLES"
+ " WHERE TABLE_SCHEMA=DATABASE()"
+ " AND TABLE_NAME IN ('time_zone',"
+ " 'time_zone_name',"
+ " 'time_zone_transition',"
+ " 'time_zone_transition_type',"
+ " 'time_zone_leap_second')"
+ " AND ENGINE in ('MyISAM',"
+ " 'Aria')) AS o"
+ " ORDER BY OPTION DESC;\n");
+ printf("set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (%s);\n", wsrep_cannot_replicate_tz);
if (opt_skip_write_binlog)
- /* If skip_write_binlog is set and wsrep is compiled in we disable
- sql_log_bin and wsrep_on to avoid Galera replicating below
- TRUNCATE TABLE clauses. This will allow user to set different
- time zones to nodes in Galera cluster. */
- printf("set @prep1=if((select count(*) from information_schema.global_variables where variable_name='wsrep_on' and variable_value='ON'), 'SET SESSION SQL_LOG_BIN=?, WSREP_ON=OFF;', 'do ?');\n"
- "prepare set_wsrep_write_binlog from @prep1;\n"
- "set @toggle=0; execute set_wsrep_write_binlog using @toggle;\n"
- "%s%s", trunc_tables, lock_tables);
+ /* If turn off session wsrep if we cannot replicate using galera.
+ Disable sql_log_bin as the name implies. */
+ printf("execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');\n"
+ "SET @save_sql_log_bin=@@SQL_LOG_BIN;\n"
+ "SET SESSION SQL_LOG_BIN=0;\n"
+ "SET @wsrep_cannot_replicate_tz=0;\n"
+ "%s%s;\n", trunc_tables, lock_tables);
else
// Alter time zone tables to InnoDB if wsrep_on is enabled
// to allow changes to them to replicate with Galera
- printf("\\d |\n"
- "IF (select count(*) from information_schema.global_variables where\n"
- "variable_name='wsrep_on' and variable_value='ON') = 1 THEN\n"
- "ALTER TABLE time_zone ENGINE=InnoDB;\n"
- "ALTER TABLE time_zone_name ENGINE=InnoDB;\n"
- "ALTER TABLE time_zone_transition ENGINE=InnoDB;\n"
- "ALTER TABLE time_zone_transition_type ENGINE=InnoDB;\n"
+ printf(
+ "execute immediate if(@wsrep_cannot_replicate_tz, " SAVE_ENGINE("time_zone") ", 'do 0');\n"
+ "execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');\n"
+ "execute immediate if(@wsrep_cannot_replicate_tz, " SAVE_ENGINE("time_zone_name") ", 'do 0');\n"
+ "execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_name ENGINE=InnoDB', 'do 0');\n"
+ "execute immediate if(@wsrep_cannot_replicate_tz, " SAVE_ENGINE("time_zone_transition") ", 'do 0');\n"
+ "execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition ENGINE=InnoDB', 'do 0');\n"
+ "execute immediate if(@wsrep_cannot_replicate_tz, " SAVE_ENGINE("time_zone_transition_type") ", 'do 0');\n"
+ "execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition_type ENGINE=InnoDB', 'do 0');\n"
"%s"
- "START TRANSACTION;\n"
- "ELSE\n%s"
- "END IF|\n"
- "\\d ;\n",
- trunc_tables, trunc_tables);
- // Ideally we'd like to put lock_tables in the ELSE branch however
- // "ERROR 1314 (0A000) at line 2: LOCK is not allowed in stored procedures"
+ "/*M!100602 execute immediate if(@wsrep_cannot_replicate_tz, 'start transaction', '%s')*/;\n"
+ , trunc_tables, lock_tables);
if (argc == 1 && !opt_leap)
{
@@ -2808,10 +2825,13 @@ main(int argc, char **argv)
printf("UNLOCK TABLES;\n"
"COMMIT;\n");
- printf("ALTER TABLE time_zone_transition "
- "ORDER BY Time_zone_id, Transition_time;\n");
- printf("ALTER TABLE time_zone_transition_type "
- "ORDER BY Time_zone_id, Transition_type_id;\n");
+ printf(
+ "execute immediate if(@wsrep_cannot_replicate_tz, 'do 0',"
+ "'ALTER TABLE time_zone_transition "
+ "ORDER BY Time_zone_id, Transition_time');\n"
+ "execute immediate if(@wsrep_cannot_replicate_tz, 'do 0',"
+ "'ALTER TABLE time_zone_transition_type "
+ "ORDER BY Time_zone_id, Transition_type_id');\n");
}
else
{
@@ -2836,17 +2856,22 @@ main(int argc, char **argv)
free_root(&tz_storage, MYF(0));
}
- if(!opt_skip_write_binlog)
- // Fall back to Aria
- printf("\\d |\n"
- "IF (select count(*) from information_schema.global_variables where\n"
- "variable_name='wsrep_on' and variable_value='ON') = 1 THEN\n"
- "ALTER TABLE time_zone ENGINE=Aria;\n"
- "ALTER TABLE time_zone_name ENGINE=Aria;\n"
- "ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;\n"
- "ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;\n"
- "END IF|\n"
- "\\d ;\n");
+ if(opt_skip_write_binlog)
+ printf("SET SESSION SQL_LOG_BIN=@save_sql_log_bin;\n"
+ "execute immediate if(@wsrep_is_on, 'SET SESSION WSREP_ON=@save_wsrep_on', 'do 0');\n");
+ else
+ // Change back to what it was before
+ printf(
+ "execute immediate if(@wsrep_cannot_replicate_tz, "
+ "concat('ALTER TABLE time_zone ENGINE=', @time_zone_engine), 'do 0');\n"
+ "execute immediate if(@wsrep_cannot_replicate_tz, "
+ "concat('ALTER TABLE time_zone_name ENGINE=', @time_zone_name_engine), 'do 0');\n"
+ "execute immediate if(@wsrep_cannot_replicate_tz, "
+ "concat('ALTER TABLE time_zone_transition ENGINE=', "
+ "@time_zone_transition_engine, ', ORDER BY Time_zone_id, Transition_time'), 'do 0');\n"
+ "execute immediate if(@wsrep_cannot_replicate_tz, "
+ "concat('ALTER TABLE time_zone_transition_type ENGINE=', "
+ "@time_zone_transition_type_engine, ', ORDER BY Time_zone_id, Transition_type_id'), 'do 0');\n");
free_allocated_data();
my_end(0);
diff --git a/sql/wsrep_sst.cc b/sql/wsrep_sst.cc
index d805b4c64eb..d2f74e57559 100644
--- a/sql/wsrep_sst.cc
+++ b/sql/wsrep_sst.cc
@@ -1225,35 +1225,46 @@ std::string wsrep_sst_prepare()
/*
Figure out SST receive address. Common for all SST methods.
*/
+ wsp::Address* addr_in_parser= NULL;
+
// Attempt 1: wsrep_sst_receive_address
if (wsrep_sst_receive_address &&
- strcmp (wsrep_sst_receive_address, WSREP_SST_ADDRESS_AUTO))
+ strcmp(wsrep_sst_receive_address, WSREP_SST_ADDRESS_AUTO))
{
- addr_in= wsrep_sst_receive_address;
- }
+ addr_in_parser = new wsp::Address(wsrep_sst_receive_address);
+ if (!addr_in_parser->is_valid())
+ {
+ WSREP_ERROR("Could not parse wsrep_sst_receive_address : %s",
+ wsrep_sst_receive_address);
+ unireg_abort(1);
+ }
+ }
//Attempt 2: wsrep_node_address
- else if (wsrep_node_address && strlen(wsrep_node_address))
+ else if (wsrep_node_address && *wsrep_node_address)
{
- wsp::Address addr(wsrep_node_address);
+ addr_in_parser = new wsp::Address(wsrep_node_address);
- if (!addr.is_valid())
+ if (addr_in_parser->is_valid())
+ {
+ // we must not inherit the port number from this address:
+ addr_in_parser->set_port(0);
+ }
+ else
{
WSREP_ERROR("Could not parse wsrep_node_address : %s",
wsrep_node_address);
throw wsrep::runtime_error("Failed to prepare for SST. Unrecoverable");
}
- memcpy(ip_buf, addr.get_address(), addr.get_address_len());
- addr_in= ip_buf;
}
// Attempt 3: Try to get the IP from the list of available interfaces.
else
{
- ssize_t ret= wsrep_guess_ip (ip_buf, ip_max);
+ ssize_t ret= wsrep_guess_ip(ip_buf, ip_max);
if (ret && ret < ip_max)
{
- addr_in= ip_buf;
+ addr_in_parser = new wsp::Address(ip_buf);
}
else
{
@@ -1263,6 +1274,51 @@ std::string wsrep_sst_prepare()
}
}
+ assert(addr_in_parser);
+
+ size_t len= addr_in_parser->get_address_len();
+ bool is_ipv6= addr_in_parser->is_ipv6();
+ const char* address= addr_in_parser->get_address();
+
+ if (len > (is_ipv6 ? ip_max - 2 : ip_max))
+ {
+ WSREP_ERROR("Address to accept state transfer is too long: '%s'",
+ address);
+ unireg_abort(1);
+ }
+
+ if (is_ipv6)
+ {
+ /* wsrep_sst_*.sh scripts requite ipv6 addreses to be in square breackets */
+ ip_buf[0] = '[';
+ /* the length (len) already includes the null byte: */
+ memcpy(ip_buf + 1, address, len - 1);
+ ip_buf[len] = ']';
+ ip_buf[len + 1] = 0;
+ len += 2;
+ }
+ else
+ {
+ memcpy(ip_buf, address, len);
+ }
+
+ int port= addr_in_parser->get_port();
+ if (port)
+ {
+ size_t space= ip_max - len;
+ ip_buf[len - 1] = ':';
+ int ret= snprintf(ip_buf + len, ip_max - len, "%d", port);
+ if (ret <= 0 || (size_t) ret > space)
+ {
+ WSREP_ERROR("Address to accept state transfer is too long: '%s:%d'",
+ address, port);
+ unireg_abort(1);
+ }
+ }
+
+ delete addr_in_parser;
+ addr_in = ip_buf;
+
ssize_t addr_len= -ENOSYS;
method = wsrep_sst_method;
if (!strcmp(method, WSREP_SST_MYSQLDUMP))
diff --git a/sql/wsrep_utils.h b/sql/wsrep_utils.h
index 88c5770d3fe..743e8d1fb70 100644
--- a/sql/wsrep_utils.h
+++ b/sql/wsrep_utils.h
@@ -46,6 +46,7 @@ public:
const char* get_address() { return m_address; }
size_t get_address_len() { return m_address_len; }
int get_port() { return m_port; }
+ void set_port(int port) { m_port= port; }
private:
enum family {
diff --git a/storage/archive/azio.c b/storage/archive/azio.c
index 3529d875f72..d4aae2094a7 100644
--- a/storage/archive/azio.c
+++ b/storage/archive/azio.c
@@ -71,7 +71,7 @@ int az_open (azio_stream *s, const char *path, int Flags, File fd)
s->in = 0;
s->out = 0;
s->back = EOF;
- s->crc = crc32(0L, Z_NULL, 0);
+ s->crc = 0;
s->transparent = 0;
s->mode = 'r';
s->version = (unsigned char)az_magic[1]; /* this needs to be a define to version */
diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt
index 9313f5c33b8..cfdb9751dbc 100644
--- a/storage/innobase/CMakeLists.txt
+++ b/storage/innobase/CMakeLists.txt
@@ -185,7 +185,6 @@ SET(INNOBASE_SOURCES
include/mtr0types.h
include/os0file.h
include/os0file.inl
- include/os0thread.h
include/page0cur.h
include/page0cur.inl
include/page0page.h
@@ -212,7 +211,6 @@ SET(INNOBASE_SOURCES
include/row0import.h
include/row0ins.h
include/row0log.h
- include/row0log.inl
include/row0merge.h
include/row0mysql.h
include/row0purge.h
@@ -281,7 +279,6 @@ SET(INNOBASE_SOURCES
mem/mem0mem.cc
mtr/mtr0mtr.cc
os/os0file.cc
- os/os0thread.cc
page/page0cur.cc
page/page0page.cc
page/page0zip.cc
diff --git a/storage/innobase/btr/btr0btr.cc b/storage/innobase/btr/btr0btr.cc
index 9998fe52fc4..e4e79e612a0 100644
--- a/storage/innobase/btr/btr0btr.cc
+++ b/storage/innobase/btr/btr0btr.cc
@@ -1378,7 +1378,7 @@ static void btr_page_reorganize_low(page_cur_t *cursor, dict_index_t *index,
block->page.frame + PAGE_MAX_TRX_ID + PAGE_HEADER,
PAGE_DATA - (PAGE_MAX_TRX_ID + PAGE_HEADER)));
- if (!dict_table_is_locking_disabled(index->table))
+ if (index->has_locking())
lock_move_reorganize_page(block, old);
/* Write log for the changes, if needed. */
@@ -1849,8 +1849,11 @@ btr_root_raise_and_insert(
root->page.frame, index, mtr);
/* Update the lock table and possible hash index. */
- lock_move_rec_list_end(new_block, root,
- page_get_infimum_rec(root->page.frame));
+ if (index->has_locking()) {
+ lock_move_rec_list_end(
+ new_block, root,
+ page_get_infimum_rec(root->page.frame));
+ }
/* Move any existing predicate locks */
if (dict_index_is_spatial(index)) {
@@ -1898,7 +1901,7 @@ btr_root_raise_and_insert(
information of the record to be inserted on the infimum of the
root page: we cannot discard the lock structs on the root page */
- if (!dict_table_is_locking_disabled(index->table)) {
+ if (index->has_locking()) {
lock_update_root_raise(*new_block, root_id);
}
@@ -2595,7 +2598,7 @@ btr_insert_into_right_sibling(
max_size = page_get_max_insert_size_after_reorganize(next_page, 1);
/* Extends gap lock for the next page */
- if (!dict_table_is_locking_disabled(cursor->index->table)) {
+ if (cursor->index->has_locking()) {
lock_update_split_left(next_block, block);
}
@@ -2909,9 +2912,11 @@ insert_empty:
ULINT_UNDEFINED, mtr);
/* Update the lock table and possible hash index. */
- lock_move_rec_list_start(
- new_block, block, move_limit,
- new_page + PAGE_NEW_INFIMUM);
+ if (cursor->index->has_locking()) {
+ lock_move_rec_list_start(
+ new_block, block, move_limit,
+ new_page + PAGE_NEW_INFIMUM);
+ }
btr_search_move_or_delete_hash_entries(
new_block, block);
@@ -2925,7 +2930,7 @@ insert_empty:
left_block = new_block;
right_block = block;
- if (!dict_table_is_locking_disabled(cursor->index->table)) {
+ if (cursor->index->has_locking()) {
lock_update_split_left(right_block, left_block);
}
} else {
@@ -2951,7 +2956,10 @@ insert_empty:
cursor->index, mtr);
/* Update the lock table and possible hash index. */
- lock_move_rec_list_end(new_block, block, move_limit);
+ if (cursor->index->has_locking()) {
+ lock_move_rec_list_end(new_block, block,
+ move_limit);
+ }
btr_search_move_or_delete_hash_entries(
new_block, block);
@@ -2967,7 +2975,7 @@ insert_empty:
left_block = block;
right_block = new_block;
- if (!dict_table_is_locking_disabled(cursor->index->table)) {
+ if (cursor->index->has_locking()) {
lock_update_split_right(right_block, left_block);
}
}
@@ -3267,8 +3275,10 @@ btr_lift_page_up(
/* Update the lock table and possible hash index. */
- lock_move_rec_list_end(father_block, block,
- page_get_infimum_rec(page));
+ if (index->has_locking()) {
+ lock_move_rec_list_end(father_block, block,
+ page_get_infimum_rec(page));
+ }
/* Also update the predicate locks */
if (dict_index_is_spatial(index)) {
@@ -3279,7 +3289,7 @@ btr_lift_page_up(
}
}
- if (!dict_table_is_locking_disabled(index->table)) {
+ if (index->has_locking()) {
const page_id_t id{block->page.id()};
/* Free predicate page locks on the block */
if (index->is_spatial()) {
@@ -3543,7 +3553,7 @@ retry:
lock_sys.prdt_page_free_from_discard(id);
} else {
btr_cur_node_ptr_delete(&father_cursor, mtr);
- if (!dict_table_is_locking_disabled(index->table)) {
+ if (index->has_locking()) {
lock_update_merge_left(
*merge_block, orig_pred, id);
}
@@ -3708,7 +3718,7 @@ retry:
mtr);
}
- if (!dict_table_is_locking_disabled(index->table)) {
+ if (index->has_locking()) {
lock_update_merge_right(
merge_block, orig_succ, block);
}
@@ -3850,7 +3860,7 @@ btr_discard_only_page_on_level(
}
father = btr_cur_get_block(&cursor);
- if (!dict_table_is_locking_disabled(index->table)) {
+ if (index->has_locking()) {
lock_update_discard(
father, PAGE_HEAP_NO_SUPREMUM, block);
}
@@ -4028,7 +4038,7 @@ btr_discard_page(
}
#endif /* UNIV_ZIP_DEBUG */
- if (!dict_table_is_locking_disabled(index->table)) {
+ if (index->has_locking()) {
if (left_page_no != FIL_NULL) {
lock_update_discard(merge_block, PAGE_HEAP_NO_SUPREMUM,
block);
@@ -4037,10 +4047,10 @@ btr_discard_page(
lock_get_min_heap_no(merge_block),
block);
}
- }
- if (dict_index_is_spatial(index)) {
- rtr_check_discard_page(index, cursor, block);
+ if (index->is_spatial()) {
+ rtr_check_discard_page(index, cursor, block);
+ }
}
/* Free the file page */
diff --git a/storage/innobase/btr/btr0cur.cc b/storage/innobase/btr/btr0cur.cc
index f71f4e350fd..e5bb8a9651e 100644
--- a/storage/innobase/btr/btr0cur.cc
+++ b/storage/innobase/btr/btr0cur.cc
@@ -4251,6 +4251,7 @@ btr_cur_update_in_place(
ut_ad(page_is_leaf(cursor->page_cur.block->page.frame));
rec = btr_cur_get_rec(cursor);
index = cursor->index;
+ ut_ad(!index->is_ibuf());
ut_ad(rec_offs_validate(rec, index, offsets));
ut_ad(!!page_rec_is_comp(rec) == dict_table_is_comp(index->table));
ut_ad(trx_id > 0 || (flags & BTR_KEEP_SYS_FLAG)
@@ -4551,6 +4552,7 @@ btr_cur_optimistic_update(
page = buf_block_get_frame(block);
rec = btr_cur_get_rec(cursor);
index = cursor->index;
+ ut_ad(index->has_locking());
ut_ad(trx_id > 0 || (flags & BTR_KEEP_SYS_FLAG)
|| index->table->is_temporary());
ut_ad(!!page_rec_is_comp(rec) == dict_table_is_comp(index->table));
@@ -4734,7 +4736,7 @@ any_extern:
/* Ok, we may do the replacement. Store on the page infimum the
explicit locks on rec, before deleting rec (see the comment in
btr_cur_pessimistic_update). */
- if (!dict_table_is_locking_disabled(index->table)) {
+ if (index->has_locking()) {
lock_rec_store_on_page_infimum(block, rec);
}
@@ -4768,7 +4770,7 @@ any_extern:
would have too many fields, and we would be unable to
know the size of the freed record. */
btr_page_reorganize(page_cursor, index, mtr);
- } else if (!dict_table_is_locking_disabled(index->table)) {
+ } else {
/* Restore the old explicit lock state on the record */
lock_rec_restore_from_page_infimum(*block, rec,
block->page.id());
@@ -4898,6 +4900,7 @@ btr_cur_pessimistic_update(
block = btr_cur_get_block(cursor);
page_zip = buf_block_get_page_zip(block);
index = cursor->index;
+ ut_ad(index->has_locking());
ut_ad(mtr->memo_contains_flagged(&index->lock, MTR_MEMO_X_LOCK |
MTR_MEMO_SX_LOCK));
@@ -5094,9 +5097,7 @@ btr_cur_pessimistic_update(
in the lock system delete the lock structs set on the
root page even if the root page carries just node
pointers. */
- if (!dict_table_is_locking_disabled(index->table)) {
- lock_rec_store_on_page_infimum(block, rec);
- }
+ lock_rec_store_on_page_infimum(block, rec);
}
#ifdef UNIV_ZIP_DEBUG
@@ -5128,7 +5129,7 @@ btr_cur_pessimistic_update(
btr_set_instant(page_cursor->block, *index,
mtr);
}
- } else if (!dict_table_is_locking_disabled(index->table)) {
+ } else {
lock_rec_restore_from_page_infimum(
*btr_cur_get_block(cursor), rec,
block->page.id());
@@ -5274,7 +5275,7 @@ btr_cur_pessimistic_update(
know the size of the freed record. */
btr_page_reorganize(page_cursor, index, mtr);
rec = page_cursor->rec;
- } else if (!dict_table_is_locking_disabled(index->table)) {
+ } else {
lock_rec_restore_from_page_infimum(
*btr_cur_get_block(cursor), rec, block->page.id());
}
@@ -5284,7 +5285,7 @@ btr_cur_pessimistic_update(
record was nonexistent, the supremum might have inherited its locks
from a wrong record. */
- if (!was_first && !dict_table_is_locking_disabled(index->table)) {
+ if (!was_first) {
btr_cur_pess_upd_restore_supremum(btr_cur_get_block(cursor),
rec, mtr);
}
@@ -5398,10 +5399,6 @@ btr_cur_del_mark_set_clust_rec(
<< ib::hex(trx->id) << ": "
<< rec_printer(rec, offsets).str());
- if (dict_index_is_online_ddl(index)) {
- row_log_table_delete(rec, index, offsets, NULL);
- }
-
btr_cur_upd_rec_sys(block, rec, index, offsets, trx, roll_ptr, mtr);
return(err);
}
@@ -5452,15 +5449,13 @@ It is assumed that the mtr has an x-latch on the page where the cursor is
positioned, but no latch on the whole tree.
@return TRUE if success, i.e., the page did not become too empty */
ibool
-btr_cur_optimistic_delete_func(
-/*===========================*/
+btr_cur_optimistic_delete(
+/*======================*/
btr_cur_t* cursor, /*!< in: cursor on leaf page, on the record to
delete; cursor stays valid: if deletion
succeeds, on function exit it points to the
successor of the deleted record */
-#ifdef UNIV_DEBUG
ulint flags, /*!< in: BTR_CREATE_FLAG or 0 */
-#endif /* UNIV_DEBUG */
mtr_t* mtr) /*!< in: mtr; if this function returns
TRUE on a leaf page of a secondary
index, the mtr must be committed
@@ -5532,7 +5527,7 @@ btr_cur_optimistic_delete_func(
|| (first_rec != rec
&& rec_is_add_metadata(first_rec, *index));
if (UNIV_LIKELY(empty_table)) {
- if (UNIV_LIKELY(!is_metadata)) {
+ if (UNIV_LIKELY(!is_metadata && !flags)) {
lock_update_delete(block, rec);
}
btr_page_empty(block, buf_block_get_page_zip(block),
@@ -5571,7 +5566,9 @@ btr_cur_optimistic_delete_func(
cursor->index, mtr);
goto func_exit;
} else {
- lock_update_delete(block, rec);
+ if (!flags) {
+ lock_update_delete(block, rec);
+ }
btr_search_update_hash_on_delete(cursor);
}
@@ -7057,8 +7054,6 @@ btr_store_big_rec_extern_fields(
+ prev_block->page.frame,
page_no);
}
- } else if (dict_index_is_online_ddl(index)) {
- row_log_table_blob_alloc(index, page_no);
}
ut_ad(!page_has_siblings(block->page.frame));
@@ -7308,8 +7303,6 @@ btr_free_externally_stored_field(
page_t* page;
const uint32_t space_id = mach_read_from_4(
field_ref + BTR_EXTERN_SPACE_ID);
- const uint32_t start_page = mach_read_from_4(
- field_ref + BTR_EXTERN_PAGE_NO);
uint32_t page_no;
uint32_t next_page_no;
mtr_t mtr;
@@ -7379,10 +7372,6 @@ btr_free_externally_stored_field(
return;
}
- if (page_no == start_page && dict_index_is_online_ddl(index)) {
- row_log_table_blob_free(index, start_page);
- }
-
ext_block = buf_page_get(
page_id_t(space_id, page_no), ext_zip_size,
RW_X_LATCH, &mtr);
diff --git a/storage/innobase/buf/buf0dump.cc b/storage/innobase/buf/buf0dump.cc
index b4b3dd75f30..afc227169f3 100644
--- a/storage/innobase/buf/buf0dump.cc
+++ b/storage/innobase/buf/buf0dump.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2011, 2017, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -35,7 +35,6 @@ Created April 08, 2011 Vasil Dimov
#include "buf0dump.h"
#include "dict0dict.h"
#include "os0file.h"
-#include "os0thread.h"
#include "srv0srv.h"
#include "srv0start.h"
#include "ut0byte.h"
diff --git a/storage/innobase/dict/dict0dict.cc b/storage/innobase/dict/dict0dict.cc
index 00ec4a219c5..eda73ae09e7 100644
--- a/storage/innobase/dict/dict0dict.cc
+++ b/storage/innobase/dict/dict0dict.cc
@@ -2124,7 +2124,6 @@ dict_index_remove_from_cache_low(
there can't be any active operations on this index (or table). */
if (index->online_log) {
- ut_ad(index->online_status == ONLINE_INDEX_CREATION);
row_log_free(index->online_log);
index->online_log = NULL;
}
diff --git a/storage/innobase/dict/dict0load.cc b/storage/innobase/dict/dict0load.cc
index 3d5e2434978..c309858004d 100644
--- a/storage/innobase/dict/dict0load.cc
+++ b/storage/innobase/dict/dict0load.cc
@@ -2006,6 +2006,7 @@ dict_load_indexes(
goto func_exit;
} else if (rec[8 + 8 + DATA_TRX_ID_LEN + DATA_ROLL_PTR_LEN]
== static_cast<byte>(*TEMP_INDEX_PREFIX_STR)) {
+ dict_mem_index_free(index);
goto next_rec;
} else {
const trx_id_t id = trx_read_trx_id(rec + 8 + 8);
diff --git a/storage/innobase/dict/dict0stats.cc b/storage/innobase/dict/dict0stats.cc
index b406028aa87..a081e8e5538 100644
--- a/storage/innobase/dict/dict0stats.cc
+++ b/storage/innobase/dict/dict0stats.cc
@@ -3112,7 +3112,9 @@ release_and_exit:
ret = lock_table_for_trx(index_stats, trx, LOCK_X);
}
if (ret != DB_SUCCESS) {
- trx->commit();
+ if (trx->state != TRX_STATE_NOT_STARTED) {
+ trx->commit();
+ }
goto unlocked_free_and_exit;
}
diff --git a/storage/innobase/dict/drop.cc b/storage/innobase/dict/drop.cc
index 0263c08118e..ff5ceee5e43 100644
--- a/storage/innobase/dict/drop.cc
+++ b/storage/innobase/dict/drop.cc
@@ -68,6 +68,7 @@ before transaction commit and must be rolled back explicitly are as follows:
#include "dict0defrag_bg.h"
#include "btr0defragment.h"
+#include "lock0lock.h"
#include "que0que.h"
#include "pars0pars.h"
@@ -234,6 +235,24 @@ void trx_t::commit(std::vector<pfs_os_file_t> &deleted)
if (dict_operation)
{
ut_ad(dict_sys.locked());
+ lock_sys.wr_lock(SRW_LOCK_CALL);
+ mutex_lock();
+ lock_release_on_drop(this);
+ ut_ad(UT_LIST_GET_LEN(lock.trx_locks) == 0);
+ ut_ad(ib_vector_is_empty(autoinc_locks));
+ mem_heap_empty(lock.lock_heap);
+ lock.table_locks.clear();
+ lock.was_chosen_as_deadlock_victim= false;
+ lock.n_rec_locks= 0;
+ while (dict_table_t *table= UT_LIST_GET_FIRST(lock.evicted_tables))
+ {
+ UT_LIST_REMOVE(lock.evicted_tables, table);
+ dict_mem_table_free(table);
+ }
+ dict_operation= false;
+ id= 0;
+ mutex_unlock();
+
for (const auto &p : mod_tables)
{
if (p.second.is_dropped())
@@ -255,6 +274,12 @@ void trx_t::commit(std::vector<pfs_os_file_t> &deleted)
}
}
}
+
+ lock_sys.wr_unlock();
+
+ mysql_mutex_lock(&lock_sys.wait_mutex);
+ lock_sys.deadlock_check();
+ mysql_mutex_unlock(&lock_sys.wait_mutex);
}
commit_cleanup();
}
diff --git a/storage/innobase/fil/fil0fil.cc b/storage/innobase/fil/fil0fil.cc
index 292f4dfdc13..af3e4c61c83 100644
--- a/storage/innobase/fil/fil0fil.cc
+++ b/storage/innobase/fil/fil0fil.cc
@@ -1139,7 +1139,10 @@ err_exit:
}
if (create_new_db)
+ {
+ node->find_metadata(node->handle);
continue;
+ }
if (skip_read)
{
size+= node->size;
@@ -2590,6 +2593,13 @@ tablespace_check:
? fil_space_read_crypt_data(fil_space_t::zip_size(flags),
first_page)
: NULL;
+
+ if (crypt_data && !crypt_data->is_key_found()) {
+ crypt_data->~fil_space_crypt_t();
+ ut_free(crypt_data);
+ return FIL_LOAD_INVALID;
+ }
+
space = fil_space_t::create(
space_id, flags, FIL_TYPE_TABLESPACE, crypt_data);
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index 0834bd0ba59..db0f359cb3f 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -79,7 +79,6 @@ this program; if not, write to the Free Software Foundation, Inc.,
#include "dict0load.h"
#include "btr0defragment.h"
#include "dict0crea.h"
-#include "dict0dict.h"
#include "dict0stats.h"
#include "dict0stats_bg.h"
#include "fil0fil.h"
@@ -94,9 +93,9 @@ this program; if not, write to the Free Software Foundation, Inc.,
#include "mtr0mtr.h"
#include "os0file.h"
#include "page0zip.h"
-#include "rem0types.h"
#include "row0import.h"
#include "row0ins.h"
+#include "row0log.h"
#include "row0merge.h"
#include "row0mysql.h"
#include "row0quiesce.h"
@@ -530,7 +529,6 @@ mysql_pfs_key_t fts_cache_mutex_key;
mysql_pfs_key_t fts_cache_init_mutex_key;
mysql_pfs_key_t fts_delete_mutex_key;
mysql_pfs_key_t fts_doc_id_mutex_key;
-mysql_pfs_key_t fts_pll_tokenize_mutex_key;
mysql_pfs_key_t ibuf_bitmap_mutex_key;
mysql_pfs_key_t ibuf_mutex_key;
mysql_pfs_key_t ibuf_pessimistic_insert_mutex_key;
@@ -550,10 +548,6 @@ mysql_pfs_key_t trx_pool_manager_mutex_key;
mysql_pfs_key_t lock_wait_mutex_key;
mysql_pfs_key_t trx_sys_mutex_key;
mysql_pfs_key_t srv_threads_mutex_key;
-mysql_pfs_key_t thread_mutex_key;
-mysql_pfs_key_t row_drop_list_mutex_key;
-mysql_pfs_key_t rw_trx_hash_element_mutex_key;
-mysql_pfs_key_t read_view_mutex_key;
/* all_innodb_mutexes array contains mutexes that are
performance schema instrumented if "UNIV_PFS_MUTEX"
@@ -569,7 +563,6 @@ static PSI_mutex_info all_innodb_mutexes[] = {
PSI_KEY(fts_cache_init_mutex),
PSI_KEY(fts_delete_mutex),
PSI_KEY(fts_doc_id_mutex),
- PSI_KEY(ibuf_bitmap_mutex),
PSI_KEY(ibuf_mutex),
PSI_KEY(ibuf_pessimistic_insert_mutex),
PSI_KEY(index_online_log),
@@ -1229,7 +1222,7 @@ struct log_flush_request
};
/** Buffer of pending innodb_log_flush_request() */
-MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) static
+alignas(CPU_LEVEL1_DCACHE_LINESIZE) static
struct
{
/** first request */
@@ -1950,7 +1943,9 @@ static void sst_enable_innodb_writes()
dict_stats_start();
purge_sys.resume();
wsrep_sst_disable_writes= false;
- fil_crypt_set_thread_cnt(srv_n_fil_crypt_threads);
+ const uint old_count= srv_n_fil_crypt_threads;
+ srv_n_fil_crypt_threads= 0;
+ fil_crypt_set_thread_cnt(old_count);
}
static void innodb_disable_internal_writes(bool disable)
@@ -2356,7 +2351,7 @@ innobase_mysql_print_thd(
/******************************************************************//**
Get the variable length bounds of the given character set. */
-void
+static void
innobase_get_cset_width(
/*====================*/
ulint cset, /*!< in: MySQL charset-collation code */
@@ -2368,7 +2363,7 @@ innobase_get_cset_width(
ut_ad(mbminlen);
ut_ad(mbmaxlen);
- cs = all_charsets[cset];
+ cs = cset ? get_charset((uint)cset, MYF(MY_WME)) : NULL;
if (cs) {
*mbminlen = cs->mbminlen;
*mbmaxlen = cs->mbmaxlen;
@@ -2396,6 +2391,29 @@ innobase_get_cset_width(
}
}
+/*********************************************************************//**
+Compute the mbminlen and mbmaxlen members of a data type structure. */
+void
+dtype_get_mblen(
+/*============*/
+ ulint mtype, /*!< in: main type */
+ ulint prtype, /*!< in: precise type (and collation) */
+ unsigned*mbminlen, /*!< out: minimum length of a
+ multi-byte character */
+ unsigned*mbmaxlen) /*!< out: maximum length of a
+ multi-byte character */
+{
+ if (dtype_is_string_type(mtype)) {
+ innobase_get_cset_width(dtype_get_charset_coll(prtype),
+ mbminlen, mbmaxlen);
+ ut_ad(*mbminlen <= *mbmaxlen);
+ ut_ad(*mbminlen < DATA_MBMAX);
+ ut_ad(*mbmaxlen < DATA_MBMAX);
+ } else {
+ *mbminlen = *mbmaxlen = 0;
+ }
+}
+
/******************************************************************//**
Converts an identifier to a table name. */
void
@@ -5149,33 +5167,26 @@ ha_innobase::keys_to_use_for_scanning()
return(&key_map_full);
}
-/****************************************************************//**
-Ensures that if there's a concurrent inplace ADD INDEX, being-indexed virtual
-columns are computed. They are not marked as indexed in the old table, so the
-server won't add them to the read_set automatically */
-void
-ha_innobase::column_bitmaps_signal()
-/*================================*/
+/** Ensure that indexed virtual columns will be computed. */
+void ha_innobase::column_bitmaps_signal()
{
- if (!table->vfield || table->current_lock != F_WRLCK) {
- return;
- }
+ if (!table->vfield || table->current_lock != F_WRLCK)
+ return;
- dict_index_t* clust_index = dict_table_get_first_index(m_prebuilt->table);
- uint num_v = 0;
- for (uint j = 0; j < table->s->virtual_fields; j++) {
- if (table->vfield[j]->stored_in_db()) {
- continue;
- }
+ dict_index_t* clust_index= dict_table_get_first_index(m_prebuilt->table);
+ uint num_v= 0;
+ for (uint j = 0; j < table->s->virtual_fields; j++)
+ {
+ if (table->vfield[j]->stored_in_db())
+ continue;
- dict_col_t* col = &m_prebuilt->table->v_cols[num_v].m_col;
- if (col->ord_part ||
- (dict_index_is_online_ddl(clust_index) &&
- row_log_col_is_indexed(clust_index, num_v))) {
- table->mark_virtual_column_with_deps(table->vfield[j]);
- }
- num_v++;
- }
+ dict_col_t *col= &m_prebuilt->table->v_cols[num_v].m_col;
+ if (col->ord_part ||
+ (dict_index_is_online_ddl(clust_index) &&
+ row_log_col_is_indexed(clust_index, num_v)))
+ table->mark_virtual_column_with_deps(table->vfield[j]);
+ num_v++;
+ }
}
@@ -8165,34 +8176,13 @@ calc_row_difference(
}
}
-#ifdef UNIV_DEBUG
- bool online_ord_part = false;
-#endif
-
if (is_virtual) {
/* If the virtual column is not indexed,
we shall ignore it for update */
if (!col->ord_part) {
- /* Check whether there is a table-rebuilding
- online ALTER TABLE in progress, and this
- virtual column could be newly indexed, thus
- it will be materialized. Then we will have
- to log its update.
- Note, we do not support online dropping virtual
- column while adding new index, nor with
- online alter column order while adding index,
- so the virtual column sequence must not change
- if it is online operation */
- if (dict_index_is_online_ddl(clust_index)
- && row_log_col_is_indexed(clust_index,
- num_v)) {
-#ifdef UNIV_DEBUG
- online_ord_part = true;
-#endif
- } else {
- num_v++;
- continue;
- }
+ next:
+ num_v++;
+ continue;
}
if (!uvect->old_vrow) {
@@ -8218,8 +8208,7 @@ calc_row_difference(
prebuilt, vfield, o_len,
col, old_mysql_row_col,
col_pack_len, buf);
- num_v++;
- continue;
+ goto next;
}
}
@@ -8268,7 +8257,7 @@ calc_row_difference(
upd_fld_set_virtual_col(ufield);
ufield->field_no = num_v;
- ut_ad(col->ord_part || online_ord_part);
+ ut_ad(col->ord_part);
ufield->old_v_val = static_cast<dfield_t*>(
mem_heap_alloc(
uvect->heap,
@@ -8353,7 +8342,7 @@ calc_row_difference(
prebuilt, vfield, o_len,
col, old_mysql_row_col,
col_pack_len, buf);
- ut_ad(col->ord_part || online_ord_part);
+ ut_ad(col->ord_part);
num_v++;
}
}
@@ -12835,7 +12824,6 @@ bool create_table_info_t::row_size_is_acceptable(
return true;
}
-/* FIXME: row size check has some flaws and should be improved */
dict_index_t::record_size_info_t dict_index_t::record_size_info() const
{
ut_ad(!(type & DICT_FTS));
@@ -12925,6 +12913,8 @@ dict_index_t::record_size_info_t dict_index_t::record_size_info() const
{
/* dict_index_add_col() should guarantee this */
ut_ad(!f.prefix_len || f.fixed_len == f.prefix_len);
+ if (f.prefix_len)
+ field_max_size= f.prefix_len;
/* Fixed lengths are not encoded
in ROW_FORMAT=COMPACT. */
goto add_field_size;
@@ -12978,7 +12968,8 @@ dict_index_t::record_size_info_t dict_index_t::record_size_info() const
unique columns, result.shortest_size equals the size of the
node pointer record minus the node pointer column. */
if (i + 1 == dict_index_get_n_unique_in_tree(this) &&
- result.shortest_size + REC_NODE_PTR_SIZE >= page_ptr_max)
+ result.shortest_size + REC_NODE_PTR_SIZE + (comp ? 0 : 2) >=
+ page_ptr_max)
{
result.set_too_big(i);
}
@@ -13434,6 +13425,7 @@ int ha_innobase::delete_table(const char *name)
dict_sys.unlock();
trx_t *trx= parent_trx;
+ dberr_t err= DB_SUCCESS;
if (!trx->lock.table_locks.empty() &&
thd_ddl_options(trx->mysql_thd)->is_create_select())
{
@@ -13453,11 +13445,28 @@ int ha_innobase::delete_table(const char *name)
{
trx= innobase_trx_allocate(thd);
trx_start_for_ddl(trx);
+
+ if (table->name.is_temporary())
+ /* There is no need to lock any FOREIGN KEY child tables. */;
+#ifdef WITH_PARTITION_STORAGE_ENGINE
+ else if (table->name.part())
+ /* FOREIGN KEY constraints cannot exist on partitioned tables. */;
+#endif
+ else
+ {
+ dict_sys.freeze(SRW_LOCK_CALL);
+ for (const dict_foreign_t* f : table->referenced_set)
+ if (dict_table_t* child= f->foreign_table)
+ if ((err= lock_table_for_trx(child, trx, LOCK_X)) != DB_SUCCESS)
+ break;
+ dict_sys.unfreeze();
+ }
}
dict_table_t *table_stats= nullptr, *index_stats= nullptr;
MDL_ticket *mdl_table= nullptr, *mdl_index= nullptr;
- dberr_t err= lock_table_for_trx(table, trx, LOCK_X);
+ if (err == DB_SUCCESS)
+ err= lock_table_for_trx(table, trx, LOCK_X);
const bool fts= err == DB_SUCCESS &&
(table->flags2 & (DICT_TF2_FTS_HAS_DOC_ID | DICT_TF2_FTS));
@@ -19564,7 +19573,7 @@ static MYSQL_SYSVAR_UINT(saved_page_number_debug,
srv_saved_page_number_debug, PLUGIN_VAR_OPCMDARG,
"An InnoDB page number.",
NULL, NULL, 0, 0, UINT_MAX32, 0);
-#endif
+#endif /* UNIV_DEBUG */
static MYSQL_SYSVAR_BOOL(force_primary_key,
srv_force_primary_key,
diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc
index ab2e837d5f0..35126431c73 100644
--- a/storage/innobase/handler/handler0alter.cc
+++ b/storage/innobase/handler/handler0alter.cc
@@ -836,6 +836,117 @@ inline void dict_table_t::rollback_instant(
}
}
+/* Report an InnoDB error to the client by invoking my_error(). */
+static ATTRIBUTE_COLD __attribute__((nonnull))
+void
+my_error_innodb(
+/*============*/
+ dberr_t error, /*!< in: InnoDB error code */
+ const char* table, /*!< in: table name */
+ ulint flags) /*!< in: table flags */
+{
+ switch (error) {
+ case DB_MISSING_HISTORY:
+ my_error(ER_TABLE_DEF_CHANGED, MYF(0));
+ break;
+ case DB_RECORD_NOT_FOUND:
+ my_error(ER_KEY_NOT_FOUND, MYF(0), table);
+ break;
+ case DB_DEADLOCK:
+ my_error(ER_LOCK_DEADLOCK, MYF(0));
+ break;
+ case DB_LOCK_WAIT_TIMEOUT:
+ my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0));
+ break;
+ case DB_INTERRUPTED:
+ my_error(ER_QUERY_INTERRUPTED, MYF(0));
+ break;
+ case DB_OUT_OF_MEMORY:
+ my_error(ER_OUT_OF_RESOURCES, MYF(0));
+ break;
+ case DB_OUT_OF_FILE_SPACE:
+ my_error(ER_RECORD_FILE_FULL, MYF(0), table);
+ break;
+ case DB_TEMP_FILE_WRITE_FAIL:
+ my_error(ER_TEMP_FILE_WRITE_FAILURE, MYF(0));
+ break;
+ case DB_TOO_BIG_INDEX_COL:
+ my_error(ER_INDEX_COLUMN_TOO_LONG, MYF(0),
+ (ulong) DICT_MAX_FIELD_LEN_BY_FORMAT_FLAG(flags));
+ break;
+ case DB_TOO_MANY_CONCURRENT_TRXS:
+ my_error(ER_TOO_MANY_CONCURRENT_TRXS, MYF(0));
+ break;
+ case DB_LOCK_TABLE_FULL:
+ my_error(ER_LOCK_TABLE_FULL, MYF(0));
+ break;
+ case DB_UNDO_RECORD_TOO_BIG:
+ my_error(ER_UNDO_RECORD_TOO_BIG, MYF(0));
+ break;
+ case DB_CORRUPTION:
+ my_error(ER_NOT_KEYFILE, MYF(0), table);
+ break;
+ case DB_TOO_BIG_RECORD: {
+ /* Note that in page0zip.ic page_zip_rec_needs_ext() rec_size
+ is limited to COMPRESSED_REC_MAX_DATA_SIZE (16K) or
+ REDUNDANT_REC_MAX_DATA_SIZE (16K-1). */
+ bool comp = !!(flags & DICT_TF_COMPACT);
+ ulint free_space = page_get_free_space_of_empty(comp) / 2;
+
+ if (free_space >= ulint(comp ? COMPRESSED_REC_MAX_DATA_SIZE :
+ REDUNDANT_REC_MAX_DATA_SIZE)) {
+ free_space = (comp ? COMPRESSED_REC_MAX_DATA_SIZE :
+ REDUNDANT_REC_MAX_DATA_SIZE) - 1;
+ }
+
+ my_error(ER_TOO_BIG_ROWSIZE, MYF(0), free_space);
+ break;
+ }
+ case DB_INVALID_NULL:
+ /* TODO: report the row, as we do for DB_DUPLICATE_KEY */
+ my_error(ER_INVALID_USE_OF_NULL, MYF(0));
+ break;
+ case DB_CANT_CREATE_GEOMETRY_OBJECT:
+ my_error(ER_CANT_CREATE_GEOMETRY_OBJECT, MYF(0));
+ break;
+ case DB_TABLESPACE_EXISTS:
+ my_error(ER_TABLESPACE_EXISTS, MYF(0), table);
+ break;
+
+#ifdef UNIV_DEBUG
+ case DB_SUCCESS:
+ case DB_DUPLICATE_KEY:
+ case DB_ONLINE_LOG_TOO_BIG:
+ /* These codes should not be passed here. */
+ ut_error;
+#endif /* UNIV_DEBUG */
+ default:
+ my_error(ER_GET_ERRNO, MYF(0), error, "InnoDB");
+ break;
+ }
+}
+
+/** Get the name of an erroneous key.
+@param[in] error_key_num InnoDB number of the erroneus key
+@param[in] ha_alter_info changes that were being performed
+@param[in] table InnoDB table
+@return the name of the erroneous key */
+static
+const char*
+get_error_key_name(
+ ulint error_key_num,
+ const Alter_inplace_info* ha_alter_info,
+ const dict_table_t* table)
+{
+ if (error_key_num == ULINT_UNDEFINED) {
+ return(FTS_DOC_ID_INDEX_NAME);
+ } else if (ha_alter_info->key_count == 0) {
+ return(dict_table_get_first_index(table)->name);
+ } else {
+ return(ha_alter_info->key_info_buffer[error_key_num].name.str);
+ }
+}
+
struct ha_innobase_inplace_ctx : public inplace_alter_handler_ctx
{
/** Dummy query graph */
@@ -1173,6 +1284,45 @@ struct ha_innobase_inplace_ctx : public inplace_alter_handler_ctx
return true;
return false;
}
+
+ /** Handle the apply log failure for online DDL operation.
+ @param ha_alter_info handler alter inplace info
+ @param altered_table MySQL table that is being altered
+ @param error error code
+ @retval false if error value is DB_SUCCESS or
+ TRUE in case of error */
+ bool log_failure(Alter_inplace_info *ha_alter_info,
+ TABLE *altered_table, dberr_t error)
+ {
+ ulint err_key= thr_get_trx(thr)->error_key_num;
+ switch (error) {
+ KEY *dup_key;
+ case DB_SUCCESS:
+ return false;
+ case DB_DUPLICATE_KEY:
+ if (err_key == ULINT_UNDEFINED)
+ /* This should be the hidden index on FTS_DOC_ID */
+ dup_key= nullptr;
+ else
+ {
+ DBUG_ASSERT(err_key < ha_alter_info->key_count);
+ dup_key= &ha_alter_info->key_info_buffer[err_key];
+ }
+ print_keydup_error(altered_table, dup_key, MYF(0));
+ break;
+ case DB_ONLINE_LOG_TOO_BIG:
+ my_error(ER_INNODB_ONLINE_LOG_TOO_BIG, MYF(0),
+ get_error_key_name(err_key, ha_alter_info, new_table));
+ break;
+ case DB_INDEX_CORRUPT:
+ my_error(ER_INDEX_CORRUPT, MYF(0),
+ get_error_key_name(err_key, ha_alter_info, new_table));
+ break;
+ default:
+ my_error_innodb(error, old_table->name.m_name, old_table->flags);
+ }
+ return true;
+ }
};
/********************************************************************//**
@@ -1180,96 +1330,6 @@ Get the upper limit of the MySQL integral and floating-point type.
@return maximum allowed value for the field */
ulonglong innobase_get_int_col_max_value(const Field *field);
-/* Report an InnoDB error to the client by invoking my_error(). */
-static ATTRIBUTE_COLD __attribute__((nonnull))
-void
-my_error_innodb(
-/*============*/
- dberr_t error, /*!< in: InnoDB error code */
- const char* table, /*!< in: table name */
- ulint flags) /*!< in: table flags */
-{
- switch (error) {
- case DB_MISSING_HISTORY:
- my_error(ER_TABLE_DEF_CHANGED, MYF(0));
- break;
- case DB_RECORD_NOT_FOUND:
- my_error(ER_KEY_NOT_FOUND, MYF(0), table);
- break;
- case DB_DEADLOCK:
- my_error(ER_LOCK_DEADLOCK, MYF(0));
- break;
- case DB_LOCK_WAIT_TIMEOUT:
- my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0));
- break;
- case DB_INTERRUPTED:
- my_error(ER_QUERY_INTERRUPTED, MYF(0));
- break;
- case DB_OUT_OF_MEMORY:
- my_error(ER_OUT_OF_RESOURCES, MYF(0));
- break;
- case DB_OUT_OF_FILE_SPACE:
- my_error(ER_RECORD_FILE_FULL, MYF(0), table);
- break;
- case DB_TEMP_FILE_WRITE_FAIL:
- my_error(ER_TEMP_FILE_WRITE_FAILURE, MYF(0));
- break;
- case DB_TOO_BIG_INDEX_COL:
- my_error(ER_INDEX_COLUMN_TOO_LONG, MYF(0),
- (ulong) DICT_MAX_FIELD_LEN_BY_FORMAT_FLAG(flags));
- break;
- case DB_TOO_MANY_CONCURRENT_TRXS:
- my_error(ER_TOO_MANY_CONCURRENT_TRXS, MYF(0));
- break;
- case DB_LOCK_TABLE_FULL:
- my_error(ER_LOCK_TABLE_FULL, MYF(0));
- break;
- case DB_UNDO_RECORD_TOO_BIG:
- my_error(ER_UNDO_RECORD_TOO_BIG, MYF(0));
- break;
- case DB_CORRUPTION:
- my_error(ER_NOT_KEYFILE, MYF(0), table);
- break;
- case DB_TOO_BIG_RECORD: {
- /* Note that in page0zip.ic page_zip_rec_needs_ext() rec_size
- is limited to COMPRESSED_REC_MAX_DATA_SIZE (16K) or
- REDUNDANT_REC_MAX_DATA_SIZE (16K-1). */
- bool comp = !!(flags & DICT_TF_COMPACT);
- ulint free_space = page_get_free_space_of_empty(comp) / 2;
-
- if (free_space >= ulint(comp ? COMPRESSED_REC_MAX_DATA_SIZE :
- REDUNDANT_REC_MAX_DATA_SIZE)) {
- free_space = (comp ? COMPRESSED_REC_MAX_DATA_SIZE :
- REDUNDANT_REC_MAX_DATA_SIZE) - 1;
- }
-
- my_error(ER_TOO_BIG_ROWSIZE, MYF(0), free_space);
- break;
- }
- case DB_INVALID_NULL:
- /* TODO: report the row, as we do for DB_DUPLICATE_KEY */
- my_error(ER_INVALID_USE_OF_NULL, MYF(0));
- break;
- case DB_CANT_CREATE_GEOMETRY_OBJECT:
- my_error(ER_CANT_CREATE_GEOMETRY_OBJECT, MYF(0));
- break;
- case DB_TABLESPACE_EXISTS:
- my_error(ER_TABLESPACE_EXISTS, MYF(0), table);
- break;
-
-#ifdef UNIV_DEBUG
- case DB_SUCCESS:
- case DB_DUPLICATE_KEY:
- case DB_ONLINE_LOG_TOO_BIG:
- /* These codes should not be passed here. */
- ut_error;
-#endif /* UNIV_DEBUG */
- default:
- my_error(ER_GET_ERRNO, MYF(0), error, "InnoDB");
- break;
- }
-}
-
/** Determine if fulltext indexes exist in a given table.
@param table MySQL table
@return number of fulltext indexes */
@@ -2828,7 +2888,7 @@ no_match:
= key_part.field->pack_length();
/* Any index on virtual columns cannot be used
- for reference constaint */
+ for reference constraint */
if (!key_part.field->stored_in_db()) {
goto no_match;
}
@@ -7026,6 +7086,8 @@ error_handling_drop_uncached:
row_log_free(
index->online_log);
index->online_log = NULL;
+ ctx->old_table->indexes.start
+ ->online_log = nullptr;
ok = false;
});
@@ -7148,24 +7210,8 @@ error_handling:
ctx->trx->rollback();
- if (ctx->need_rebuild()) {
- /* Free the log for online table rebuild, if
- one was allocated. */
-
- dict_index_t* clust_index = dict_table_get_first_index(
- user_table);
-
- clust_index->lock.x_lock(SRW_LOCK_CALL);
-
- if (clust_index->online_log) {
- ut_ad(ctx->online);
- row_log_abort_sec(clust_index);
- clust_index->online_status
- = ONLINE_INDEX_COMPLETE;
- }
-
- clust_index->lock.x_unlock();
- }
+ ut_ad(!ctx->need_rebuild()
+ || !user_table->indexes.start->online_log);
ctx->prebuilt->trx->error_info = NULL;
ctx->trx->error_state = DB_SUCCESS;
@@ -8338,27 +8384,6 @@ alter_templ_needs_rebuild(
return(false);
}
-/** Get the name of an erroneous key.
-@param[in] error_key_num InnoDB number of the erroneus key
-@param[in] ha_alter_info changes that were being performed
-@param[in] table InnoDB table
-@return the name of the erroneous key */
-static
-const char*
-get_error_key_name(
- ulint error_key_num,
- const Alter_inplace_info* ha_alter_info,
- const dict_table_t* table)
-{
- if (error_key_num == ULINT_UNDEFINED) {
- return(FTS_DOC_ID_INDEX_NAME);
- } else if (ha_alter_info->key_count == 0) {
- return(dict_table_get_first_index(table)->name);
- } else {
- return(ha_alter_info->key_info_buffer[error_key_num].name.str);
- }
-}
-
/** Alter the table structure in-place with operations
specified using Alter_inplace_info.
The level of concurrency allowed during this operation depends
@@ -8723,6 +8748,7 @@ inline bool rollback_inplace_alter_table(Alter_inplace_info *ha_alter_info,
DBUG_ENTER("rollback_inplace_alter_table");
+ DEBUG_SYNC_C("innodb_rollback_inplace_alter_table");
if (!ctx)
/* If we have not started a transaction yet,
(almost) nothing has been or needs to be done. */
@@ -8786,7 +8812,10 @@ inline bool rollback_inplace_alter_table(Alter_inplace_info *ha_alter_info,
thd_lock_wait_timeout(ctx->trx->mysql_thd);
const uint save_timeout= innodb_lock_wait_timeout;
innodb_lock_wait_timeout= ~0U; /* infinite */
-
+ dict_index_t *old_clust_index= ctx->old_table->indexes.start;
+ old_clust_index->lock.x_lock(SRW_LOCK_CALL);
+ old_clust_index->online_log= nullptr;
+ old_clust_index->lock.x_unlock();
if (fts_exist)
{
const dict_index_t *fts_index= nullptr;
@@ -8870,7 +8899,6 @@ free_and_exit:
}
}
- DBUG_ASSERT(!prebuilt->table->indexes.start->online_log);
DBUG_ASSERT(prebuilt->table->indexes.start->online_status ==
ONLINE_INDEX_COMPLETE);
@@ -10753,7 +10781,6 @@ static bool alter_rebuild_apply_log(
dropped were not created in the copy of the table. Apply any
last bit of the rebuild log and then rename the tables. */
dict_table_t* user_table = ctx->old_table;
- dict_table_t* rebuilt_table = ctx->new_table;
DEBUG_SYNC_C("row_log_table_apply2_before");
@@ -10782,41 +10809,8 @@ static bool alter_rebuild_apply_log(
ctx->new_table->vc_templ = NULL;
}
- ulint err_key = thr_get_trx(ctx->thr)->error_key_num;
-
- switch (error) {
- KEY* dup_key;
- case DB_SUCCESS:
- break;
- case DB_DUPLICATE_KEY:
- if (err_key == ULINT_UNDEFINED) {
- /* This should be the hidden index on
- FTS_DOC_ID. */
- dup_key = NULL;
- } else {
- DBUG_ASSERT(err_key < ha_alter_info->key_count);
- dup_key = &ha_alter_info->key_info_buffer[err_key];
- }
-
- print_keydup_error(altered_table, dup_key, MYF(0));
- DBUG_RETURN(true);
- case DB_ONLINE_LOG_TOO_BIG:
- my_error(ER_INNODB_ONLINE_LOG_TOO_BIG, MYF(0),
- get_error_key_name(err_key, ha_alter_info,
- rebuilt_table));
- DBUG_RETURN(true);
- case DB_INDEX_CORRUPT:
- my_error(ER_INDEX_CORRUPT, MYF(0),
- get_error_key_name(err_key, ha_alter_info,
- rebuilt_table));
- DBUG_RETURN(true);
- default:
- my_error_innodb(error, ctx->old_table->name.m_name,
- user_table->flags);
- DBUG_RETURN(true);
- }
-
- DBUG_RETURN(false);
+ DBUG_RETURN(ctx->log_failure(
+ ha_alter_info, altered_table, error));
}
/** Commit or rollback the changes made during
@@ -11007,6 +11001,72 @@ lock_fail:
DBUG_RETURN(true);
}
}
+ } else {
+ dberr_t error= DB_SUCCESS;
+ for (inplace_alter_handler_ctx** pctx= ctx_array; *pctx;
+ pctx++) {
+ auto ctx= static_cast<ha_innobase_inplace_ctx*>(*pctx);
+
+ if (!ctx->online || !ctx->old_table->space
+ || !ctx->old_table->is_readable()) {
+ continue;
+ }
+
+ for (ulint i = 0; i < ctx->num_to_add_index; i++) {
+ dict_index_t *index= ctx->add_index[i];
+
+ ut_ad(!(index->type &
+ (DICT_FTS | DICT_SPATIAL)));
+
+ index->lock.x_lock(SRW_LOCK_CALL);
+ if (!index->online_log) {
+ /* online log would've cleared
+ when we detect the error in
+ other index */
+ index->lock.x_unlock();
+ continue;
+ }
+
+ if (index->is_corrupted()) {
+ /* Online index log has been
+ preserved to show the error
+ when it happened via
+ row_log_apply() by DML thread */
+ error= row_log_get_error(index);
+err_index:
+ ut_ad(error != DB_SUCCESS);
+ ctx->log_failure(
+ ha_alter_info,
+ altered_table, error);
+ row_log_free(index->online_log);
+ index->online_log= nullptr;
+ index->lock.x_unlock();
+
+ ctx->old_table->indexes.start
+ ->online_log= nullptr;
+ if (fts_exist) {
+ purge_sys.resume_FTS();
+ }
+ MONITOR_ATOMIC_INC(
+ MONITOR_BACKGROUND_DROP_INDEX);
+ DBUG_RETURN(true);
+ }
+
+ error = row_log_apply(
+ m_prebuilt->trx, index, altered_table,
+ ctx->m_stage);
+
+ if (error != DB_SUCCESS) {
+ goto err_index;
+ }
+
+ row_log_free(index->online_log);
+ index->online_log= nullptr;
+ index->lock.x_unlock();
+ }
+
+ ctx->old_table->indexes.start->online_log= nullptr;
+ }
}
dict_table_t *table_stats = nullptr, *index_stats = nullptr;
@@ -11039,6 +11099,10 @@ lock_fail:
error = lock_table_for_trx(index_stats, trx, LOCK_X);
}
}
+
+ DBUG_EXECUTE_IF("stats_lock_fail",
+ error = DB_LOCK_WAIT;);
+
if (error == DB_SUCCESS) {
error = lock_sys_tables(trx);
}
diff --git a/storage/innobase/ibuf/ibuf0ibuf.cc b/storage/innobase/ibuf/ibuf0ibuf.cc
index 07d18815c8a..b035d73774d 100644
--- a/storage/innobase/ibuf/ibuf0ibuf.cc
+++ b/storage/innobase/ibuf/ibuf0ibuf.cc
@@ -239,9 +239,7 @@ static
/** The mutex protecting the insert buffer */
mysql_mutex_t ibuf_mutex,
/** The mutex covering pessimistic inserts into the change buffer */
- ibuf_pessimistic_insert_mutex,
- /** mutex covering all change buffer bitmap pages */
- ibuf_bitmap_mutex;
+ ibuf_pessimistic_insert_mutex;
/** The area in pages from which contract looks for page numbers for merge */
const ulint IBUF_MERGE_AREA = 8;
@@ -358,7 +356,6 @@ ibuf_close(void)
mysql_mutex_destroy(&ibuf_pessimistic_insert_mutex);
mysql_mutex_destroy(&ibuf_mutex);
- mysql_mutex_destroy(&ibuf_bitmap_mutex);
dict_table_t* ibuf_table = ibuf.index->table;
ibuf.index->lock.free();
@@ -422,7 +419,6 @@ ibuf_init_at_db_start(void)
* CHANGE_BUFFER_DEFAULT_SIZE) / 100;
mysql_mutex_init(ibuf_mutex_key, &ibuf_mutex, nullptr);
- mysql_mutex_init(ibuf_bitmap_mutex_key, &ibuf_bitmap_mutex, nullptr);
mysql_mutex_init(ibuf_pessimistic_insert_mutex_key,
&ibuf_pessimistic_insert_mutex, nullptr);
@@ -868,26 +864,16 @@ ibuf_update_free_bits_for_two_pages_low(
buf_block_t* block2, /*!< in: index page */
mtr_t* mtr) /*!< in: mtr */
{
- ulint state;
+ ut_ad(mtr->is_named_space(block1->page.id().space()));
+ ut_ad(block1->page.id().space() == block2->page.id().space());
- ut_ad(mtr->is_named_space(block1->page.id().space()));
- ut_ad(block1->page.id().space() == block2->page.id().space());
+ /* Avoid deadlocks by acquiring multiple bitmap page latches in
+ a consistent order (smaller pointer first). */
+ if (block1 > block2)
+ std::swap(block1, block2);
- /* As we have to x-latch two random bitmap pages, we have to acquire
- the bitmap mutex to prevent a deadlock with a similar operation
- performed by another OS thread. */
-
- mysql_mutex_lock(&ibuf_bitmap_mutex);
-
- state = ibuf_index_page_calc_free(block1);
-
- ibuf_set_free_bits_low(block1, state, mtr);
-
- state = ibuf_index_page_calc_free(block2);
-
- ibuf_set_free_bits_low(block2, state, mtr);
-
- mysql_mutex_unlock(&ibuf_bitmap_mutex);
+ ibuf_set_free_bits_low(block1, ibuf_index_page_calc_free(block1), mtr);
+ ibuf_set_free_bits_low(block2, ibuf_index_page_calc_free(block2), mtr);
}
/** Returns TRUE if the page is one of the fixed address ibuf pages.
@@ -4045,7 +4031,6 @@ static MY_ATTRIBUTE((warn_unused_result, nonnull))
bool ibuf_delete_rec(const page_id_t page_id, btr_pcur_t* pcur,
const dtuple_t* search_tuple, mtr_t* mtr)
{
- ibool success;
page_t* root;
dberr_t err;
@@ -4056,10 +4041,8 @@ bool ibuf_delete_rec(const page_id_t page_id, btr_pcur_t* pcur,
ut_ad(ibuf_rec_get_space(mtr, btr_pcur_get_rec(pcur))
== page_id.space());
- success = btr_cur_optimistic_delete(btr_pcur_get_btr_cur(pcur),
- 0, mtr);
-
- if (success) {
+ if (btr_cur_optimistic_delete(btr_pcur_get_btr_cur(pcur),
+ BTR_CREATE_FLAG, mtr)) {
if (page_is_empty(btr_pcur_get_page(pcur))) {
/* If a B-tree page is empty, it must be the root page
and the whole B-tree must be empty. InnoDB does not
@@ -4103,8 +4086,8 @@ bool ibuf_delete_rec(const page_id_t page_id, btr_pcur_t* pcur,
root = ibuf_tree_root_get(mtr)->page.frame;
- btr_cur_pessimistic_delete(&err, TRUE, btr_pcur_get_btr_cur(pcur), 0,
- false, mtr);
+ btr_cur_pessimistic_delete(&err, TRUE, btr_pcur_get_btr_cur(pcur),
+ BTR_CREATE_FLAG, false, mtr);
ut_a(err == DB_SUCCESS);
ibuf_size_update(root);
diff --git a/storage/innobase/include/btr0cur.h b/storage/innobase/include/btr0cur.h
index f5f1c972957..6bcc71702d3 100644
--- a/storage/innobase/include/btr0cur.h
+++ b/storage/innobase/include/btr0cur.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1994, 2019, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -459,27 +459,18 @@ that the mtr has an x-latch on the page where the cursor is positioned,
but no latch on the whole tree.
@return TRUE if success, i.e., the page did not become too empty */
ibool
-btr_cur_optimistic_delete_func(
+btr_cur_optimistic_delete(
/*===========================*/
btr_cur_t* cursor, /*!< in: cursor on the record to delete;
cursor stays valid: if deletion succeeds,
on function exit it points to the successor
of the deleted record */
-# ifdef UNIV_DEBUG
ulint flags, /*!< in: BTR_CREATE_FLAG or 0 */
-# endif /* UNIV_DEBUG */
mtr_t* mtr) /*!< in: mtr; if this function returns
TRUE on a leaf page of a secondary
index, the mtr must be committed
before latching any further pages */
MY_ATTRIBUTE((nonnull, warn_unused_result));
-# ifdef UNIV_DEBUG
-# define btr_cur_optimistic_delete(cursor, flags, mtr) \
- btr_cur_optimistic_delete_func(cursor, flags, mtr)
-# else /* UNIV_DEBUG */
-# define btr_cur_optimistic_delete(cursor, flags, mtr) \
- btr_cur_optimistic_delete_func(cursor, mtr)
-# endif /* UNIV_DEBUG */
/*************************************************************//**
Removes the record on which the tree cursor is positioned. Tries
to compress the page if its fillfactor drops below a threshold
diff --git a/storage/innobase/include/buf0buf.h b/storage/innobase/include/buf0buf.h
index d8e01fa37fa..278a8f56524 100644
--- a/storage/innobase/include/buf0buf.h
+++ b/storage/innobase/include/buf0buf.h
@@ -1576,7 +1576,7 @@ public:
static constexpr uint32_t READ_AHEAD_PAGES= 64;
/** Buffer pool mutex */
- MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) mysql_mutex_t mutex;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) mysql_mutex_t mutex;
/** Number of pending LRU flush; protected by mutex. */
ulint n_flush_LRU_;
/** broadcast when n_flush_LRU reaches 0; protected by mutex */
@@ -1758,7 +1758,7 @@ public:
/** mutex protecting flush_list, buf_page_t::set_oldest_modification()
and buf_page_t::list pointers when !oldest_modification() */
- MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) mysql_mutex_t flush_list_mutex;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) mysql_mutex_t flush_list_mutex;
/** "hazard pointer" for flush_list scans; protected by flush_list_mutex */
FlushHp flush_hp;
/** modified blocks (a subset of LRU) */
diff --git a/storage/innobase/include/buf0types.h b/storage/innobase/include/buf0types.h
index 6bc46dbbc04..38df7cbe462 100644
--- a/storage/innobase/include/buf0types.h
+++ b/storage/innobase/include/buf0types.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
-Copyright (c) 2019, 2021, MariaDB Corporation.
+Copyright (c) 2019, 2022, MariaDB Corporation.
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
@@ -131,7 +131,7 @@ public:
/** Retrieve the fold value.
@return fold value */
- ulint fold() const { return (space() << 20) + space() + page_no(); }
+ ulint fold() const { return (ulint{space()} << 20) + space() + page_no(); }
/** Reset the page number only.
@param[in] page_no page number */
diff --git a/storage/innobase/include/data0type.h b/storage/innobase/include/data0type.h
index 5c79458e5a9..ae688bf85fe 100644
--- a/storage/innobase/include/data0type.h
+++ b/storage/innobase/include/data0type.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2020, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -24,9 +24,7 @@ Data types
Created 1/16/1996 Heikki Tuuri
*******************************************************/
-#ifndef data0type_h
-#define data0type_h
-
+#pragma once
#include "univ.i"
/** Special length indicating a missing instantly added column */
@@ -196,9 +194,6 @@ constexpr uint8_t DATA_MBR_LEN= uint8_t(SPDIMS * 2 * sizeof(double));
/** system-versioned user data column */
#define DATA_VERSIONED (DATA_VERS_START|DATA_VERS_END)
-/** Check whether locking is disabled (never). */
-#define dict_table_is_locking_disabled(table) false
-
/*-------------------------------------------*/
/* This many bytes we need to store the type information affecting the
@@ -325,7 +320,6 @@ dtype_get_prtype(
/*********************************************************************//**
Compute the mbminlen and mbmaxlen members of a data type structure. */
-UNIV_INLINE
void
dtype_get_mblen(
/*============*/
@@ -589,5 +583,3 @@ static const byte REC_INFO_METADATA_ALTER
= REC_INFO_METADATA_ADD | REC_INFO_DELETED_FLAG;
#include "data0type.inl"
-
-#endif
diff --git a/storage/innobase/include/data0type.inl b/storage/innobase/include/data0type.inl
index 06d90959855..329cee5d190 100644
--- a/storage/innobase/include/data0type.inl
+++ b/storage/innobase/include/data0type.inl
@@ -68,30 +68,6 @@ dtype_get_mysql_type(
Compute the mbminlen and mbmaxlen members of a data type structure. */
UNIV_INLINE
void
-dtype_get_mblen(
-/*============*/
- ulint mtype, /*!< in: main type */
- ulint prtype, /*!< in: precise type (and collation) */
- unsigned*mbminlen, /*!< out: minimum length of a
- multi-byte character */
- unsigned*mbmaxlen) /*!< out: maximum length of a
- multi-byte character */
-{
- if (dtype_is_string_type(mtype)) {
- innobase_get_cset_width(dtype_get_charset_coll(prtype),
- mbminlen, mbmaxlen);
- ut_ad(*mbminlen <= *mbmaxlen);
- ut_ad(*mbminlen < DATA_MBMAX);
- ut_ad(*mbmaxlen < DATA_MBMAX);
- } else {
- *mbminlen = *mbmaxlen = 0;
- }
-}
-
-/*********************************************************************//**
-Compute the mbminlen and mbmaxlen members of a data type structure. */
-UNIV_INLINE
-void
dtype_set_mblen(
/*============*/
dtype_t* type) /*!< in/out: type */
@@ -374,16 +350,6 @@ dtype_get_fixed_size_low(
} else if (!comp) {
return static_cast<unsigned>(len);
} else {
-#ifdef UNIV_DEBUG
- unsigned i_mbminlen, i_mbmaxlen;
-
- innobase_get_cset_width(
- dtype_get_charset_coll(prtype),
- &i_mbminlen, &i_mbmaxlen);
-
- ut_ad(i_mbminlen == mbminlen);
- ut_ad(i_mbmaxlen == mbmaxlen);
-#endif /* UNIV_DEBUG */
if (mbminlen == mbmaxlen) {
return static_cast<unsigned>(len);
}
diff --git a/storage/innobase/include/dict0dict.h b/storage/innobase/include/dict0dict.h
index 244d178da3a..fcd911e1b2b 100644
--- a/storage/innobase/include/dict0dict.h
+++ b/storage/innobase/include/dict0dict.h
@@ -1351,7 +1351,7 @@ class dict_sys_t
std::atomic<ulonglong> latch_ex_wait_start;
/** the rw-latch protecting the data dictionary cache */
- MY_ALIGNED(CACHE_LINE_SIZE) srw_lock latch;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) srw_lock latch;
#ifdef UNIV_DEBUG
/** whether latch is being held in exclusive mode (by any thread) */
bool latch_ex;
diff --git a/storage/innobase/include/dict0mem.h b/storage/innobase/include/dict0mem.h
index bfa3742f683..c023447a4a2 100644
--- a/storage/innobase/include/dict0mem.h
+++ b/storage/innobase/include/dict0mem.h
@@ -1175,6 +1175,9 @@ public:
/** @return whether this is the change buffer */
bool is_ibuf() const { return UNIV_UNLIKELY(type & DICT_IBUF); }
+ /** @return whether this index requires locking */
+ bool has_locking() const { return !is_ibuf(); }
+
/** @return whether this is a normal B-tree index
(not the change buffer, not SPATIAL or FULLTEXT) */
bool is_btree() const {
@@ -1397,6 +1400,20 @@ public:
rollback of TRX_UNDO_EMPTY. The BTR_SEG_LEAF is freed and reinitialized.
@param thr query thread */
void clear(que_thr_t *thr);
+
+ /** Check whether the online log is dummy value to indicate
+ whether table undergoes active DDL.
+ @retval true if online log is dummy value */
+ bool online_log_is_dummy() const
+ {
+ return online_log == reinterpret_cast<const row_log_t*>(this);
+ }
+
+ /** Assign clustered index online log to dummy value */
+ void online_log_make_dummy()
+ {
+ online_log= reinterpret_cast<row_log_t*>(this);
+ }
};
/** Detach a virtual column from an index.
@@ -1965,10 +1982,10 @@ struct dict_table_t {
#ifdef UNIV_DEBUG
/** @return whether the current thread holds the lock_mutex */
bool lock_mutex_is_owner() const
- { return lock_mutex_owner == os_thread_get_curr_id(); }
+ { return lock_mutex_owner == pthread_self(); }
/** @return whether the current thread holds the stats_mutex (lock_mutex) */
bool stats_mutex_is_owner() const
- { return lock_mutex_owner == os_thread_get_curr_id(); }
+ { return lock_mutex_owner == pthread_self(); }
#endif /* UNIV_DEBUG */
void lock_mutex_init() { lock_mutex.init(); }
void lock_mutex_destroy() { lock_mutex.destroy(); }
@@ -1977,20 +1994,20 @@ struct dict_table_t {
{
ut_ad(!lock_mutex_is_owner());
lock_mutex.wr_lock();
- ut_ad(!lock_mutex_owner.exchange(os_thread_get_curr_id()));
+ ut_ad(!lock_mutex_owner.exchange(pthread_self()));
}
/** Try to acquire lock_mutex */
bool lock_mutex_trylock()
{
ut_ad(!lock_mutex_is_owner());
bool acquired= lock_mutex.wr_lock_try();
- ut_ad(!acquired || !lock_mutex_owner.exchange(os_thread_get_curr_id()));
+ ut_ad(!acquired || !lock_mutex_owner.exchange(pthread_self()));
return acquired;
}
/** Release lock_mutex */
void lock_mutex_unlock()
{
- ut_ad(lock_mutex_owner.exchange(0) == os_thread_get_curr_id());
+ ut_ad(lock_mutex_owner.exchange(0) == pthread_self());
lock_mutex.wr_unlock();
}
#ifndef SUX_LOCK_GENERIC
@@ -2292,7 +2309,7 @@ private:
srw_spin_mutex lock_mutex;
#ifdef UNIV_DEBUG
/** The owner of lock_mutex (0 if none) */
- Atomic_relaxed<os_thread_id_t> lock_mutex_owner{0};
+ Atomic_relaxed<pthread_t> lock_mutex_owner{0};
#endif
public:
/** Autoinc counter value to give to the next inserted row. */
@@ -2373,6 +2390,12 @@ public:
return false;
}
+ /** @return whether a DDL operation is in progress on this table */
+ bool is_active_ddl() const
+ {
+ return UT_LIST_GET_FIRST(indexes)->online_log;
+ }
+
/** @return whether the name is
mysql.innodb_index_stats or mysql.innodb_table_stats */
bool is_stats_table() const;
diff --git a/storage/innobase/include/dict0stats_bg.h b/storage/innobase/include/dict0stats_bg.h
index 5604420134b..d9a2f6282a1 100644
--- a/storage/innobase/include/dict0stats_bg.h
+++ b/storage/innobase/include/dict0stats_bg.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2012, 2017, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -28,7 +28,6 @@ Created Apr 26, 2012 Vasil Dimov
#define dict0stats_bg_h
#include "dict0types.h"
-#include "os0thread.h"
#ifdef HAVE_PSI_INTERFACE
extern mysql_pfs_key_t recalc_pool_mutex_key;
diff --git a/storage/innobase/include/fil0fil.h b/storage/innobase/include/fil0fil.h
index 8a959402c0b..789d926d8b3 100644
--- a/storage/innobase/include/fil0fil.h
+++ b/storage/innobase/include/fil0fil.h
@@ -409,7 +409,7 @@ private:
static constexpr uint32_t PENDING= ~(STOPPING | CLOSING | NEEDS_FSYNC);
/** latch protecting all page allocation bitmap pages */
srw_lock latch;
- os_thread_id_t latch_owner;
+ pthread_t latch_owner;
ut_d(Atomic_relaxed<uint32_t> latch_count;)
public:
/** MariaDB encryption data */
@@ -987,20 +987,20 @@ public:
#ifdef UNIV_DEBUG
bool is_latched() const { return latch_count != 0; }
#endif
- bool is_owner() const { return latch_owner == os_thread_get_curr_id(); }
+ bool is_owner() const { return latch_owner == pthread_self(); }
/** Acquire the allocation latch in exclusive mode */
void x_lock()
{
latch.wr_lock(SRW_LOCK_CALL);
ut_ad(!latch_owner);
- latch_owner= os_thread_get_curr_id();
+ latch_owner= pthread_self();
ut_ad(!latch_count.fetch_add(1));
}
/** Release the allocation latch from exclusive mode */
void x_unlock()
{
ut_ad(latch_count.fetch_sub(1) == 1);
- ut_ad(latch_owner == os_thread_get_curr_id());
+ ut_ad(latch_owner == pthread_self());
latch_owner= 0;
latch.wr_unlock();
}
diff --git a/storage/innobase/include/ha_prototypes.h b/storage/innobase/include/ha_prototypes.h
index 2dd7c571386..3d217dc3243 100644
--- a/storage/innobase/include/ha_prototypes.h
+++ b/storage/innobase/include/ha_prototypes.h
@@ -140,15 +140,6 @@ uint8_t
get_innobase_type_from_mysql_type(unsigned *unsigned_flag, const Field *field);
/******************************************************************//**
-Get the variable length bounds of the given character set. */
-void
-innobase_get_cset_width(
-/*====================*/
- ulint cset, /*!< in: MySQL charset-collation code */
- unsigned*mbminlen, /*!< out: minimum length of a char (in bytes) */
- unsigned*mbmaxlen); /*!< out: maximum length of a char (in bytes) */
-
-/******************************************************************//**
Compares NUL-terminated UTF-8 strings case insensitively.
@return 0 if a=b, <0 if a<b, >1 if a>b */
int
diff --git a/storage/innobase/include/lock0lock.h b/storage/innobase/include/lock0lock.h
index e4ceff6dec2..a11bc60e7a0 100644
--- a/storage/innobase/include/lock0lock.h
+++ b/storage/innobase/include/lock0lock.h
@@ -374,18 +374,18 @@ lock_clust_rec_read_check_and_lock_alt(
LOCK_REC_NOT_GAP */
que_thr_t* thr) /*!< in: query thread */
MY_ATTRIBUTE((warn_unused_result));
-/*********************************************************************//**
-Locks the specified database table in the mode given. If the lock cannot
-be granted immediately, the query thread is put to wait.
-@return DB_SUCCESS, DB_LOCK_WAIT, or DB_DEADLOCK */
-dberr_t
-lock_table(
-/*=======*/
- dict_table_t* table, /*!< in/out: database table
- in dictionary cache */
- lock_mode mode, /*!< in: lock mode */
- que_thr_t* thr) /*!< in: query thread */
- MY_ATTRIBUTE((warn_unused_result));
+
+/** Acquire a table lock.
+@param table table to be locked
+@param fktable pointer to table, in case of a FOREIGN key check
+@param mode lock mode
+@param thr SQL execution thread
+@retval DB_SUCCESS if the lock was acquired
+@retval DB_DEADLOCK if a deadlock occurred, or fktable && *fktable != table
+@retval DB_LOCK_WAIT if lock_wait() must be invoked */
+dberr_t lock_table(dict_table_t *table, dict_table_t *const*fktable,
+ lock_mode mode, que_thr_t *thr)
+ MY_ATTRIBUTE((warn_unused_result));
/** Create a table lock object for a resurrected transaction.
@param table table to be X-locked
@@ -426,6 +426,11 @@ lock_rec_unlock(
and release possible other transactions waiting because of these locks. */
void lock_release(trx_t* trx);
+/** Release the explicit locks of a committing transaction while
+dict_sys.latch is exclusively locked,
+and release possible other transactions waiting because of these locks. */
+void lock_release_on_drop(trx_t *trx);
+
/** Release non-exclusive locks on XA PREPARE,
and release possible other transactions waiting because of these locks. */
void lock_release_on_prepare(trx_t *trx);
@@ -684,10 +689,10 @@ private:
bool m_initialised;
/** mutex proteting the locks */
- MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) srw_spin_lock latch;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) srw_spin_lock latch;
#ifdef UNIV_DEBUG
/** The owner of exclusive latch (0 if none); protected by latch */
- std::atomic<os_thread_id_t> writer{0};
+ std::atomic<pthread_t> writer{0};
/** Number of shared latches */
std::atomic<ulint> readers{0};
#endif
@@ -707,7 +712,7 @@ public:
hash_table prdt_page_hash;
/** mutex covering lock waits; @see trx_lock_t::wait_lock */
- MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) mysql_mutex_t wait_mutex;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) mysql_mutex_t wait_mutex;
private:
/** The increment of wait_count for a wait. Anything smaller is a
pending wait count. */
@@ -751,14 +756,14 @@ public:
mysql_mutex_assert_not_owner(&wait_mutex);
ut_ad(!is_writer());
latch.wr_lock();
- ut_ad(!writer.exchange(os_thread_get_curr_id(),
+ ut_ad(!writer.exchange(pthread_self(),
std::memory_order_relaxed));
}
/** Release exclusive lock_sys.latch */
void wr_unlock()
{
ut_ad(writer.exchange(0, std::memory_order_relaxed) ==
- os_thread_get_curr_id());
+ pthread_self());
latch.wr_unlock();
}
/** Acquire shared lock_sys.latch */
@@ -784,7 +789,7 @@ public:
{
ut_ad(!is_writer());
if (!latch.wr_lock_try()) return false;
- ut_ad(!writer.exchange(os_thread_get_curr_id(),
+ ut_ad(!writer.exchange(pthread_self(),
std::memory_order_relaxed));
return true;
}
@@ -808,9 +813,9 @@ public:
bool is_writer() const
{
# ifdef SUX_LOCK_GENERIC
- return writer.load(std::memory_order_relaxed) == os_thread_get_curr_id();
+ return writer.load(std::memory_order_relaxed) == pthread_self();
# else
- return writer.load(std::memory_order_relaxed) == os_thread_get_curr_id() ||
+ return writer.load(std::memory_order_relaxed) == pthread_self() ||
(xtest() && !latch.is_locked_or_waiting());
# endif
}
diff --git a/storage/innobase/include/log0log.h b/storage/innobase/include/log0log.h
index 4d9ad3ddfd8..39c2fb8b01e 100644
--- a/storage/innobase/include/log0log.h
+++ b/storage/innobase/include/log0log.h
@@ -180,7 +180,7 @@ struct log_t
private:
/** The log sequence number of the last change of durable InnoDB files */
- MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE)
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE)
std::atomic<lsn_t> lsn;
/** the first guaranteed-durable log sequence number */
std::atomic<lsn_t> flushed_to_disk_lsn;
@@ -201,7 +201,7 @@ typedef srw_lock log_rwlock_t;
public:
/** rw-lock protecting buf */
- MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) log_rwlock_t latch;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) log_rwlock_t latch;
private:
/** Last written LSN */
lsn_t write_lsn;
@@ -219,7 +219,7 @@ public:
private:
/** spin lock protecting lsn, buf_free in append_prepare() */
- MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) pthread_mutex_t lsn_lock;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) pthread_mutex_t lsn_lock;
void init_lsn_lock() { pthread_mutex_init(&lsn_lock, LSN_LOCK_ATTR); }
void lock_lsn() { pthread_mutex_lock(&lsn_lock); }
void unlock_lsn() { pthread_mutex_unlock(&lsn_lock); }
diff --git a/storage/innobase/include/os0thread.h b/storage/innobase/include/os0thread.h
deleted file mode 100644
index b2971462a70..00000000000
--- a/storage/innobase/include/os0thread.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*****************************************************************************
-
-Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
-
-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
-Foundation; version 2 of the License.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
-
-*****************************************************************************/
-
-/**************************************************//**
-@file include/os0thread.h
-The interface to the operating system
-process and thread control primitives
-
-Created 9/8/1995 Heikki Tuuri
-*******************************************************/
-
-#pragma once
-#include "univ.i"
-
-#ifdef _WIN32
-typedef DWORD os_thread_id_t; /*!< In Windows the thread id
- is an unsigned long int */
-#else
-
-typedef pthread_t os_thread_id_t; /*!< In Unix we use the thread
- handle itself as the id of
- the thread */
-#endif /* _WIN32 */
-
-#define os_thread_eq(a,b) IF_WIN(a == b, pthread_equal(a, b))
-#define os_thread_get_curr_id() IF_WIN(GetCurrentThreadId(), pthread_self())
diff --git a/storage/innobase/include/read0types.h b/storage/innobase/include/read0types.h
index 37d97ebcaac..bc02fc065f5 100644
--- a/storage/innobase/include/read0types.h
+++ b/storage/innobase/include/read0types.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1997, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2018, 2021, MariaDB Corporation.
+Copyright (c) 2018, 2022, MariaDB Corporation.
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
@@ -28,12 +28,9 @@ Created 2/16/1997 Heikki Tuuri
#include "dict0mem.h"
#include "trx0types.h"
+#include "srw_lock.h"
#include <algorithm>
-#ifdef UNIV_PFS_MUTEX
-extern mysql_pfs_key_t read_view_mutex_key;
-#endif
-
/**
Read view lists the trx ids of those transactions for which a consistent read
should not see the modifications to the database.
@@ -44,7 +41,7 @@ class ReadViewBase
The read should not see any transaction with trx id >= this value.
In other words, this is the "high water mark".
*/
- trx_id_t m_low_limit_id;
+ trx_id_t m_low_limit_id= 0;
/**
The read should see all trx ids which are strictly
@@ -70,9 +67,6 @@ protected:
trx_id_t up_limit_id() const { return m_up_limit_id; }
public:
- ReadViewBase(): m_low_limit_id(0) {}
-
-
/**
Append state from another view.
@@ -206,7 +200,7 @@ class ReadView: public ReadViewBase
std::atomic<bool> m_open;
/** For synchronisation with purge coordinator. */
- mutable mysql_mutex_t m_mutex;
+ mutable srw_mutex m_mutex;
/**
trx id of creating transaction.
@@ -215,9 +209,12 @@ class ReadView: public ReadViewBase
trx_id_t m_creator_trx_id;
public:
- ReadView(): m_open(false)
- { mysql_mutex_init(read_view_mutex_key, &m_mutex, nullptr); }
- ~ReadView() { mysql_mutex_destroy(&m_mutex); }
+ ReadView()
+ {
+ memset(reinterpret_cast<void*>(this), 0, sizeof *this);
+ m_mutex.init();
+ }
+ ~ReadView() { m_mutex.destroy(); }
/**
@@ -265,12 +262,12 @@ public:
*/
void print_limits(FILE *file) const
{
- mysql_mutex_lock(&m_mutex);
+ m_mutex.wr_lock();
if (is_open())
fprintf(file, "Trx read view will not see trx with"
" id >= " TRX_ID_FMT ", sees < " TRX_ID_FMT "\n",
low_limit_id(), up_limit_id());
- mysql_mutex_unlock(&m_mutex);
+ m_mutex.wr_unlock();
}
@@ -289,10 +286,10 @@ public:
*/
void append_to(ReadViewBase *to) const
{
- mysql_mutex_lock(&m_mutex);
+ m_mutex.wr_lock();
if (is_open())
to->append(*this);
- mysql_mutex_unlock(&m_mutex);
+ m_mutex.wr_unlock();
}
/**
diff --git a/storage/innobase/include/row0log.h b/storage/innobase/include/row0log.h
index 732ef494326..469f1f8a356 100644
--- a/storage/innobase/include/row0log.h
+++ b/storage/innobase/include/row0log.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2011, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -24,15 +24,15 @@ Modification log for online index creation and online table rebuild
Created 2011-05-26 Marko Makela
*******************************************************/
-#ifndef row0log_h
-#define row0log_h
+#pragma once
#include "que0types.h"
#include "mtr0types.h"
#include "row0types.h"
#include "rem0types.h"
-#include "data0types.h"
+#include "dict0dict.h"
#include "trx0types.h"
+#include "trx0undo.h"
class ut_stage_alter_t;
@@ -74,37 +74,23 @@ row_log_free(
/******************************************************//**
Free the row log for an index on which online creation was aborted. */
-UNIV_INLINE
-void
-row_log_abort_sec(
-/*==============*/
- dict_index_t* index) /*!< in/out: index (x-latched) */
- MY_ATTRIBUTE((nonnull));
-
-/******************************************************//**
-Try to log an operation to a secondary index that is
-(or was) being created.
-@retval true if the operation was logged or can be ignored
-@retval false if online index creation is not taking place */
-UNIV_INLINE
-bool
-row_log_online_op_try(
-/*==================*/
- dict_index_t* index, /*!< in/out: index, S or X latched */
- const dtuple_t* tuple, /*!< in: index tuple */
- trx_id_t trx_id) /*!< in: transaction ID for insert,
- or 0 for delete */
- MY_ATTRIBUTE((nonnull, warn_unused_result));
-/******************************************************//**
-Logs an operation to a secondary index that is (or was) being created. */
-void
-row_log_online_op(
-/*==============*/
- dict_index_t* index, /*!< in/out: index, S or X latched */
- const dtuple_t* tuple, /*!< in: index tuple (NULL=empty the index) */
- trx_id_t trx_id) /*!< in: transaction ID for insert,
- or 0 for delete */
- ATTRIBUTE_COLD;
+inline void row_log_abort_sec(dict_index_t *index)
+{
+ ut_ad(index->lock.have_u_or_x());
+ ut_ad(!index->is_clust());
+ dict_index_set_online_status(index, ONLINE_INDEX_ABORTED);
+ row_log_free(index->online_log);
+ index->online_log= nullptr;
+}
+
+/** Logs an operation to a secondary index that is (or was) being created.
+@param index index, S or X latched
+@param tuple index tuple
+@param trx_id transaction ID for insert, or 0 for delete
+@retval false if row_log_apply() failure happens
+or true otherwise */
+bool row_log_online_op(dict_index_t *index, const dtuple_t *tuple,
+ trx_id_t trx_id) ATTRIBUTE_COLD;
/******************************************************//**
Gets the error status of the online index rebuild log.
@@ -185,22 +171,6 @@ row_log_table_insert(
dict_index_t* index, /*!< in/out: clustered index, S-latched
or X-latched */
const rec_offs* offsets);/*!< in: rec_get_offsets(rec,index) */
-/******************************************************//**
-Notes that a BLOB is being freed during online ALTER TABLE. */
-void
-row_log_table_blob_free(
-/*====================*/
- dict_index_t* index, /*!< in/out: clustered index, X-latched */
- ulint page_no)/*!< in: starting page number of the BLOB */
- ATTRIBUTE_COLD __attribute__((nonnull));
-/******************************************************//**
-Notes that a BLOB is being allocated during online ALTER TABLE. */
-void
-row_log_table_blob_alloc(
-/*=====================*/
- dict_index_t* index, /*!< in/out: clustered index, X-latched */
- ulint page_no)/*!< in: starting page number of the BLOB */
- ATTRIBUTE_COLD __attribute__((nonnull));
/** Apply the row_log_table log to a table upon completing rebuild.
@param[in] thr query graph
@@ -252,6 +222,11 @@ row_log_apply(
@return number of n_core_fields */
unsigned row_log_get_n_core_fields(const dict_index_t *index);
+/** Get the error code of online log for the index
+@param index online index
+@return error code present in online log */
+dberr_t row_log_get_error(const dict_index_t *index);
+
#ifdef HAVE_PSI_STAGE_INTERFACE
/** Estimate how much work is to be done by the log apply phase
of an ALTER TABLE for this index.
@@ -262,7 +237,3 @@ ulint
row_log_estimate_work(
const dict_index_t* index);
#endif /* HAVE_PSI_STAGE_INTERFACE */
-
-#include "row0log.inl"
-
-#endif /* row0log.h */
diff --git a/storage/innobase/include/row0log.inl b/storage/innobase/include/row0log.inl
deleted file mode 100644
index f9f3dd006bf..00000000000
--- a/storage/innobase/include/row0log.inl
+++ /dev/null
@@ -1,80 +0,0 @@
-/*****************************************************************************
-
-Copyright (c) 2011, 2015, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2020, MariaDB Corporation.
-
-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
-Foundation; version 2 of the License.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
-
-*****************************************************************************/
-
-/**************************************************//**
-@file include/row0log.ic
-Modification log for online index creation and online table rebuild
-
-Created 2012-10-18 Marko Makela
-*******************************************************/
-
-#include "dict0dict.h"
-
-/******************************************************//**
-Free the row log for an index on which online creation was aborted. */
-UNIV_INLINE
-void
-row_log_abort_sec(
-/*===============*/
- dict_index_t* index) /*!< in/out: index (x-latched) */
-{
- ut_ad(index->lock.have_u_or_x());
- ut_ad(!dict_index_is_clust(index));
- dict_index_set_online_status(index, ONLINE_INDEX_ABORTED);
- row_log_free(index->online_log);
- index->online_log = NULL;
-}
-
-/******************************************************//**
-Try to log an operation to a secondary index that is
-(or was) being created.
-@retval true if the operation was logged or can be ignored
-@retval false if online index creation is not taking place */
-UNIV_INLINE
-bool
-row_log_online_op_try(
-/*==================*/
- dict_index_t* index, /*!< in/out: index, S or X latched */
- const dtuple_t* tuple, /*!< in: index tuple */
- trx_id_t trx_id) /*!< in: transaction ID for insert,
- or 0 for delete */
-{
- ut_ad(index->lock.have_any());
-
- switch (dict_index_get_online_status(index)) {
- case ONLINE_INDEX_COMPLETE:
- /* This is a normal index. Do not log anything.
- The caller must perform the operation on the
- index tree directly. */
- return(false);
- case ONLINE_INDEX_CREATION:
- /* The index is being created online. Log the
- operation. */
- row_log_online_op(index, tuple, trx_id);
- break;
- case ONLINE_INDEX_ABORTED:
- case ONLINE_INDEX_ABORTED_DROPPED:
- /* The index was created online, but the operation was
- aborted. Do not log the operation and tell the caller
- to skip the operation. */
- break;
- }
-
- return(true);
-}
diff --git a/storage/innobase/include/row0merge.h b/storage/innobase/include/row0merge.h
index 580dbc65c00..ec435df17d8 100644
--- a/storage/innobase/include/row0merge.h
+++ b/storage/innobase/include/row0merge.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2005, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2015, 2021, MariaDB Corporation.
+Copyright (c) 2015, 2022, MariaDB Corporation.
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
@@ -24,8 +24,7 @@ Index build routines using a merge sort
Created 13/06/2005 Jan Lindstrom
*******************************************************/
-#ifndef row0merge_h
-#define row0merge_h
+#pragma once
#include "que0types.h"
#include "trx0types.h"
@@ -36,7 +35,8 @@ Created 13/06/2005 Jan Lindstrom
#include "row0mysql.h"
#include "lock0types.h"
#include "srv0srv.h"
-#include "ut0stage.h"
+
+class ut_stage_alter_t;
/* Reserve free space from every block for key_version */
#define ROW_MERGE_RESERVE_SIZE 4
@@ -483,5 +483,3 @@ public:
/** Init temporary files for each index */
void init_tmp_file();
};
-
-#endif /* row0merge.h */
diff --git a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h
index 0ed08009f7d..ffcbd15ace2 100644
--- a/storage/innobase/include/srv0srv.h
+++ b/storage/innobase/include/srv0srv.h
@@ -55,7 +55,7 @@ Created 10/10/1995 Heikki Tuuri
/** Simple non-atomic counter
@tparam Type the integer type of the counter */
template <typename Type>
-struct MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) simple_counter
+struct alignas(CPU_LEVEL1_DCACHE_LINESIZE) simple_counter
{
/** Increment the counter */
Type inc() { return add(1); }
diff --git a/storage/innobase/include/sux_lock.h b/storage/innobase/include/sux_lock.h
index 17a484c732e..2c0167ac651 100644
--- a/storage/innobase/include/sux_lock.h
+++ b/storage/innobase/include/sux_lock.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 2020, 2021, MariaDB Corporation.
+Copyright (c) 2020, 2022, MariaDB Corporation.
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
@@ -19,7 +19,6 @@ this program; if not, write to the Free Software Foundation, Inc.,
#pragma once
#include "srw_lock.h"
#include "my_atomic_wrapper.h"
-#include "os0thread.h"
#ifdef UNIV_DEBUG
# include <unordered_set>
#endif
@@ -36,19 +35,19 @@ class sux_lock final
/** Numbers of U and X locks. Protected by lock. */
uint32_t recursive;
/** The owner of the U or X lock (0 if none); protected by lock */
- std::atomic<os_thread_id_t> writer;
+ std::atomic<pthread_t> writer;
/** Special writer!=0 value to indicate that the lock is non-recursive
and will be released by an I/O thread */
#if defined __linux__ || defined _WIN32
- static constexpr os_thread_id_t FOR_IO= os_thread_id_t(~0UL);
+ static constexpr pthread_t FOR_IO= pthread_t(~0UL);
#else
-# define FOR_IO ((os_thread_id_t) ~0UL) /* it could be a pointer */
+# define FOR_IO ((pthread_t) ~0UL) /* it could be a pointer */
#endif
#ifdef UNIV_DEBUG
/** Protects readers */
mutable srw_mutex readers_lock;
/** Threads that hold the lock in shared mode */
- std::atomic<std::unordered_multiset<os_thread_id_t>*> readers;
+ std::atomic<std::unordered_multiset<pthread_t>*> readers;
#endif
/** The multiplier in recursive for X locks */
@@ -109,7 +108,7 @@ public:
/** Acquire a recursive lock */
template<bool allow_readers> void writer_recurse()
{
- ut_ad(writer == os_thread_get_curr_id());
+ ut_ad(writer == pthread_self());
ut_d(auto rec= (recursive / (allow_readers ? RECURSIVE_U : RECURSIVE_X)) &
RECURSIVE_MAX);
ut_ad(allow_readers ? recursive : rec);
@@ -120,14 +119,14 @@ public:
private:
/** Transfer the ownership of a write lock to another thread
@param id the new owner of the U or X lock */
- void set_new_owner(os_thread_id_t id)
+ void set_new_owner(pthread_t id)
{
IF_DBUG(DBUG_ASSERT(writer.exchange(id, std::memory_order_relaxed)),
writer.store(id, std::memory_order_relaxed));
}
/** Assign the ownership of a write lock to a thread
@param id the owner of the U or X lock */
- void set_first_owner(os_thread_id_t id)
+ void set_first_owner(pthread_t id)
{
IF_DBUG(DBUG_ASSERT(!writer.exchange(id, std::memory_order_relaxed)),
writer.store(id, std::memory_order_relaxed));
@@ -136,12 +135,12 @@ private:
/** Register the current thread as a holder of a shared lock */
void s_lock_register()
{
- const os_thread_id_t id= os_thread_get_curr_id();
+ const pthread_t id= pthread_self();
readers_lock.wr_lock();
auto r= readers.load(std::memory_order_relaxed);
if (!r)
{
- r= new std::unordered_multiset<os_thread_id_t>();
+ r= new std::unordered_multiset<pthread_t>();
readers.store(r, std::memory_order_relaxed);
}
r->emplace(id);
@@ -152,12 +151,12 @@ private:
public:
/** In crash recovery or the change buffer, claim the ownership
of the exclusive block lock to the current thread */
- void claim_ownership() { set_new_owner(os_thread_get_curr_id()); }
+ void claim_ownership() { set_new_owner(pthread_self()); }
/** @return whether the current thread is holding X or U latch */
bool have_u_or_x() const
{
- if (os_thread_get_curr_id() != writer.load(std::memory_order_relaxed))
+ if (pthread_self() != writer.load(std::memory_order_relaxed))
return false;
ut_ad(recursive);
return true;
@@ -175,7 +174,7 @@ public:
if (auto r= readers.load(std::memory_order_relaxed))
{
readers_lock.wr_lock();
- bool found= r->find(os_thread_get_curr_id()) != r->end();
+ bool found= r->find(pthread_self()) != r->end();
readers_lock.wr_unlock();
return found;
}
@@ -233,7 +232,7 @@ public:
void s_unlock()
{
#ifdef UNIV_DEBUG
- const os_thread_id_t id= os_thread_get_curr_id();
+ const pthread_t id= pthread_self();
auto r= readers.load(std::memory_order_relaxed);
ut_ad(r);
readers_lock.wr_lock();
@@ -250,7 +249,7 @@ public:
void u_or_x_unlock(bool allow_readers, bool claim_ownership= false)
{
ut_d(auto owner= writer.load(std::memory_order_relaxed));
- ut_ad(owner == os_thread_get_curr_id() ||
+ ut_ad(owner == pthread_self() ||
(owner == FOR_IO && claim_ownership &&
recursive == (allow_readers ? RECURSIVE_U : RECURSIVE_X)));
ut_d(auto rec= (recursive / (allow_readers ? RECURSIVE_U : RECURSIVE_X)) &
@@ -314,7 +313,7 @@ inline void sux_lock<ssux_lock>::s_lock(const char *file, unsigned line)
template<>
inline void sux_lock<ssux_lock>::u_lock(const char *file, unsigned line)
{
- os_thread_id_t id= os_thread_get_curr_id();
+ pthread_t id= pthread_self();
if (writer.load(std::memory_order_relaxed) == id)
writer_recurse<true>();
else
@@ -329,7 +328,7 @@ inline void sux_lock<ssux_lock>::u_lock(const char *file, unsigned line)
template<>
inline void sux_lock<ssux_lock>::x_lock(const char *file, unsigned line)
{
- os_thread_id_t id= os_thread_get_curr_id();
+ pthread_t id= pthread_self();
if (writer.load(std::memory_order_relaxed) == id)
writer_recurse<false>();
else
@@ -371,7 +370,7 @@ inline void sux_lock<ssux>::unlock_shared() { s_unlock(); }
template<typename ssux> inline void sux_lock<ssux>::u_lock()
{
- os_thread_id_t id= os_thread_get_curr_id();
+ pthread_t id= pthread_self();
if (writer.load(std::memory_order_relaxed) == id)
writer_recurse<true>();
else
@@ -385,7 +384,7 @@ template<typename ssux> inline void sux_lock<ssux>::u_lock()
template<typename ssux> inline void sux_lock<ssux>::x_lock(bool for_io)
{
- os_thread_id_t id= os_thread_get_curr_id();
+ pthread_t id= pthread_self();
if (writer.load(std::memory_order_relaxed) == id)
{
ut_ad(!for_io);
@@ -409,7 +408,7 @@ template<typename ssux> inline void sux_lock<ssux>::u_x_upgrade()
template<typename ssux> inline bool sux_lock<ssux>::x_lock_upgraded()
{
- os_thread_id_t id= os_thread_get_curr_id();
+ pthread_t id= pthread_self();
if (writer.load(std::memory_order_relaxed) == id)
{
ut_ad(recursive);
@@ -436,7 +435,7 @@ template<typename ssux> inline bool sux_lock<ssux>::x_lock_upgraded()
template<typename ssux> inline bool sux_lock<ssux>::u_lock_try(bool for_io)
{
- os_thread_id_t id= os_thread_get_curr_id();
+ pthread_t id= pthread_self();
if (writer.load(std::memory_order_relaxed) == id)
{
if (for_io)
@@ -456,7 +455,7 @@ template<typename ssux> inline bool sux_lock<ssux>::u_lock_try(bool for_io)
template<typename ssux> inline bool sux_lock<ssux>::x_lock_try()
{
- os_thread_id_t id= os_thread_get_curr_id();
+ pthread_t id= pthread_self();
if (writer.load(std::memory_order_relaxed) == id)
{
writer_recurse<false>();
diff --git a/storage/innobase/include/trx0purge.h b/storage/innobase/include/trx0purge.h
index b3f2fbeedf3..ef9111845a6 100644
--- a/storage/innobase/include/trx0purge.h
+++ b/storage/innobase/include/trx0purge.h
@@ -125,7 +125,7 @@ class purge_sys_t
{
public:
/** latch protecting view, m_enabled */
- MY_ALIGNED(CACHE_LINE_SIZE) mutable srw_spin_lock latch;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) mutable srw_spin_lock latch;
private:
/** The purge will not remove undo logs which are >= this view */
ReadViewBase view;
diff --git a/storage/innobase/include/trx0rec.h b/storage/innobase/include/trx0rec.h
index 86f305fe04b..a56752fc91d 100644
--- a/storage/innobase/include/trx0rec.h
+++ b/storage/innobase/include/trx0rec.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -82,6 +82,7 @@ trx_undo_rec_get_pars(
undo_no_t* undo_no, /*!< out: undo log record number */
table_id_t* table_id) /*!< out: table id */
MY_ATTRIBUTE((nonnull));
+
/*******************************************************************//**
Builds a row reference from an undo log record.
@return pointer to remaining part of undo record */
@@ -208,37 +209,48 @@ fetching the purge record */
the undo log (which is the after image for an update) */
#define TRX_UNDO_GET_OLD_V_VALUE 0x2
-/*******************************************************************//**
-Build a previous version of a clustered index record. The caller must
-hold a latch on the index page of the clustered index record.
+/** Build a previous version of a clustered index record. The caller
+must hold a latch on the index page of the clustered index record.
+@param index_rec clustered index record in the index tree
+@param index_mtr mtr which contains the latch to index_rec page
+ and purge_view
+@param rec version of a clustered index record
+@param index clustered index
+@param offsets rec_get_offsets(rec, index)
+@param heap memory heap from which the memory needed is
+ allocated
+@param old_vers previous version or NULL if rec is the
+ first inserted version, or if history data
+ has been deleted (an error), or if the purge
+ could have removed the version
+ though it has not yet done so
+@param v_heap memory heap used to create vrow
+ dtuple if it is not yet created. This heap
+ diffs from "heap" above in that it could be
+ prebuilt->old_vers_heap for selection
+@param vrow virtual column info, if any
+@param v_status status determine if it is going into this
+ function by purge thread or not.
+ And if we read "after image" of undo log
+@param undo_block undo log block which was cached during
+ online dml apply or nullptr
@retval true if previous version was built, or if it was an insert
or the table has been rebuilt
@retval false if the previous version is earlier than purge_view,
-which means that it may have been removed */
+or being purged, which means that it may have been removed */
bool
trx_undo_prev_version_build(
-/*========================*/
- const rec_t* index_rec,/*!< in: clustered index record in the
- index tree */
- mtr_t* index_mtr,/*!< in: mtr which contains the latch to
- index_rec page and purge_view */
- const rec_t* rec, /*!< in: version of a clustered index record */
- dict_index_t* index, /*!< in: clustered index */
- rec_offs* offsets,/*!< in/out: rec_get_offsets(rec, index) */
- mem_heap_t* heap, /*!< in: memory heap from which the memory
- needed is allocated */
- rec_t** old_vers,/*!< out, own: previous version, or NULL if
- rec is the first inserted version, or if
- history data has been deleted */
- mem_heap_t* v_heap, /* !< in: memory heap used to create vrow
- dtuple if it is not yet created. This heap
- diffs from "heap" above in that it could be
- prebuilt->old_vers_heap for selection */
- dtuple_t** vrow, /*!< out: virtual column info, if any */
- ulint v_status);
- /*!< in: status determine if it is going
- into this function by purge thread or not.
- And if we read "after image" of undo log */
+ const rec_t *index_rec,
+ mtr_t *index_mtr,
+ const rec_t *rec,
+ dict_index_t *index,
+ rec_offs *offsets,
+ mem_heap_t *heap,
+ rec_t **old_vers,
+ mem_heap_t *v_heap,
+ dtuple_t **vrow,
+ ulint v_status,
+ const buf_block_t *undo_block= nullptr);
/** Read from an undo log record a non-virtual column value.
@param[in,out] ptr pointer to remaining part of the undo record
diff --git a/storage/innobase/include/trx0rseg.h b/storage/innobase/include/trx0rseg.h
index 3b1ea54afda..60f59321b29 100644
--- a/storage/innobase/include/trx0rseg.h
+++ b/storage/innobase/include/trx0rseg.h
@@ -69,7 +69,7 @@ void trx_temp_rseg_create();
#define TRX_RSEG_MAX_N_TRXS (TRX_RSEG_N_SLOTS / 2)
/** The rollback segment memory object */
-struct MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) trx_rseg_t
+struct alignas(CPU_LEVEL1_DCACHE_LINESIZE) trx_rseg_t
{
/** tablespace containing the rollback segment; constant after init() */
fil_space_t *space;
diff --git a/storage/innobase/include/trx0sys.h b/storage/innobase/include/trx0sys.h
index cbac3fd3a94..1f33a9db091 100644
--- a/storage/innobase/include/trx0sys.h
+++ b/storage/innobase/include/trx0sys.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -40,7 +40,6 @@ Created 3/26/1996 Heikki Tuuri
#ifdef UNIV_PFS_MUTEX
extern mysql_pfs_key_t trx_sys_mutex_key;
-extern mysql_pfs_key_t rw_trx_hash_element_mutex_key;
#endif
/** Checks if a page address is the trx sys header page.
@@ -335,16 +334,14 @@ trx_t* current_trx();
struct rw_trx_hash_element_t
{
- rw_trx_hash_element_t(): trx(0)
+ rw_trx_hash_element_t()
{
- mysql_mutex_init(rw_trx_hash_element_mutex_key, &mutex, nullptr);
+ memset(reinterpret_cast<void*>(this), 0, sizeof *this);
+ mutex.init();
}
- ~rw_trx_hash_element_t()
- {
- mysql_mutex_destroy(&mutex);
- }
+ ~rw_trx_hash_element_t() { mutex.destroy(); }
trx_id_t id; /* lf_hash_init() relies on this to be first in the struct */
@@ -357,7 +354,7 @@ struct rw_trx_hash_element_t
*/
Atomic_counter<trx_id_t> no;
trx_t *trx;
- mysql_mutex_t mutex;
+ srw_mutex mutex;
};
@@ -526,10 +523,10 @@ class rw_trx_hash_t
static my_bool debug_iterator(rw_trx_hash_element_t *element,
debug_iterator_arg<T> *arg)
{
- mysql_mutex_lock(&element->mutex);
+ element->mutex.wr_lock();
if (element->trx)
validate_element(element->trx);
- mysql_mutex_unlock(&element->mutex);
+ element->mutex.wr_unlock();
return arg->action(element, arg->argument);
}
#endif
@@ -631,7 +628,7 @@ public:
sizeof(trx_id_t)));
if (element)
{
- mysql_mutex_lock(&element->mutex);
+ element->mutex.wr_lock();
lf_hash_search_unpin(pins);
if ((trx= element->trx)) {
DBUG_ASSERT(trx_id == trx->id);
@@ -652,7 +649,7 @@ public:
trx->reference();
}
}
- mysql_mutex_unlock(&element->mutex);
+ element->mutex.wr_unlock();
}
if (!caller_trx)
lf_hash_put_pins(pins);
@@ -686,9 +683,9 @@ public:
void erase(trx_t *trx)
{
ut_d(validate_element(trx));
- mysql_mutex_lock(&trx->rw_trx_hash_element->mutex);
- trx->rw_trx_hash_element->trx= 0;
- mysql_mutex_unlock(&trx->rw_trx_hash_element->mutex);
+ trx->rw_trx_hash_element->mutex.wr_lock();
+ trx->rw_trx_hash_element->trx= nullptr;
+ trx->rw_trx_hash_element->mutex.wr_unlock();
int res= lf_hash_delete(&hash, get_pins(trx),
reinterpret_cast<const void*>(&trx->id),
sizeof(trx_id_t));
@@ -722,12 +719,12 @@ public:
May return element with committed transaction. If caller doesn't like to
see committed transactions, it has to skip those under element mutex:
- mysql_mutex_lock(&element->mutex);
+ element->mutex.wr_lock();
if (trx_t trx= element->trx)
{
// trx is protected against commit in this branch
}
- mysql_mutex_unlock(&element->mutex);
+ element->mutex.wr_unlock();
May miss concurrently inserted transactions.
@@ -833,8 +830,8 @@ public:
void unfreeze() const { mysql_mutex_unlock(&mutex); }
private:
- alignas(CACHE_LINE_SIZE) mutable mysql_mutex_t mutex;
- alignas(CACHE_LINE_SIZE) ilist<trx_t> trx_list;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) mutable mysql_mutex_t mutex;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) ilist<trx_t> trx_list;
};
/** The transaction system central memory data structure. */
@@ -844,7 +841,7 @@ class trx_sys_t
The smallest number not yet assigned as a transaction id or transaction
number. Accessed and updated with atomic operations.
*/
- MY_ALIGNED(CACHE_LINE_SIZE) Atomic_counter<trx_id_t> m_max_trx_id;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) Atomic_counter<trx_id_t> m_max_trx_id;
/**
@@ -855,7 +852,8 @@ class trx_sys_t
@sa assign_new_trx_no()
@sa snapshot_ids()
*/
- MY_ALIGNED(CACHE_LINE_SIZE) std::atomic<trx_id_t> m_rw_trx_hash_version;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE)
+ std::atomic<trx_id_t> m_rw_trx_hash_version;
bool m_initialised;
@@ -875,7 +873,7 @@ public:
Works faster when it is on it's own cache line (tested).
*/
- MY_ALIGNED(CACHE_LINE_SIZE) rw_trx_hash_t rw_trx_hash;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) rw_trx_hash_t rw_trx_hash;
#ifdef WITH_WSREP
@@ -1180,11 +1178,11 @@ private:
{
if (element->id < *id)
{
- mysql_mutex_lock(&element->mutex);
+ element->mutex.wr_lock();
/* We don't care about read-only transactions here. */
if (element->trx && element->trx->rsegs.m_redo.rseg)
*id= element->id;
- mysql_mutex_unlock(&element->mutex);
+ element->mutex.wr_unlock();
}
return 0;
}
diff --git a/storage/innobase/include/trx0trx.h b/storage/innobase/include/trx0trx.h
index 64b0923229b..bf9a2acd622 100644
--- a/storage/innobase/include/trx0trx.h
+++ b/storage/innobase/include/trx0trx.h
@@ -388,13 +388,13 @@ struct trx_lock_t
only be modified by the thread that is
serving the running transaction. */
- /** Pre-allocated record locks */
- struct {
- ib_lock_t lock; byte pad[256];
- } rec_pool[8];
+ /** Pre-allocated record locks */
+ struct {
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) ib_lock_t lock;
+ } rec_pool[8];
- /** Pre-allocated table locks */
- ib_lock_t table_pool[8];
+ /** Pre-allocated table locks */
+ ib_lock_t table_pool[8];
/** Memory heap for trx_locks. Protected by lock_sys.assert_locked()
and lock_sys.is_writer() || trx->mutex_is_owner(). */
@@ -562,7 +562,7 @@ no longer be associated with a session when the server is restarted.
A session may be served by at most one thread at a time. The serving
thread of a session might change in some MySQL implementations.
-Therefore we do not have os_thread_get_curr_id() assertions in the code.
+Therefore we do not have pthread_self() assertions in the code.
Normally, only the thread that is currently associated with a running
transaction may access (read and modify) the trx object, and it may do
@@ -623,6 +623,7 @@ private:
that it is no longer "active".
*/
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE)
Atomic_counter<int32_t> n_ref;
@@ -640,7 +641,7 @@ private:
srw_spin_mutex mutex;
#ifdef UNIV_DEBUG
/** The owner of mutex (0 if none); protected by mutex */
- std::atomic<os_thread_id_t> mutex_owner{0};
+ std::atomic<pthread_t> mutex_owner{0};
#endif /* UNIV_DEBUG */
public:
void mutex_init() { mutex.init(); }
@@ -651,14 +652,14 @@ public:
{
ut_ad(!mutex_is_owner());
mutex.wr_lock();
- ut_ad(!mutex_owner.exchange(os_thread_get_curr_id(),
+ ut_ad(!mutex_owner.exchange(pthread_self(),
std::memory_order_relaxed));
}
/** Release the mutex */
void mutex_unlock()
{
ut_ad(mutex_owner.exchange(0, std::memory_order_relaxed)
- == os_thread_get_curr_id());
+ == pthread_self());
mutex.wr_unlock();
}
#ifndef SUX_LOCK_GENERIC
@@ -669,7 +670,7 @@ public:
bool mutex_is_owner() const
{
return mutex_owner.load(std::memory_order_relaxed) ==
- os_thread_get_curr_id();
+ pthread_self();
}
#endif /* UNIV_DEBUG */
@@ -738,7 +739,7 @@ public:
/** The locks of the transaction. Protected by lock_sys.latch
(insertions also by trx_t::mutex). */
- trx_lock_t lock;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) trx_lock_t lock;
#ifdef WITH_WSREP
/** whether wsrep_on(mysql_thd) held at the start of transaction */
@@ -805,8 +806,12 @@ public:
flush the log in
trx_commit_complete_for_mysql() */
ulint duplicates; /*!< TRX_DUP_IGNORE | TRX_DUP_REPLACE */
- bool dict_operation; /**< whether this modifies InnoDB
- data dictionary */
+ /** whether this modifies InnoDB dictionary tables */
+ bool dict_operation;
+#ifdef UNIV_DEBUG
+ /** copy of dict_operation during commit() */
+ bool was_dict_operation;
+#endif
/** whether dict_sys.latch is held exclusively; protected by
dict_sys.latch */
bool dict_operation_lock_mode;
@@ -900,6 +905,10 @@ public:
bool auto_commit; /*!< true if it is an autocommit */
bool will_lock; /*!< set to inform trx_start_low() that
the transaction may acquire locks */
+ /* True if transaction has to read the undo log and
+ log the DML changes for online DDL table */
+ bool apply_online_log = false;
+
/*------------------------------*/
fts_trx_t* fts_trx; /*!< FTS information, or NULL if
transaction hasn't modified tables
@@ -973,9 +982,12 @@ public:
@retval false if the rollback was aborted by shutdown */
inline bool rollback_finish();
private:
+ /** Apply any changes to tables for which online DDL is in progress. */
+ ATTRIBUTE_COLD void apply_log();
/** Process tables that were modified by the committing transaction. */
inline void commit_tables();
- /** Mark a transaction committed in the main memory data structures. */
+ /** Mark a transaction committed in the main memory data structures.
+ @param mtr mini-transaction (if there are any persistent modifications) */
inline void commit_in_memory(const mtr_t *mtr);
/** Write log for committing the transaction. */
void commit_persist();
@@ -1065,6 +1077,7 @@ public:
ut_ad(!autoinc_locks || ib_vector_is_empty(autoinc_locks));
ut_ad(UT_LIST_GET_LEN(lock.evicted_tables) == 0);
ut_ad(!dict_operation);
+ ut_ad(!apply_online_log);
}
/** This has to be invoked on SAVEPOINT or at the end of a statement.
diff --git a/storage/innobase/include/trx0undo.h b/storage/innobase/include/trx0undo.h
index 62662ffe221..111369e6a0f 100644
--- a/storage/innobase/include/trx0undo.h
+++ b/storage/innobase/include/trx0undo.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -326,6 +326,105 @@ struct trx_undo_t {
/*!< undo log objects in the rollback
segment are chained into lists */
};
+
+/** Cache a pointer to an undo record in a latched buffer pool page,
+parse the undo log record and store the record type, update vector
+and compiler information */
+class UndorecApplier
+{
+ /** undo log block which was latched */
+ const buf_block_t *block;
+ /** Undo log record pointer */
+ trx_undo_rec_t *undo_rec;
+ /** Offset of the undo log record within the block */
+ ulint offset;
+ /** Transaction id of the undo log */
+ trx_id_t trx_id;
+ /** Undo log record type */
+ ulint type;
+ /** compiler information */
+ ulint cmpl_info;
+ /** Update vector */
+ upd_t *update;
+ /** memory heap which can be used to build previous version of
+ the index record and its offsets */
+ mem_heap_t *heap;
+ /** mini-transaction for accessing B-tree pages */
+ mtr_t mtr;
+
+public:
+ UndorecApplier(const buf_block_t *block, trx_id_t trx_id)
+ : block(block), trx_id(trx_id)
+ {
+ ut_ad(block->page.lock.have_any());
+ heap= mem_heap_create(100);
+ }
+
+ /** Assign the undo log block */
+ void assign_block(const buf_block_t *undo_block)
+ {
+ block= undo_block;
+ }
+
+ /** Assign the undo log record and offset */
+ void assign_rec(trx_undo_rec_t *rec);
+
+ /** Handle the DML undo log and apply it on online indexes */
+ void apply_undo_rec();
+
+ ~UndorecApplier()
+ {
+ mem_heap_free(heap);
+ }
+
+private:
+ /** Handle the insert undo log and apply it on online indexes
+ @param tuple row reference from undo log record
+ @param clust_index clustered index */
+ void log_insert(const dtuple_t &tuple, dict_index_t *clust_index);
+
+ /** Handle the update, delete undo log and apply it on online
+ indexes.
+ @param tuple row reference from undo log record
+ @param clust_index clustered index */
+ void log_update(const dtuple_t &tuple, dict_index_t *clust_index);
+
+ /** Check whether the given roll pointer is generated by
+ the current undo log record information stored.
+ @return true if roll pointer matches with current undo log info */
+ bool is_same(roll_ptr_t roll_ptr) const
+ {
+ uint16_t offset= static_cast<uint16_t>(roll_ptr);
+ uint32_t page_no= static_cast<uint32_t>(roll_ptr >> 16);
+ return page_no == block->page.id().page_no() && offset == this->offset;
+ }
+
+ /** Clear the undo log record information */
+ void clear_undo_rec()
+ {
+ undo_rec= nullptr;
+ cmpl_info= 0;
+ type= 0;
+ update= nullptr;
+ offset= 0;
+ mem_heap_empty(heap);
+ }
+
+ /** Get the correct version of the clustered index record that
+ was modified by the current undo log record. Because there could
+ be the multiple successive updates of the same record within the
+ same transaction.
+ @param tuple tuple contains primary key value
+ @param index clustered index
+ @param[out] clust_rec current clustered index record
+ @param offsets offsets points to the record
+ @return clustered index record which was changed by
+ the undo log record or nullptr when there is no clustered
+ index record changed by undo log record */
+ const rec_t* get_old_rec(const dtuple_t &tuple, dict_index_t *index,
+ const rec_t **clust_rec, rec_offs **offsets);
+};
+
#endif /* !UNIV_INNOCHECKSUM */
/** The offset of the undo log page header on pages of the undo log */
diff --git a/storage/innobase/include/univ.i b/storage/innobase/include/univ.i
index 3b82ae63c9f..8fe5c45bb8a 100644
--- a/storage/innobase/include/univ.i
+++ b/storage/innobase/include/univ.i
@@ -510,7 +510,6 @@ extern mysql_pfs_key_t fts_cache_mutex_key;
extern mysql_pfs_key_t fts_cache_init_mutex_key;
extern mysql_pfs_key_t fts_delete_mutex_key;
extern mysql_pfs_key_t fts_doc_id_mutex_key;
-extern mysql_pfs_key_t fts_pll_tokenize_mutex_key;
extern mysql_pfs_key_t ibuf_bitmap_mutex_key;
extern mysql_pfs_key_t ibuf_mutex_key;
extern mysql_pfs_key_t ibuf_pessimistic_insert_mutex_key;
@@ -529,8 +528,6 @@ extern mysql_pfs_key_t trx_pool_mutex_key;
extern mysql_pfs_key_t trx_pool_manager_mutex_key;
extern mysql_pfs_key_t lock_wait_mutex_key;
extern mysql_pfs_key_t srv_threads_mutex_key;
-extern mysql_pfs_key_t thread_mutex_key;
-extern mysql_pfs_key_t row_drop_list_mutex_key;
# endif /* UNIV_PFS_MUTEX */
# ifdef UNIV_PFS_RWLOCK
diff --git a/storage/innobase/include/ut0counter.h b/storage/innobase/include/ut0counter.h
index 448768ec29a..d6589cc4fd3 100644
--- a/storage/innobase/include/ut0counter.h
+++ b/storage/innobase/include/ut0counter.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2012, 2015, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2019, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -28,16 +28,9 @@ Created 2012/04/12 by Sunny Bains
#ifndef ut0counter_h
#define ut0counter_h
-#include "os0thread.h"
+#include "univ.i"
#include "my_rdtsc.h"
-/** CPU cache line size */
-#ifdef CPU_LEVEL1_DCACHE_LINESIZE
-# define CACHE_LINE_SIZE CPU_LEVEL1_DCACHE_LINESIZE
-#else
-# error CPU_LEVEL1_DCACHE_LINESIZE is undefined
-#endif /* CPU_LEVEL1_DCACHE_LINESIZE */
-
/** Use the result of my_timer_cycles(), which mainly uses RDTSC for cycles
as a random value. See the comments for my_timer_cycles() */
/** @return result from RDTSC or similar functions. */
@@ -53,7 +46,7 @@ get_rnd_value()
/* We may go here if my_timer_cycles() returns 0,
so we have to have the plan B for the counter. */
#if !defined(_WIN32)
- return (size_t)os_thread_get_curr_id();
+ return (size_t)pthread_self();
#else
LARGE_INTEGER cnt;
QueryPerformanceCounter(&cnt);
@@ -71,19 +64,18 @@ be zero-initialized by the run-time environment.
@see srv_stats */
template <typename Type>
struct ib_atomic_counter_element_t {
- MY_ALIGNED(CACHE_LINE_SIZE) Atomic_relaxed<Type> value;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) Atomic_relaxed<Type> value;
};
template <typename Type>
struct ib_counter_element_t {
- MY_ALIGNED(CACHE_LINE_SIZE) Type value;
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) Type value;
};
/** Class for using fuzzy counters. The counter is multi-instance relaxed atomic
so the results are not guaranteed to be 100% accurate but close
-enough. Creates an array of counters and separates each element by the
-CACHE_LINE_SIZE bytes */
+enough. */
template <typename Type,
template <typename T> class Element = ib_atomic_counter_element_t,
int N = 128 >
@@ -123,9 +115,9 @@ struct ib_counter_t {
}
private:
- static_assert(sizeof(Element<Type>) == CACHE_LINE_SIZE, "");
+ static_assert(sizeof(Element<Type>) == CPU_LEVEL1_DCACHE_LINESIZE, "");
/** Array of counter elements */
- MY_ALIGNED(CACHE_LINE_SIZE) Element<Type> m_counter[N];
+ alignas(CPU_LEVEL1_DCACHE_LINESIZE) Element<Type> m_counter[N];
};
#endif /* ut0counter_h */
diff --git a/storage/innobase/include/ut0pool.h b/storage/innobase/include/ut0pool.h
index 56ffbee48f3..bce443a51b2 100644
--- a/storage/innobase/include/ut0pool.h
+++ b/storage/innobase/include/ut0pool.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2013, 2014, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2018, 2021, MariaDB Corporation.
+Copyright (c) 2018, 2022, MariaDB Corporation.
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
@@ -31,7 +31,7 @@ Created 2012-Feb-26 Sunny Bains
#include <queue>
#include <functional>
-#include "ut0new.h"
+#include <my_global.h>
/** Allocate the memory for the object in blocks. We keep the objects sorted
on pointer so that they are closer together in case they have to be iterated
@@ -41,8 +41,6 @@ struct Pool {
typedef Type value_type;
- // FIXME: Add an assertion to check alignment and offset is
- // as we expect it. Also, sizeof(void*) can be 8, can we impove on this.
struct Element {
Pool* m_pool;
value_type m_type;
@@ -57,17 +55,30 @@ struct Pool {
m_size(size),
m_last()
{
+ ut_ad(ut_is_2pow(size));
ut_a(size >= sizeof(Element));
+ static_assert(!(sizeof(Element) % CPU_LEVEL1_DCACHE_LINESIZE),
+ "alignment");
m_lock_strategy.create();
ut_a(m_start == 0);
- m_start = reinterpret_cast<Element*>(ut_zalloc_nokey(m_size));
+#ifdef _MSC_VER
+ m_start = static_cast<Element*>(
+ _aligned_malloc(m_size, CPU_LEVEL1_DCACHE_LINESIZE));
+#else
+ void* start;
+ ut_a(!posix_memalign(&start, CPU_LEVEL1_DCACHE_LINESIZE,
+ m_size));
+ m_start = static_cast<Element*>(start);
+#endif
+ memset_aligned<CPU_LEVEL1_DCACHE_LINESIZE>(
+ m_start, 0, m_size);
m_last = m_start;
- m_end = &m_start[m_size / sizeof(*m_start)];
+ m_end = &m_start[m_size / sizeof *m_start];
/* Note: Initialise only a small subset, even though we have
allocated all the memory. This is required only because PFS
@@ -90,7 +101,7 @@ struct Pool {
Factory::destroy(&elem->m_type);
}
- ut_free(m_start);
+ IF_WIN(_aligned_free,free)(m_start);
m_end = m_last = m_start = 0;
m_size = 0;
}
diff --git a/storage/innobase/lock/lock0lock.cc b/storage/innobase/lock/lock0lock.cc
index f920ac1ac95..2d27a674275 100644
--- a/storage/innobase/lock/lock0lock.cc
+++ b/storage/innobase/lock/lock0lock.cc
@@ -418,13 +418,13 @@ void lock_sys_t::wr_lock(const char *file, unsigned line)
{
mysql_mutex_assert_not_owner(&wait_mutex);
latch.wr_lock(file, line);
- ut_ad(!writer.exchange(os_thread_get_curr_id(), std::memory_order_relaxed));
+ ut_ad(!writer.exchange(pthread_self(), std::memory_order_relaxed));
}
/** Release exclusive lock_sys.latch */
void lock_sys_t::wr_unlock()
{
ut_ad(writer.exchange(0, std::memory_order_relaxed) ==
- os_thread_get_curr_id());
+ pthread_self());
latch.wr_unlock();
}
@@ -3460,59 +3460,53 @@ static dberr_t lock_table_wsrep(dict_table_t *table, lock_mode mode,
}
#endif
-/*********************************************************************//**
-Locks the specified database table in the mode given. If the lock cannot
-be granted immediately, the query thread is put to wait.
-@return DB_SUCCESS, DB_LOCK_WAIT, or DB_DEADLOCK */
-dberr_t
-lock_table(
-/*=======*/
- dict_table_t* table, /*!< in/out: database table
- in dictionary cache */
- lock_mode mode, /*!< in: lock mode */
- que_thr_t* thr) /*!< in: query thread */
+/** Acquire a table lock.
+@param table table to be locked
+@param fktable pointer to table, in case of a FOREIGN key check
+@param mode lock mode
+@param thr SQL execution thread
+@retval DB_SUCCESS if the lock was acquired
+@retval DB_DEADLOCK if a deadlock occurred, or fktable && *fktable != table
+@retval DB_LOCK_WAIT if lock_wait() must be invoked */
+dberr_t lock_table(dict_table_t *table, dict_table_t *const*fktable,
+ lock_mode mode, que_thr_t *thr)
{
- trx_t* trx;
-
- if (table->is_temporary()) {
- return DB_SUCCESS;
- }
-
- trx = thr_get_trx(thr);
+ ut_ad(table);
- /* Look for equal or stronger locks the same trx already
- has on the table. No need to acquire LockMutexGuard here
- because only this transaction can add/access table locks
- to/from trx_t::table_locks. */
+ if (!fktable && table->is_temporary())
+ return DB_SUCCESS;
- if (lock_table_has(trx, table, mode) || srv_read_only_mode) {
- return(DB_SUCCESS);
- }
+ ut_ad(fktable || table->get_ref_count() || !table->can_be_evicted);
- /* Read only transactions can write to temp tables, we don't want
- to promote them to RW transactions. Their updates cannot be visible
- to other transactions. Therefore we can keep them out
- of the read views. */
+ trx_t *trx= thr_get_trx(thr);
- if ((mode == LOCK_IX || mode == LOCK_X)
- && !trx->read_only
- && trx->rsegs.m_redo.rseg == 0) {
+ /* Look for equal or stronger locks the same trx already has on the
+ table. No need to acquire LockMutexGuard here because only the
+ thread that is executing a transaction can access trx_t::table_locks. */
+ if (lock_table_has(trx, table, mode) || srv_read_only_mode)
+ return DB_SUCCESS;
- trx_set_rw_mode(trx);
- }
+ if ((mode == LOCK_IX || mode == LOCK_X) &&
+ !trx->read_only && !trx->rsegs.m_redo.rseg)
+ trx_set_rw_mode(trx);
#ifdef WITH_WSREP
- if (trx->is_wsrep()) {
- return lock_table_wsrep(table, mode, thr, trx);
- }
+ if (trx->is_wsrep())
+ return lock_table_wsrep(table, mode, thr, trx);
#endif
- lock_sys.rd_lock(SRW_LOCK_CALL);
- table->lock_mutex_lock();
- dberr_t err = lock_table_low(table, mode, thr, trx);
- table->lock_mutex_unlock();
- lock_sys.rd_unlock();
+ lock_sys.rd_lock(SRW_LOCK_CALL);
+ dberr_t err;
+ if (fktable != nullptr && *fktable != table)
+ err= DB_DEADLOCK;
+ else
+ {
+ table->lock_mutex_lock();
+ err= lock_table_low(table, mode, thr, trx);
+ table->lock_mutex_unlock();
+ }
+ lock_sys.rd_unlock();
- return err;
+ return err;
}
/** Create a table lock object for a resurrected transaction.
@@ -3649,7 +3643,7 @@ dberr_t lock_table_for_trx(dict_table_t *table, trx_t *trx, lock_mode mode,
run_again:
thr->run_node= thr;
thr->prev_node= thr->common.parent;
- dberr_t err= lock_table(table, mode, thr);
+ dberr_t err= lock_table(table, nullptr, mode, thr);
switch (err) {
case DB_SUCCESS:
@@ -3820,7 +3814,7 @@ restart:
ut_ad(!lock->index->table->is_temporary());
ut_ad(lock->mode() != LOCK_X ||
lock->index->table->id >= DICT_HDR_FIRST_ID ||
- trx->dict_operation);
+ trx->dict_operation || trx->was_dict_operation);
auto &lock_hash= lock_sys.hash_get(lock->type_mode);
auto cell= lock_hash.cell_get(lock->un_member.rec_lock.page_id.fold());
auto latch= lock_sys_t::hash_table::latch(cell);
@@ -3838,7 +3832,7 @@ restart:
ut_ad(!table->is_temporary());
ut_ad(table->id >= DICT_HDR_FIRST_ID ||
(lock->mode() != LOCK_IX && lock->mode() != LOCK_X) ||
- trx->dict_operation);
+ trx->dict_operation || trx->was_dict_operation);
if (!table->lock_mutex_trylock())
all_released= false;
else
@@ -3895,7 +3889,7 @@ restart:
ut_ad(!lock->index->table->is_temporary());
ut_ad(lock->mode() != LOCK_X ||
lock->index->table->id >= DICT_HDR_FIRST_ID ||
- trx->dict_operation);
+ trx->dict_operation || trx->was_dict_operation);
lock_rec_dequeue_from_page(lock, false);
}
else
@@ -3904,7 +3898,7 @@ restart:
ut_ad(!table->is_temporary());
ut_ad(table->id >= DICT_HDR_FIRST_ID ||
(lock->mode() != LOCK_IX && lock->mode() != LOCK_X) ||
- trx->dict_operation);
+ trx->dict_operation || trx->was_dict_operation);
lock_table_dequeue(lock, false);
}
@@ -3941,6 +3935,38 @@ released:
#endif
}
+/** Release the explicit locks of a committing transaction while
+dict_sys.latch is exclusively locked,
+and release possible other transactions waiting because of these locks. */
+void lock_release_on_drop(trx_t *trx)
+{
+ ut_ad(lock_sys.is_writer());
+ ut_ad(trx->mutex_is_owner());
+ ut_ad(trx->dict_operation);
+
+ while (lock_t *lock= UT_LIST_GET_LAST(trx->lock.trx_locks))
+ {
+ ut_ad(lock->trx == trx);
+ if (!lock->is_table())
+ {
+ ut_ad(!lock->index->table->is_temporary());
+ ut_ad(lock->mode() != LOCK_X ||
+ lock->index->table->id >= DICT_HDR_FIRST_ID ||
+ trx->dict_operation);
+ lock_rec_dequeue_from_page(lock, false);
+ }
+ else
+ {
+ ut_d(dict_table_t *table= lock->un_member.tab_lock.table);
+ ut_ad(!table->is_temporary());
+ ut_ad(table->id >= DICT_HDR_FIRST_ID ||
+ (lock->mode() != LOCK_IX && lock->mode() != LOCK_X) ||
+ trx->dict_operation);
+ lock_table_dequeue(lock, false);
+ }
+ }
+}
+
/** Release non-exclusive locks on XA PREPARE,
and wake up possible other transactions waiting because of these locks.
@param trx transaction in XA PREPARE state
@@ -4868,7 +4894,7 @@ static void lock_rec_block_validate(const page_id_t page_id)
static my_bool lock_validate_table_locks(rw_trx_hash_element_t *element, void*)
{
lock_sys.assert_locked();
- mysql_mutex_lock(&element->mutex);
+ element->mutex.wr_lock();
if (element->trx)
{
check_trx_state(element->trx);
@@ -4878,7 +4904,7 @@ static my_bool lock_validate_table_locks(rw_trx_hash_element_t *element, void*)
if (lock->is_table())
lock_table_queue_validate(lock->un_member.tab_lock.table);
}
- mysql_mutex_unlock(&element->mutex);
+ element->mutex.wr_unlock();
return 0;
}
@@ -5075,7 +5101,7 @@ static my_bool lock_rec_other_trx_holds_expl_callback(
rw_trx_hash_element_t *element,
lock_rec_other_trx_holds_expl_arg *arg)
{
- mysql_mutex_lock(&element->mutex);
+ element->mutex.wr_lock();
if (element->trx)
{
element->trx->mutex_lock();
@@ -5091,7 +5117,7 @@ static my_bool lock_rec_other_trx_holds_expl_callback(
ut_ad(!expl_lock || expl_lock->trx == &arg->impl_trx);
element->trx->mutex_unlock();
}
- mysql_mutex_unlock(&element->mutex);
+ element->mutex.wr_unlock();
return 0;
}
@@ -5835,7 +5861,7 @@ static my_bool lock_table_locks_lookup(rw_trx_hash_element_t *element,
const dict_table_t *table)
{
lock_sys.assert_locked();
- mysql_mutex_lock(&element->mutex);
+ element->mutex.wr_lock();
if (element->trx)
{
element->trx->mutex_lock();
@@ -5859,7 +5885,7 @@ static my_bool lock_table_locks_lookup(rw_trx_hash_element_t *element,
}
element->trx->mutex_unlock();
}
- mysql_mutex_unlock(&element->mutex);
+ element->mutex.wr_unlock();
return 0;
}
#endif /* UNIV_DEBUG */
diff --git a/storage/innobase/log/log0log.cc b/storage/innobase/log/log0log.cc
index 279e8b63468..8a0ef712ab1 100644
--- a/storage/innobase/log/log0log.cc
+++ b/storage/innobase/log/log0log.cc
@@ -61,9 +61,9 @@ Every change to a contents of a data page must be done
through mtr_t, and mtr_t::commit() will write log records
to the InnoDB redo log. */
-MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE)
+alignas(CPU_LEVEL1_DCACHE_LINESIZE)
static group_commit_lock flush_lock;
-MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE)
+alignas(CPU_LEVEL1_DCACHE_LINESIZE)
static group_commit_lock write_lock;
/** Redo log system */
diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc
index 46e3b8a7548..c01d43802a1 100644
--- a/storage/innobase/log/log0recv.cc
+++ b/storage/innobase/log/log0recv.cc
@@ -781,11 +781,18 @@ processed:
@param flags FSP_SPACE_FLAGS
@param crypt_data encryption metadata
@param size tablespace size in pages
- @return tablespace */
+ @return tablespace
+ @retval nullptr if crypt_data is invalid */
static fil_space_t *create(const recv_spaces_t::const_iterator &it,
const std::string &name, uint32_t flags,
fil_space_crypt_t *crypt_data, uint32_t size)
{
+ if (crypt_data && !crypt_data->is_key_found())
+ {
+ crypt_data->~fil_space_crypt_t();
+ ut_free(crypt_data);
+ return nullptr;
+ }
fil_space_t *space= fil_space_t::create(it->first, flags,
FIL_TYPE_TABLESPACE, crypt_data);
ut_ad(space);
@@ -830,6 +837,9 @@ processed:
fil_space_read_crypt_data(fil_space_t::zip_size(flags), page),
size);
+ if (!space)
+ goto next_item;
+
space->free_limit= fsp_header_get_field(page, FSP_FREE_LIMIT);
space->free_len= flst_get_len(FSP_HEADER_OFFSET + FSP_FREE + page);
fil_node_t *node= UT_LIST_GET_FIRST(space->chain);
@@ -840,7 +850,8 @@ free_space:
goto next_item;
}
if (os_file_write(IORequestWrite, node->name, node->handle,
- page, 0, fil_space_t::physical_size(flags)) != DB_SUCCESS)
+ page, 0, fil_space_t::physical_size(flags)) !=
+ DB_SUCCESS)
{
space->release();
goto free_space;
@@ -900,6 +911,11 @@ bool recv_sys_t::recover_deferred(recv_sys_t::map::iterator &p,
fil_space_read_crypt_data
(fil_space_t::zip_size(flags),
page), size);
+ if (!space)
+ {
+ block->page.lock.x_unlock();
+ goto fail;
+ }
space->free_limit= fsp_header_get_field(page, FSP_FREE_LIMIT);
space->free_len= flst_get_len(FSP_HEADER_OFFSET + FSP_FREE + page);
block->page.lock.x_unlock();
@@ -1355,7 +1371,7 @@ inline void recv_sys_t::clear()
mysql_mutex_assert_owner(&mutex);
apply_log_recs= false;
apply_batch_on= false;
- ut_ad(!after_apply || !UT_LIST_GET_LAST(blocks));
+ ut_ad(!after_apply || found_corrupt_fs || !UT_LIST_GET_LAST(blocks));
pages.clear();
for (buf_block_t *block= UT_LIST_GET_LAST(blocks); block; )
diff --git a/storage/innobase/os/os0file.cc b/storage/innobase/os/os0file.cc
index a9c4776c147..07bf56d97a1 100644
--- a/storage/innobase/os/os0file.cc
+++ b/storage/innobase/os/os0file.cc
@@ -51,7 +51,6 @@ Created 10/21/1995 Heikki Tuuri
#ifdef HAVE_LINUX_UNISTD_H
#include "unistd.h"
#endif
-#include "os0thread.h"
#include "buf0dblwr.h"
#include <tpool_structs.h>
diff --git a/storage/innobase/os/os0thread.cc b/storage/innobase/os/os0thread.cc
deleted file mode 100644
index a5158ef825d..00000000000
--- a/storage/innobase/os/os0thread.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************************
-
-Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2020, MariaDB Corporation.
-
-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
-Foundation; version 2 of the License.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
-
-*****************************************************************************/
-
-/**************************************************//**
-@file os/os0thread.cc
-The interface to the operating system thread control primitives
-
-Created 9/8/1995 Heikki Tuuri
-*******************************************************/
-
-#include "univ.i"
-#include "srv0srv.h"
diff --git a/storage/innobase/page/page0page.cc b/storage/innobase/page/page0page.cc
index 3985f57a586..a964f60c056 100644
--- a/storage/innobase/page/page0page.cc
+++ b/storage/innobase/page/page0page.cc
@@ -2,7 +2,7 @@
Copyright (c) 1994, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2012, Facebook Inc.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -654,7 +654,7 @@ page_copy_rec_list_end(
/* Update the lock table and possible hash index */
- if (dict_table_is_locking_disabled(index->table)) {
+ if (!index->has_locking()) {
} else if (rec_move && dict_index_is_spatial(index)) {
lock_rtr_move_rec_list(new_block, block, rec_move, num_moved);
} else {
@@ -821,7 +821,7 @@ zip_reorganize:
/* Update the lock table and possible hash index */
- if (dict_table_is_locking_disabled(index->table)) {
+ if (!index->has_locking()) {
} else if (dict_index_is_spatial(index)) {
lock_rtr_move_rec_list(new_block, block, rec_move, num_moved);
} else {
diff --git a/storage/innobase/read/read0read.cc b/storage/innobase/read/read0read.cc
index ff34765244e..05d12fa7f21 100644
--- a/storage/innobase/read/read0read.cc
+++ b/storage/innobase/read/read0read.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2015, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2018, 2021, MariaDB Corporation.
+Copyright (c) 2018, 2022, MariaDB Corporation.
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
@@ -226,10 +226,10 @@ void ReadView::open(trx_t *trx)
m_open.store(true, std::memory_order_relaxed);
else
{
- mysql_mutex_lock(&m_mutex);
+ m_mutex.wr_lock();
snapshot(trx);
m_open.store(true, std::memory_order_relaxed);
- mysql_mutex_unlock(&m_mutex);
+ m_mutex.wr_unlock();
}
}
}
diff --git a/storage/innobase/rem/rem0cmp.cc b/storage/innobase/rem/rem0cmp.cc
index 40c5d168498..a77ddafd568 100644
--- a/storage/innobase/rem/rem0cmp.cc
+++ b/storage/innobase/rem/rem0cmp.cc
@@ -289,8 +289,7 @@ int cmp_data(ulint mtype, ulint prtype, bool descending,
/* fall through */
case DATA_VARMYSQL:
DBUG_ASSERT(is_strnncoll_compatible(prtype & DATA_MYSQL_TYPE_MASK));
- if (CHARSET_INFO *cs= get_charset(dtype_get_charset_coll(prtype),
- MYF(MY_WME)))
+ if (CHARSET_INFO *cs= all_charsets[dtype_get_charset_coll(prtype)])
{
cmp= cs->coll->strnncollsp(cs, data1, len1, data2, len2);
goto func_exit;
@@ -299,8 +298,7 @@ int cmp_data(ulint mtype, ulint prtype, bool descending,
ib::fatal() << "Unable to find charset-collation for " << prtype;
case DATA_MYSQL:
DBUG_ASSERT(is_strnncoll_compatible(prtype & DATA_MYSQL_TYPE_MASK));
- if (CHARSET_INFO *cs= get_charset(dtype_get_charset_coll(prtype),
- MYF(MY_WME)))
+ if (CHARSET_INFO *cs= all_charsets[dtype_get_charset_coll(prtype)])
{
cmp= cs->coll->strnncollsp_nchars(cs, data1, len1, data2, len2,
std::max(len1, len2));
diff --git a/storage/innobase/row/row0ftsort.cc b/storage/innobase/row/row0ftsort.cc
index 5a172fe5da7..419a120c2af 100644
--- a/storage/innobase/row/row0ftsort.cc
+++ b/storage/innobase/row/row0ftsort.cc
@@ -283,8 +283,7 @@ row_fts_psort_info_init(
psort_info[j].psort_common = common_info;
psort_info[j].error = DB_SUCCESS;
psort_info[j].memory_used = 0;
- mysql_mutex_init(fts_pll_tokenize_mutex_key,
- &psort_info[j].mutex, nullptr);
+ mysql_mutex_init(0, &psort_info[j].mutex, nullptr);
}
/* Initialize merge_info structures parallel merge and insert
diff --git a/storage/innobase/row/row0ins.cc b/storage/innobase/row/row0ins.cc
index 340de475e69..69798c33276 100644
--- a/storage/innobase/row/row0ins.cc
+++ b/storage/innobase/row/row0ins.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2016, 2021, MariaDB Corporation.
+Copyright (c) 2016, 2022, MariaDB Corporation.
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
@@ -35,7 +35,6 @@ Created 4/20/1996 Heikki Tuuri
#include "que0que.h"
#include "row0upd.h"
#include "row0sel.h"
-#include "row0log.h"
#include "rem0cmp.h"
#include "lock0lock.h"
#include "log0log.h"
@@ -1001,7 +1000,8 @@ row_ins_foreign_check_on_constraint(
{
upd_node_t* node;
upd_node_t* cascade;
- dict_table_t* table = foreign->foreign_table;
+ dict_table_t*const*const fktable = &foreign->foreign_table;
+ dict_table_t* table = *fktable;
dict_index_t* index;
dict_index_t* clust_index;
dtuple_t* ref;
@@ -1169,7 +1169,7 @@ row_ins_foreign_check_on_constraint(
/* Set an X-lock on the row to delete or update in the child table */
- err = lock_table(table, LOCK_IX, thr);
+ err = lock_table(table, fktable, LOCK_IX, thr);
if (err == DB_SUCCESS) {
/* Here it suffices to use a LOCK_REC_NOT_GAP type lock;
@@ -1455,10 +1455,7 @@ row_ins_check_foreign_constraint(
dtuple_t* entry, /*!< in: index entry for index */
que_thr_t* thr) /*!< in: query thread */
{
- dberr_t err;
upd_node_t* upd_node;
- dict_table_t* check_table;
- dict_index_t* check_index;
ulint n_fields_cmp;
btr_pcur_t pcur;
int cmp;
@@ -1480,12 +1477,10 @@ row_ins_check_foreign_constraint(
upd_node= NULL;
#endif /* WITH_WSREP */
- err = DB_SUCCESS;
-
- if (trx->check_foreigns == FALSE) {
+ if (!trx->check_foreigns) {
/* The user has suppressed foreign key checks currently for
this session */
- goto exit_func;
+ DBUG_RETURN(DB_SUCCESS);
}
/* If any of the foreign key fields in entry is SQL NULL, we
@@ -1494,12 +1489,12 @@ row_ins_check_foreign_constraint(
for (ulint i = 0; i < entry->n_fields; i++) {
dfield_t* field = dtuple_get_nth_field(entry, i);
if (i < foreign->n_fields && dfield_is_null(field)) {
- goto exit_func;
+ DBUG_RETURN(DB_SUCCESS);
}
/* System Versioning: if row_end != Inf, we
suppress the foreign key check */
if (field->type.vers_sys_end() && field->vers_history_row()) {
- goto exit_func;
+ DBUG_RETURN(DB_SUCCESS);
}
}
@@ -1524,7 +1519,7 @@ row_ins_check_foreign_constraint(
another, and the user has problems predicting in
which order they are performed. */
- goto exit_func;
+ DBUG_RETURN(DB_SUCCESS);
}
}
@@ -1536,23 +1531,32 @@ row_ins_check_foreign_constraint(
dfield_t* row_end = dtuple_get_nth_field(
insert_node->row, table->vers_end);
if (row_end->vers_history_row()) {
- goto exit_func;
+ DBUG_RETURN(DB_SUCCESS);
}
}
}
- if (check_ref) {
- check_table = foreign->referenced_table;
- check_index = foreign->referenced_index;
- } else {
- check_table = foreign->foreign_table;
- check_index = foreign->foreign_index;
+ dict_table_t *check_table;
+ dict_index_t *check_index;
+ dberr_t err = DB_SUCCESS;
+
+ {
+ dict_table_t*& fktable = check_ref
+ ? foreign->referenced_table : foreign->foreign_table;
+ check_table = fktable;
+ if (check_table) {
+ err = lock_table(check_table, &fktable, LOCK_IS, thr);
+ if (err != DB_SUCCESS) {
+ goto do_possible_lock_wait;
+ }
+ }
+ check_table = fktable;
}
- if (check_table == NULL
- || !check_table->is_readable()
- || check_index == NULL) {
+ check_index = check_ref
+ ? foreign->referenced_index : foreign->foreign_index;
+ if (!check_table || !check_table->is_readable() || !check_index) {
FILE* ef = dict_foreign_err_file;
std::string fk_str;
@@ -1601,18 +1605,6 @@ row_ins_check_foreign_constraint(
goto exit_func;
}
- if (check_table != table) {
- /* We already have a LOCK_IX on table, but not necessarily
- on check_table */
-
- err = lock_table(check_table, LOCK_IS, thr);
-
- if (err != DB_SUCCESS) {
-
- goto do_possible_lock_wait;
- }
- }
-
mtr_start(&mtr);
/* Store old value on n_fields_cmp */
@@ -1825,10 +1817,7 @@ do_possible_lock_wait:
thr->lock_state = QUE_THR_LOCK_NOLOCK;
- if (err != DB_SUCCESS) {
- } else if (check_table->name.is_temporary()) {
- err = DB_LOCK_WAIT_TIMEOUT;
- } else {
+ if (err == DB_SUCCESS) {
err = DB_LOCK_WAIT;
}
}
@@ -2025,7 +2014,6 @@ row_ins_scan_sec_index_for_duplicate(
dict_index_t* index, /*!< in: non-clustered unique index */
dtuple_t* entry, /*!< in: index entry */
que_thr_t* thr, /*!< in: query thread */
- bool s_latch,/*!< in: whether index->lock is being held */
mtr_t* mtr, /*!< in/out: mini-transaction */
mem_heap_t* offsets_heap)
/*!< in/out: memory heap that can be emptied */
@@ -2042,7 +2030,7 @@ row_ins_scan_sec_index_for_duplicate(
rec_offs_init(offsets_);
- ut_ad(s_latch == (index->lock.have_u_not_x() || index->lock.have_s()));
+ ut_ad(!index->lock.have_any());
n_unique = dict_index_get_n_unique(index);
@@ -2066,11 +2054,7 @@ row_ins_scan_sec_index_for_duplicate(
dtuple_set_n_fields_cmp(entry, n_unique);
- btr_pcur_open(index, entry, PAGE_CUR_GE,
- s_latch
- ? BTR_SEARCH_LEAF_ALREADY_S_LATCHED
- : BTR_SEARCH_LEAF,
- &pcur, mtr);
+ btr_pcur_open(index, entry, PAGE_CUR_GE, BTR_SEARCH_LEAF, &pcur, mtr);
allow_duplicates = thr_get_trx(thr)->duplicates;
@@ -2488,11 +2472,6 @@ row_ins_index_entry_big_rec(
&pcur, offsets, big_rec, &mtr, BTR_STORE_INSERT);
DEBUG_SYNC_C_IF_THD(thd, "after_row_ins_extern");
- if (error == DB_SUCCESS
- && dict_index_is_online_ddl(index)) {
- row_log_table_insert(btr_pcur_get_rec(&pcur), index, offsets);
- }
-
mtr.commit();
btr_pcur_close(&pcur);
@@ -2641,6 +2620,7 @@ commit_exit:
&& block->page.id().page_no() == index->page
&& !index->table->skip_alter_undo
&& !index->table->n_rec_locks
+ && !index->table->is_active_ddl()
&& !index->table->has_spatial_index()
&& !trx->is_wsrep() /* FIXME: MDEV-24623 */
&& !thd_is_slave(trx->mysql_thd) /* FIXME: MDEV-24622 */) {
@@ -2649,7 +2629,7 @@ commit_exit:
trx->bulk_insert = true;
if (!index->table->is_temporary()) {
- err = lock_table(index->table, LOCK_X, thr);
+ err = lock_table(index->table, NULL, LOCK_X, thr);
if (err != DB_SUCCESS) {
trx->error_state = err;
@@ -2763,11 +2743,6 @@ err_exit:
&pcur, flags, mode, &offsets, &offsets_heap,
entry_heap, entry, thr, &mtr);
- if (err == DB_SUCCESS && dict_index_is_online_ddl(index)) {
- row_log_table_insert(btr_cur_get_rec(cursor),
- index, offsets);
- }
-
mtr_commit(&mtr);
mem_heap_free(entry_heap);
} else {
@@ -2805,9 +2780,9 @@ do_insert:
}
}
- if (big_rec != NULL) {
- mtr_commit(&mtr);
+ mtr.commit();
+ if (big_rec) {
/* Online table rebuild could read (and
ignore) the incomplete record at this point.
If online rebuild is in progress, the
@@ -2820,14 +2795,6 @@ do_insert:
entry, big_rec, offsets, &offsets_heap, index,
trx->mysql_thd);
dtuple_convert_back_big_rec(index, entry, big_rec);
- } else {
- if (err == DB_SUCCESS
- && dict_index_is_online_ddl(index)) {
- row_log_table_insert(
- insert_rec, index, offsets);
- }
-
- mtr_commit(&mtr);
}
}
@@ -2841,19 +2808,10 @@ func_exit:
DBUG_RETURN(err);
}
-/** Start a mini-transaction and check if the index will be dropped.
+/** Start a mini-transaction.
@param[in,out] mtr mini-transaction
-@param[in,out] index secondary index
-@param[in] check whether to check
-@param[in] search_mode flags
-@return true if the index is to be dropped */
-static MY_ATTRIBUTE((warn_unused_result))
-bool
-row_ins_sec_mtr_start_and_check_if_aborted(
- mtr_t* mtr,
- dict_index_t* index,
- bool check,
- ulint search_mode)
+@param[in,out] index secondary index */
+static void row_ins_sec_mtr_start(mtr_t *mtr, dict_index_t *index)
{
ut_ad(!dict_index_is_clust(index));
ut_ad(mtr->is_named_space(index->table->space));
@@ -2863,30 +2821,6 @@ row_ins_sec_mtr_start_and_check_if_aborted(
mtr->start();
index->set_modified(*mtr);
mtr->set_log_mode(log_mode);
-
- if (!check) {
- return(false);
- }
-
- if (search_mode & BTR_ALREADY_S_LATCHED) {
- mtr_s_lock_index(index, mtr);
- } else {
- mtr_sx_lock_index(index, mtr);
- }
-
- switch (index->online_status) {
- case ONLINE_INDEX_ABORTED:
- case ONLINE_INDEX_ABORTED_DROPPED:
- ut_ad(!index->is_committed());
- return(true);
- case ONLINE_INDEX_COMPLETE:
- return(false);
- case ONLINE_INDEX_CREATION:
- break;
- }
-
- ut_error;
- return(true);
}
/***************************************************************//**
@@ -2946,28 +2880,6 @@ row_ins_sec_index_entry_low(
}
}
- /* Ensure that we acquire index->lock when inserting into an
- index with index->online_status == ONLINE_INDEX_COMPLETE, but
- could still be subject to rollback_inplace_alter_table().
- This prevents a concurrent change of index->online_status.
- The memory object cannot be freed as long as we have an open
- reference to the table, or index->table->n_ref_count > 0. */
- const bool check = !index->is_committed();
- if (check) {
- DEBUG_SYNC_C("row_ins_sec_index_enter");
- if (mode == BTR_MODIFY_LEAF) {
- search_mode |= BTR_ALREADY_S_LATCHED;
- mtr_s_lock_index(index, &mtr);
- } else {
- mtr_sx_lock_index(index, &mtr);
- }
-
- if (row_log_online_op_try(
- index, entry, thr_get_trx(thr)->id)) {
- goto func_exit;
- }
- }
-
/* Note that we use PAGE_CUR_LE as the search mode, because then
the function will return in both low_match and up_match of the
cursor sensible values */
@@ -3052,13 +2964,10 @@ row_ins_sec_index_entry_low(
DEBUG_SYNC_C("row_ins_sec_index_unique");
- if (row_ins_sec_mtr_start_and_check_if_aborted(
- &mtr, index, check, search_mode)) {
- goto func_exit;
- }
+ row_ins_sec_mtr_start(&mtr, index);
err = row_ins_scan_sec_index_for_duplicate(
- flags, index, entry, thr, check, &mtr, offsets_heap);
+ flags, index, entry, thr, &mtr, offsets_heap);
mtr_commit(&mtr);
@@ -3087,10 +2996,7 @@ row_ins_sec_index_entry_low(
DBUG_RETURN(err);
}
- if (row_ins_sec_mtr_start_and_check_if_aborted(
- &mtr, index, check, search_mode)) {
- goto func_exit;
- }
+ row_ins_sec_mtr_start(&mtr, index);
DEBUG_SYNC_C("row_ins_sec_index_entry_dup_locks_created");
@@ -3696,7 +3602,8 @@ row_ins(
FTS_DOC_ID for history is enough.
*/
const unsigned type = index->type;
- if (index->type & DICT_FTS) {
+ if (index->type & DICT_FTS
+ || !index->is_committed()) {
} else if (!(type & DICT_UNIQUE) || index->n_uniq > 1
|| !node->vers_history_row()) {
@@ -3809,7 +3716,7 @@ row_ins_step(
goto same_trx;
}
- err = lock_table(node->table, LOCK_IX, thr);
+ err = lock_table(node->table, NULL, LOCK_IX, thr);
DBUG_EXECUTE_IF("ib_row_ins_ix_lock_wait",
err = DB_LOCK_WAIT;);
diff --git a/storage/innobase/row/row0log.cc b/storage/innobase/row/row0log.cc
index 7fbcdf60094..a0805b27adf 100644
--- a/storage/innobase/row/row0log.cc
+++ b/storage/innobase/row/row0log.cc
@@ -54,9 +54,7 @@ enum row_tab_op {
/** Update a record in place */
ROW_T_UPDATE,
/** Delete (purge) a record */
- ROW_T_DELETE,
- /** Empty the table */
- ROW_T_EMPTY
+ ROW_T_DELETE
};
/** Index record modification operations during online index creation */
@@ -64,9 +62,7 @@ enum row_op {
/** Insert a record */
ROW_OP_INSERT = 0x61,
/** Delete a record */
- ROW_OP_DELETE,
- /** Empy the index */
- ROW_OP_EMPTY
+ ROW_OP_DELETE
};
/** Size of the modification log entry header, in bytes */
@@ -89,79 +85,6 @@ struct row_log_buf_t {
row_log_apply(). */
};
-/** Tracks BLOB allocation during online ALTER TABLE */
-class row_log_table_blob_t {
-public:
- /** Constructor (declaring a BLOB freed)
- @param offset_arg row_log_t::tail::total */
-#ifdef UNIV_DEBUG
- row_log_table_blob_t(ulonglong offset_arg) :
- old_offset (0), free_offset (offset_arg),
- offset (BLOB_FREED) {}
-#else /* UNIV_DEBUG */
- row_log_table_blob_t() :
- offset (BLOB_FREED) {}
-#endif /* UNIV_DEBUG */
-
- /** Declare a BLOB freed again.
- @param offset_arg row_log_t::tail::total */
-#ifdef UNIV_DEBUG
- void blob_free(ulonglong offset_arg)
-#else /* UNIV_DEBUG */
- void blob_free()
-#endif /* UNIV_DEBUG */
- {
- ut_ad(offset < offset_arg);
- ut_ad(offset != BLOB_FREED);
- ut_d(old_offset = offset);
- ut_d(free_offset = offset_arg);
- offset = BLOB_FREED;
- }
- /** Declare a freed BLOB reused.
- @param offset_arg row_log_t::tail::total */
- void blob_alloc(ulonglong offset_arg) {
- ut_ad(free_offset <= offset_arg);
- ut_d(old_offset = offset);
- offset = offset_arg;
- }
- /** Determine if a BLOB was freed at a given log position
- @param offset_arg row_log_t::head::total after the log record
- @return true if freed */
- bool is_freed(ulonglong offset_arg) const {
- /* This is supposed to be the offset at the end of the
- current log record. */
- ut_ad(offset_arg > 0);
- /* We should never get anywhere close the magic value. */
- ut_ad(offset_arg < BLOB_FREED);
- return(offset_arg < offset);
- }
-private:
- /** Magic value for a freed BLOB */
- static const ulonglong BLOB_FREED = ~0ULL;
-#ifdef UNIV_DEBUG
- /** Old offset, in case a page was freed, reused, freed, ... */
- ulonglong old_offset;
- /** Offset of last blob_free() */
- ulonglong free_offset;
-#endif /* UNIV_DEBUG */
- /** Byte offset to the log file */
- ulonglong offset;
-};
-
-/** @brief Map of off-page column page numbers to 0 or log byte offsets.
-
-If there is no mapping for a page number, it is safe to access.
-If a page number maps to 0, it is an off-page column that has been freed.
-If a page number maps to a nonzero number, the number is a byte offset
-into the index->online_log, indicating that the page is safe to access
-when applying log records starting from that offset. */
-typedef std::map<
- ulint,
- row_log_table_blob_t,
- std::less<ulint>,
- ut_allocator<std::pair<const ulint, row_log_table_blob_t> > >
- page_no_map;
-
/** @brief Buffer for logging modifications during online index creation
All modifications to an index that is being created will be logged by
@@ -178,10 +101,6 @@ struct row_log_t {
pfs_os_file_t fd; /*!< file descriptor */
mysql_mutex_t mutex; /*!< mutex protecting error,
max_trx and tail */
- page_no_map* blobs; /*!< map of page numbers of off-page columns
- that have been freed during table-rebuilding
- ALTER TABLE (row_log_table_*); protected by
- index->lock X-latch only */
dict_table_t* table; /*!< table that is being rebuilt,
or NULL when this is a secondary
index that is being created online */
@@ -241,6 +160,11 @@ struct row_log_t {
const TABLE* old_table; /*< Use old table in case of error. */
uint64_t n_rows; /*< Number of rows read from the table */
+
+ /** Alter table transaction. It can be used to apply the DML logs
+ into the table */
+ const trx_t* alter_trx;
+
/** Determine whether the log should be in the 'instant ADD' format
@param[in] index the clustered index of the source table
@return whether to use the 'instant ADD COLUMN' format */
@@ -326,34 +250,14 @@ row_log_block_free(
DBUG_VOID_RETURN;
}
-/** Empty the online log.
-@param index index log to be cleared */
-static void row_log_empty(dict_index_t *index)
-{
- ut_ad(index->lock.have_s());
- row_log_t *log= index->online_log;
-
- mysql_mutex_lock(&log->mutex);
- UT_DELETE(log->blobs);
- log->blobs= nullptr;
- row_log_block_free(log->tail);
- row_log_block_free(log->head);
- row_merge_file_destroy_low(log->fd);
- log->fd= OS_FILE_CLOSED;
- log->tail.total= log->tail.blocks= log->tail.bytes= 0;
- log->head.total= log->head.blocks= log->head.bytes= 0;
- mysql_mutex_unlock(&log->mutex);
-}
-
-/******************************************************//**
-Logs an operation to a secondary index that is (or was) being created. */
-void
-row_log_online_op(
-/*==============*/
- dict_index_t* index, /*!< in/out: index, S or X latched */
- const dtuple_t* tuple, /*!< in: index tuple (NULL=empty the index) */
- trx_id_t trx_id) /*!< in: transaction ID for insert,
- or 0 for delete */
+/** Logs an operation to a secondary index that is (or was) being created.
+@param index index, S or X latched
+@param tuple index tuple
+@param trx_id transaction ID for insert, or 0 for delete
+@retval false if row_log_apply() failure happens
+or true otherwise */
+bool row_log_online_op(dict_index_t *index, const dtuple_t *tuple,
+ trx_id_t trx_id)
{
byte* b;
ulint extra_size;
@@ -361,40 +265,37 @@ row_log_online_op(
ulint mrec_size;
ulint avail_size;
row_log_t* log;
+ bool success= true;
- ut_ad(!tuple || dtuple_validate(tuple));
- ut_ad(!tuple || dtuple_get_n_fields(tuple) == dict_index_get_n_fields(index));
+ ut_ad(dtuple_validate(tuple));
+ ut_ad(dtuple_get_n_fields(tuple) == dict_index_get_n_fields(index));
ut_ad(index->lock.have_x() || index->lock.have_s());
if (index->is_corrupted()) {
- return;
+ return success;
}
- ut_ad(dict_index_is_online_ddl(index));
+ ut_ad(dict_index_is_online_ddl(index)
+ || (index->online_log
+ && index->online_status == ONLINE_INDEX_COMPLETE));
/* Compute the size of the record. This differs from
row_merge_buf_encode(), because here we do not encode
extra_size+1 (and reserve 0 as the end-of-chunk marker). */
- if (!tuple) {
- row_log_empty(index);
- mrec_size = 4;
- extra_size = 0;
- size = 2;
- } else {
- size = rec_get_converted_size_temp<false>(
- index, tuple->fields, tuple->n_fields, &extra_size);
- ut_ad(size >= extra_size);
- ut_ad(size <= sizeof log->tail.buf);
+ size = rec_get_converted_size_temp<false>(
+ index, tuple->fields, tuple->n_fields, &extra_size);
+ ut_ad(size >= extra_size);
+ ut_ad(size <= sizeof log->tail.buf);
- mrec_size = ROW_LOG_HEADER_SIZE
- + (extra_size >= 0x80) + size
- + (trx_id ? DATA_TRX_ID_LEN : 0);
- }
+ mrec_size = ROW_LOG_HEADER_SIZE
+ + (extra_size >= 0x80) + size
+ + (trx_id ? DATA_TRX_ID_LEN : 0);
log = index->online_log;
mysql_mutex_lock(&log->mutex);
+start_log:
if (trx_id > log->max_trx) {
log->max_trx = trx_id;
}
@@ -419,8 +320,6 @@ row_log_online_op(
*b++ = ROW_OP_INSERT;
trx_write_trx_id(b, trx_id);
b += DATA_TRX_ID_LEN;
- } else if (!tuple) {
- *b++ = ROW_OP_EMPTY;
} else {
*b++ = ROW_OP_DELETE;
}
@@ -433,13 +332,8 @@ row_log_online_op(
*b++ = (byte) extra_size;
}
- if (tuple) {
- rec_convert_dtuple_to_temp<false>(
- b + extra_size, index, tuple->fields,
- tuple->n_fields);
- } else {
- memset(b, 0, 2);
- }
+ rec_convert_dtuple_to_temp<false>(
+ b + extra_size, index, tuple->fields, tuple->n_fields);
b += size;
@@ -450,7 +344,28 @@ row_log_online_op(
byte* buf = log->tail.block;
if (byte_offset + srv_sort_buf_size >= srv_online_max_size) {
- goto write_failed;
+ if (index->online_status != ONLINE_INDEX_COMPLETE)
+ goto write_failed;
+ /* About to run out of log, InnoDB has to
+ apply the online log for the completed index */
+ index->lock.s_unlock();
+ dberr_t error= row_log_apply(
+ log->alter_trx, index, nullptr, nullptr);
+ index->lock.s_lock(SRW_LOCK_CALL);
+ if (error != DB_SUCCESS) {
+ /* Mark all newly added indexes
+ as corrupted */
+ log->error = error;
+ success = false;
+ goto err_exit;
+ }
+
+ /* Recheck whether the index online log */
+ if (!index->online_log) {
+ goto err_exit;
+ }
+
+ goto start_log;
}
if (mrec_size == avail_size) {
@@ -510,6 +425,7 @@ write_failed:
MEM_UNDEFINED(log->tail.buf, sizeof log->tail.buf);
err_exit:
mysql_mutex_unlock(&log->mutex);
+ return success;
}
/******************************************************//**
@@ -833,7 +749,6 @@ row_log_table_low_redundant(
dtuple_t* tuple;
const ulint n_fields = rec_get_n_fields_old(rec);
- ut_ad(!page_is_comp(page_align(rec)));
ut_ad(index->n_fields >= n_fields);
ut_ad(index->n_fields == n_fields || index->is_instant());
ut_ad(dict_tf2_is_valid(index->table->flags, index->table->flags2));
@@ -994,22 +909,6 @@ row_log_table_low(
ut_ad(rec_offs_size(offsets) <= sizeof log->tail.buf);
ut_ad(index->lock.have_any());
-#ifdef UNIV_DEBUG
- switch (fil_page_get_type(page_align(rec))) {
- case FIL_PAGE_INDEX:
- break;
- case FIL_PAGE_TYPE_INSTANT:
- ut_ad(index->is_instant());
- ut_ad(!page_has_siblings(page_align(rec)));
- ut_ad(page_get_page_no(page_align(rec)) == index->page);
- break;
- default:
- ut_ad("wrong page type" == 0);
- }
-#endif /* UNIV_DEBUG */
- ut_ad(!rec_is_metadata(rec, *index));
- ut_ad(page_rec_is_leaf(rec));
- ut_ad(!page_is_comp(page_align(rec)) == !rec_offs_comp(offsets));
/* old_pk=row_log_table_get_pk() [not needed in INSERT] is a prefix
of the clustered index record (PRIMARY KEY,DB_TRX_ID,DB_ROLL_PTR),
with no information on virtual columns */
@@ -1028,7 +927,6 @@ row_log_table_low(
return;
}
- ut_ad(page_is_comp(page_align(rec)));
ut_ad(rec_get_status(rec) == REC_STATUS_ORDINARY
|| rec_get_status(rec) == REC_STATUS_INSTANT);
@@ -1471,78 +1369,6 @@ row_log_table_insert(
}
/******************************************************//**
-Notes that a BLOB is being freed during online ALTER TABLE. */
-void
-row_log_table_blob_free(
-/*====================*/
- dict_index_t* index, /*!< in/out: clustered index, X-latched */
- ulint page_no)/*!< in: starting page number of the BLOB */
-{
- ut_ad(dict_index_is_clust(index));
- ut_ad(dict_index_is_online_ddl(index));
- ut_ad(index->lock.have_u_or_x());
- ut_ad(page_no != FIL_NULL);
-
- if (index->online_log->error != DB_SUCCESS) {
- return;
- }
-
- page_no_map* blobs = index->online_log->blobs;
-
- if (blobs == NULL) {
- index->online_log->blobs = blobs = UT_NEW_NOKEY(page_no_map());
- }
-
-#ifdef UNIV_DEBUG
- const ulonglong log_pos = index->online_log->tail.total;
-#else
-# define log_pos /* empty */
-#endif /* UNIV_DEBUG */
-
- const page_no_map::value_type v(page_no,
- row_log_table_blob_t(log_pos));
-
- std::pair<page_no_map::iterator,bool> p = blobs->insert(v);
-
- if (!p.second) {
- /* Update the existing mapping. */
- ut_ad(p.first->first == page_no);
- p.first->second.blob_free(log_pos);
- }
-#undef log_pos
-}
-
-/******************************************************//**
-Notes that a BLOB is being allocated during online ALTER TABLE. */
-void
-row_log_table_blob_alloc(
-/*=====================*/
- dict_index_t* index, /*!< in/out: clustered index, X-latched */
- ulint page_no)/*!< in: starting page number of the BLOB */
-{
- ut_ad(dict_index_is_clust(index));
- ut_ad(dict_index_is_online_ddl(index));
- ut_ad(index->lock.have_u_or_x());
-
- ut_ad(page_no != FIL_NULL);
-
- if (index->online_log->error != DB_SUCCESS) {
- return;
- }
-
- /* Only track allocations if the same page has been freed
- earlier. Double allocation without a free is not allowed. */
- if (page_no_map* blobs = index->online_log->blobs) {
- page_no_map::iterator p = blobs->find(page_no);
-
- if (p != blobs->end()) {
- ut_ad(p->first == page_no);
- p->second.blob_alloc(index->online_log->tail.total);
- }
- }
-}
-
-/******************************************************//**
Converts a log record to a table row.
@return converted row, or NULL if the conversion fails */
static MY_ATTRIBUTE((nonnull, warn_unused_result))
@@ -1618,34 +1444,13 @@ row_log_table_apply_convert_mrec(
ut_ad(rec_offs_any_extern(offsets));
index->lock.x_lock(SRW_LOCK_CALL);
- if (const page_no_map* blobs = log->blobs) {
- data = rec_get_nth_field(
- mrec, offsets, i, &len);
- ut_ad(len >= BTR_EXTERN_FIELD_REF_SIZE);
-
- ulint page_no = mach_read_from_4(
- data + len - (BTR_EXTERN_FIELD_REF_SIZE
- - BTR_EXTERN_PAGE_NO));
- page_no_map::const_iterator p = blobs->find(
- page_no);
- if (p != blobs->end()
- && p->second.is_freed(log->head.total)) {
- /* This BLOB has been freed.
- We must not access the row. */
- *error = DB_MISSING_HISTORY;
- dfield_set_data(dfield, data, len);
- dfield_set_ext(dfield);
- goto blob_done;
- }
- }
-
data = btr_rec_copy_externally_stored_field(
mrec, offsets,
index->table->space->zip_size(),
i, &len, heap);
ut_a(data);
dfield_set_data(dfield, data, len);
-blob_done:
+
index->lock.x_unlock();
} else {
data = rec_get_nth_field(mrec, offsets, i, &len);
@@ -1693,6 +1498,12 @@ blob_done:
if ((new_col->prtype & DATA_NOT_NULL)
&& dfield_is_null(dfield)) {
+ if (!log->allow_not_null) {
+ /* We got a NULL value for a NOT NULL column. */
+ *error = DB_INVALID_NULL;
+ return NULL;
+ }
+
const dfield_t& default_field
= log->defaults->fields[col_no];
@@ -1702,12 +1513,6 @@ blob_done:
WARN_DATA_TRUNCATED, 1,
ulong(log->n_rows));
- if (!log->allow_not_null) {
- /* We got a NULL value for a NOT NULL column. */
- *error = DB_INVALID_NULL;
- return NULL;
- }
-
*dfield = default_field;
}
@@ -1818,15 +1623,6 @@ row_log_table_apply_insert(
mrec, dup->index, offsets, log, heap, &error);
switch (error) {
- case DB_MISSING_HISTORY:
- ut_ad(log->blobs);
- /* Because some BLOBs are missing, we know that the
- transaction was rolled back later (a rollback of
- an insert can free BLOBs).
- We can simply skip the insert: the subsequent
- ROW_T_DELETE will be ignored, or a ROW_T_UPDATE will
- be interpreted as ROW_T_INSERT. */
- return(DB_SUCCESS);
case DB_SUCCESS:
ut_ad(row != NULL);
break;
@@ -2101,20 +1897,6 @@ row_log_table_apply_update(
mrec, dup->index, offsets, log, heap, &error);
switch (error) {
- case DB_MISSING_HISTORY:
- /* The record contained BLOBs that are now missing. */
- ut_ad(log->blobs);
- /* Whether or not we are updating the PRIMARY KEY, we
- know that there should be a subsequent
- ROW_T_DELETE for rolling back a preceding ROW_T_INSERT,
- overriding this ROW_T_UPDATE record. (*1)
-
- This allows us to interpret this ROW_T_UPDATE
- as ROW_T_DELETE.
-
- When applying the subsequent ROW_T_DELETE, no matching
- record will be found. */
- /* fall through */
case DB_SUCCESS:
ut_ad(row != NULL);
break;
@@ -2144,79 +1926,16 @@ row_log_table_apply_update(
}
#endif /* UNIV_DEBUG */
- if (page_rec_is_infimum(btr_pcur_get_rec(&pcur))
- || btr_pcur_get_low_match(&pcur) < index->n_uniq) {
- /* The record was not found. This should only happen
- when an earlier ROW_T_INSERT or ROW_T_UPDATE was
- diverted because BLOBs were freed when the insert was
- later rolled back. */
-
- ut_ad(log->blobs);
-
- if (error == DB_SUCCESS) {
- /* An earlier ROW_T_INSERT could have been
- skipped because of a missing BLOB, like this:
-
- BEGIN;
- INSERT INTO t SET blob_col='blob value';
- UPDATE t SET blob_col='';
- ROLLBACK;
-
- This would generate the following records:
- ROW_T_INSERT (referring to 'blob value')
- ROW_T_UPDATE
- ROW_T_UPDATE (referring to 'blob value')
- ROW_T_DELETE
- [ROLLBACK removes the 'blob value']
-
- The ROW_T_INSERT would have been skipped
- because of a missing BLOB. Now we are
- executing the first ROW_T_UPDATE.
- The second ROW_T_UPDATE (for the ROLLBACK)
- would be interpreted as ROW_T_DELETE, because
- the BLOB would be missing.
-
- We could probably assume that the transaction
- has been rolled back and simply skip the
- 'insert' part of this ROW_T_UPDATE record.
- However, there might be some complex scenario
- that could interfere with such a shortcut.
- So, we will insert the row (and risk
- introducing a bogus duplicate key error
- for the ALTER TABLE), and a subsequent
- ROW_T_UPDATE or ROW_T_DELETE will delete it. */
- mtr_commit(&mtr);
- error = row_log_table_apply_insert_low(
- thr, row, offsets_heap, heap, dup);
- } else {
- /* Some BLOBs are missing, so we are interpreting
- this ROW_T_UPDATE as ROW_T_DELETE (see *1).
- Because the record was not found, we do nothing. */
- ut_ad(error == DB_MISSING_HISTORY);
- error = DB_SUCCESS;
-func_exit:
- mtr_commit(&mtr);
- }
-func_exit_committed:
- ut_ad(mtr.has_committed());
-
- if (error != DB_SUCCESS) {
- /* Report the erroneous row using the new
- version of the table. */
- innobase_row_to_mysql(dup->table, log->table, row);
- }
-
- return(error);
- }
+ ut_ad(!page_rec_is_infimum(btr_pcur_get_rec(&pcur))
+ && btr_pcur_get_low_match(&pcur) >= index->n_uniq);
/* Prepare to update (or delete) the record. */
rec_offs* cur_offsets = rec_get_offsets(
btr_pcur_get_rec(&pcur), index, nullptr, index->n_core_fields,
ULINT_UNDEFINED, &offsets_heap);
+#ifdef UNIV_DEBUG
if (!log->same_pk) {
- /* Only update the record if DB_TRX_ID,DB_ROLL_PTR match what
- was buffered. */
ulint len;
const byte* rec_trx_id
= rec_get_nth_field(btr_pcur_get_rec(&pcur),
@@ -2231,60 +1950,29 @@ func_exit_committed:
+ static_cast<const char*>(old_pk_trx_id->data)
== old_pk_trx_id[1].data);
ut_d(trx_id_check(old_pk_trx_id->data, log->min_trx));
-
- if (memcmp(rec_trx_id, old_pk_trx_id->data,
- DATA_TRX_ID_LEN + DATA_ROLL_PTR_LEN)) {
- /* The ROW_T_UPDATE was logged for a different
- DB_TRX_ID,DB_ROLL_PTR. This is possible if an
- earlier ROW_T_INSERT or ROW_T_UPDATE was diverted
- because some BLOBs were missing due to rolling
- back the initial insert or due to purging
- the old BLOB values of an update. */
- ut_ad(log->blobs);
- if (error != DB_SUCCESS) {
- ut_ad(error == DB_MISSING_HISTORY);
- /* Some BLOBs are missing, so we are
- interpreting this ROW_T_UPDATE as
- ROW_T_DELETE (see *1).
- Because this is a different row,
- we will do nothing. */
- error = DB_SUCCESS;
- } else {
- /* Because the user record is missing due to
- BLOBs that were missing when processing
- an earlier log record, we should
- interpret the ROW_T_UPDATE as ROW_T_INSERT.
- However, there is a different user record
- with the same PRIMARY KEY value already. */
- error = DB_DUPLICATE_KEY;
- }
-
- goto func_exit;
- }
- }
-
- if (error != DB_SUCCESS) {
- ut_ad(error == DB_MISSING_HISTORY);
- ut_ad(log->blobs);
- /* Some BLOBs are missing, so we are interpreting
- this ROW_T_UPDATE as ROW_T_DELETE (see *1). */
- error = row_log_table_apply_delete_low(
- &pcur, cur_offsets, heap, &mtr);
- goto func_exit_committed;
+ ut_ad(!memcmp(rec_trx_id, old_pk_trx_id->data,
+ DATA_TRX_ID_LEN + DATA_ROLL_PTR_LEN));
}
+#endif
dtuple_t* entry = row_build_index_entry_low(
row, NULL, index, heap, ROW_BUILD_NORMAL);
upd_t* update = row_upd_build_difference_binary(
index, entry, btr_pcur_get_rec(&pcur), cur_offsets,
false, NULL, heap, dup->table, &error);
- if (error != DB_SUCCESS) {
- goto func_exit;
- }
+ if (error != DB_SUCCESS || !update->n_fields) {
+func_exit:
+ mtr.commit();
+func_exit_committed:
+ ut_ad(mtr.has_committed());
- if (!update->n_fields) {
- /* Nothing to do. */
- goto func_exit;
+ if (error != DB_SUCCESS) {
+ /* Report the erroneous row using the new
+ version of the table. */
+ innobase_row_to_mysql(dup->table, log->table, row);
+ }
+
+ return error;
}
const bool pk_updated
@@ -2693,11 +2381,6 @@ row_log_table_apply_op(
thr, new_trx_id_col,
mrec, offsets, offsets_heap, heap, dup, old_pk);
break;
- case ROW_T_EMPTY:
- dup->index->online_log->table->clear(thr);
- log->head.total += 1;
- next_mrec = mrec;
- break;
}
ut_ad(log->head.total <= log->tail.total);
@@ -2739,7 +2422,8 @@ ulint
row_log_estimate_work(
const dict_index_t* index)
{
- if (index == NULL || index->online_log == NULL) {
+ if (index == NULL || index->online_log == NULL
+ || index->online_log_is_dummy()) {
return(0);
}
@@ -3230,7 +2914,6 @@ row_log_allocate(
log->fd = OS_FILE_CLOSED;
mysql_mutex_init(index_online_log_key, &log->mutex, nullptr);
- log->blobs = NULL;
log->table = table;
log->same_pk = same_pk;
log->defaults = defaults;
@@ -3280,6 +2963,15 @@ row_log_allocate(
}
index->online_log = log;
+
+ if (!table) {
+ /* Assign the clustered index online log to table.
+ It can be used by concurrent DML to identify whether
+ the table has any online DDL */
+ index->table->indexes.start->online_log_make_dummy();
+ log->alter_trx = trx;
+ }
+
/* While we might be holding an exclusive data dictionary lock
here, in row_log_abort_sec() we will not always be holding it. Use
atomic operations in both cases. */
@@ -3297,7 +2989,6 @@ row_log_free(
{
MONITOR_ATOMIC_DEC(MONITOR_ONLINE_CREATE_INDEX);
- UT_DELETE(log->blobs);
UT_DELETE_ARRAY(log->non_core_fields);
row_log_block_free(log->tail);
row_log_block_free(log->head);
@@ -3479,9 +3170,6 @@ row_log_apply_op_low(
}
goto duplicate;
- case ROW_OP_EMPTY:
- ut_ad(0);
- break;
}
} else {
switch (op) {
@@ -3552,9 +3240,6 @@ insert_the_rec:
0, NULL, &mtr);
ut_ad(!big_rec);
break;
- case ROW_OP_EMPTY:
- ut_ad(0);
- break;
}
mem_heap_empty(offsets_heap);
}
@@ -3629,15 +3314,6 @@ row_log_apply_op(
op = static_cast<enum row_op>(*mrec++);
trx_id = 0;
break;
- case ROW_OP_EMPTY:
- {
- mem_heap_t* heap = mem_heap_create(512);
- que_fork_t* fork = que_fork_create(heap);
- que_thr_t* thr = que_thr_create(fork, heap, nullptr);
- index->clear(thr);
- mem_heap_free(heap);
- return mrec + 4;
- }
default:
corrupted:
ut_ad(0);
@@ -3698,7 +3374,8 @@ interrupted)
@param[in,out] dup for reporting duplicate key errors
@param[in,out] stage performance schema accounting object, used by
ALTER TABLE. If not NULL, then stage->inc() will be called for each block
-of log that is applied.
+of log that is applied or nullptr when row log applied done by DML
+thread.
@return DB_SUCCESS, or error code on failure */
static
dberr_t
@@ -3720,7 +3397,9 @@ row_log_apply_ops(
const ulint i = 1 + REC_OFFS_HEADER_SIZE
+ dict_index_get_n_fields(index);
- ut_ad(dict_index_is_online_ddl(index));
+ ut_ad(dict_index_is_online_ddl(index)
+ || (index->online_log
+ && index->online_status == ONLINE_INDEX_COMPLETE));
ut_ad(!index->is_committed());
ut_ad(index->lock.have_x());
ut_ad(index->online_log);
@@ -3740,7 +3419,9 @@ next_block:
ut_ad(index->lock.have_x());
ut_ad(index->online_log->head.bytes == 0);
- stage->inc(row_log_progress_inc_per_block());
+ if (stage) {
+ stage->inc(row_log_progress_inc_per_block());
+ }
if (trx_is_interrupted(trx)) {
goto interrupted;
@@ -3794,6 +3475,8 @@ all_done:
ut_ad(has_index_lock);
ut_ad(index->online_log->head.blocks == 0);
ut_ad(index->online_log->tail.blocks == 0);
+ index->online_log->tail.bytes = 0;
+ index->online_log->head.bytes = 0;
error = DB_SUCCESS;
goto func_exit;
}
@@ -4029,7 +3712,8 @@ interrupted)
@param[in,out] table MySQL table (for reporting duplicates)
@param[in,out] stage performance schema accounting object, used by
ALTER TABLE. stage->begin_phase_log_index() will be called initially and then
-stage->inc() will be called for each block of log that is applied.
+stage->inc() will be called for each block of log that is applied or nullptr
+when row log has been applied by DML thread.
@return DB_SUCCESS, or error code on failure */
dberr_t
row_log_apply(
@@ -4039,20 +3723,24 @@ row_log_apply(
ut_stage_alter_t* stage)
{
dberr_t error;
- row_log_t* log;
row_merge_dup_t dup = { index, table, NULL, 0 };
DBUG_ENTER("row_log_apply");
- ut_ad(dict_index_is_online_ddl(index));
+ ut_ad(dict_index_is_online_ddl(index)
+ || (index->online_log
+ && index->online_status == ONLINE_INDEX_COMPLETE));
ut_ad(!dict_index_is_clust(index));
- stage->begin_phase_log_index();
+ if (stage) {
+ stage->begin_phase_log_index();
+ }
log_free_check();
index->lock.x_lock(SRW_LOCK_CALL);
- if (!dict_table_is_corrupted(index->table)) {
+ if (!dict_table_is_corrupted(index->table)
+ && index->online_log) {
error = row_log_apply_ops(trx, index, &dup, stage);
} else {
error = DB_SUCCESS;
@@ -4067,17 +3755,15 @@ row_log_apply(
index->table->drop_aborted = TRUE;
dict_index_set_online_status(index, ONLINE_INDEX_ABORTED);
- } else {
+ } else if (stage) {
+ /* Mark the index as completed only when it is
+ being called by DDL thread */
ut_ad(dup.n_dup == 0);
dict_index_set_online_status(index, ONLINE_INDEX_COMPLETE);
}
- log = index->online_log;
- index->online_log = NULL;
index->lock.x_unlock();
- row_log_free(log);
-
DBUG_RETURN(error);
}
@@ -4087,24 +3773,14 @@ unsigned row_log_get_n_core_fields(const dict_index_t *index)
return index->online_log->n_core_fields;
}
-/** Notify that the table was emptied by concurrent rollback or purge.
-@param index clustered index */
-static void row_log_table_empty(dict_index_t *index)
+dberr_t row_log_get_error(const dict_index_t *index)
{
- ut_ad(index->lock.have_s());
- row_log_empty(index);
- row_log_t* log= index->online_log;
- ulint avail_size;
- if (byte *b= row_log_table_open(log, 1, &avail_size))
- {
- *b++ = ROW_T_EMPTY;
- row_log_table_close(index, b, 1, avail_size);
- }
+ ut_ad(index->online_log);
+ return index->online_log->error;
}
void dict_table_t::clear(que_thr_t *thr)
{
- bool rebuild= false;
for (dict_index_t *index= UT_LIST_GET_FIRST(indexes); index;
index= UT_LIST_GET_NEXT(indexes, index))
{
@@ -4115,26 +3791,289 @@ void dict_table_t::clear(que_thr_t *thr)
case ONLINE_INDEX_ABORTED:
case ONLINE_INDEX_ABORTED_DROPPED:
continue;
-
case ONLINE_INDEX_COMPLETE:
break;
-
case ONLINE_INDEX_CREATION:
+ ut_ad("invalid type" == 0);
+ MY_ASSERT_UNREACHABLE();
+ break;
+ }
+ index->clear(thr);
+ }
+}
+
+const rec_t *
+UndorecApplier::get_old_rec(const dtuple_t &tuple, dict_index_t *index,
+ const rec_t **clust_rec, rec_offs **offsets)
+{
+ ut_ad(index->is_primary());
+ btr_pcur_t pcur;
+
+ bool found= row_search_on_row_ref(&pcur, BTR_MODIFY_LEAF,
+ index->table, &tuple, &mtr);
+ ut_a(found);
+ *clust_rec= btr_pcur_get_rec(&pcur);
+
+ ulint len= 0;
+ rec_t *prev_version;
+ const rec_t *version= *clust_rec;
+ do
+ {
+ *offsets= rec_get_offsets(version, index, *offsets,
+ index->n_core_fields, ULINT_UNDEFINED,
+ &heap);
+ roll_ptr_t roll_ptr= trx_read_roll_ptr(
+ rec_get_nth_field(version, *offsets, index->db_roll_ptr(), &len));
+ ut_ad(len == DATA_ROLL_PTR_LEN);
+ if (is_same(roll_ptr))
+ return version;
+ trx_undo_prev_version_build(*clust_rec, &mtr, version, index,
+ *offsets, heap, &prev_version, nullptr,
+ nullptr, 0, block);
+ version= prev_version;
+ }
+ while (version);
+
+ return nullptr;
+}
+
+/** Clear out all online log of other online indexes after
+encountering the error during row_log_apply() in DML thread
+@param table table which does online DDL */
+static void row_log_mark_other_online_index_abort(dict_table_t *table)
+{
+ dict_index_t *clust_index= dict_table_get_first_index(table);
+ for (dict_index_t *index= dict_table_get_next_index(clust_index);
+ index; index= dict_table_get_next_index(index))
+ {
+ if (index->online_log &&
+ index->online_status <= ONLINE_INDEX_CREATION &&
+ !index->is_corrupted())
+ {
+ index->lock.x_lock(SRW_LOCK_CALL);
+ row_log_abort_sec(index);
+ index->type|= DICT_CORRUPT;
+ index->lock.x_unlock();
+ MONITOR_ATOMIC_INC(MONITOR_BACKGROUND_DROP_INDEX);
+ }
+ }
+
+ clust_index->lock.x_lock(SRW_LOCK_CALL);
+ clust_index->online_log= nullptr;
+ clust_index->lock.x_unlock();
+ table->drop_aborted= TRUE;
+}
+
+void UndorecApplier::log_insert(const dtuple_t &tuple,
+ dict_index_t *clust_index)
+{
+ DEBUG_SYNC_C("row_log_insert_handle");
+ ut_ad(clust_index->is_primary());
+ rec_offs offsets_[REC_OFFS_NORMAL_SIZE];
+ rec_offs *offsets= offsets_;
+
+ rec_offs_init(offsets_);
+ mtr.start();
+ const rec_t *rec;
+ const rec_t *match_rec= get_old_rec(tuple, clust_index, &rec, &offsets);
+ if (!match_rec)
+ {
+ mtr.commit();
+ return;
+ }
+ const rec_t *copy_rec= match_rec;
+ if (match_rec == rec)
+ {
+ copy_rec= rec_copy(mem_heap_alloc(
+ heap, rec_offs_size(offsets)), match_rec, offsets);
+ rec_offs_make_valid(copy_rec, clust_index, true, offsets);
+ }
+ mtr.commit();
+
+ dict_table_t *table= clust_index->table;
+ clust_index->lock.s_lock(SRW_LOCK_CALL);
+ if (clust_index->online_log &&
+ !clust_index->online_log_is_dummy() &&
+ clust_index->online_status <= ONLINE_INDEX_CREATION)
+ {
+ row_log_table_insert(copy_rec, clust_index, offsets);
+ clust_index->lock.s_unlock();
+ }
+ else
+ {
+ clust_index->lock.s_unlock();
+ row_ext_t *ext;
+ dtuple_t *row= row_build(ROW_COPY_POINTERS, clust_index,
+ copy_rec, offsets, table, nullptr, nullptr, &ext, heap);
+
+ if (table->n_v_cols)
+ {
+ /* Update the row with virtual column values present
+ in the undo log or update vector */
+ if (type == TRX_UNDO_UPD_DEL_REC)
+ row_upd_replace_vcol(row, table, update, false,
+ nullptr,
+ (cmpl_info & UPD_NODE_NO_ORD_CHANGE)
+ ? nullptr : undo_rec);
+ else
+ trx_undo_read_v_cols(table, undo_rec, row, false);
+ }
+
+ bool success= true;
+ dict_index_t *index= dict_table_get_next_index(clust_index);
+ while (index)
+ {
index->lock.s_lock(SRW_LOCK_CALL);
- if (dict_index_get_online_status(index) == ONLINE_INDEX_CREATION)
+ if (index->online_log &&
+ index->online_status <= ONLINE_INDEX_CREATION &&
+ !index->is_corrupted())
{
- if (index->is_clust())
- {
- row_log_table_empty(index);
- rebuild= true;
- }
- else if (!rebuild)
- row_log_online_op(index, nullptr, 0);
+ dtuple_t *entry= row_build_index_entry_low(row, ext, index,
+ heap, ROW_BUILD_NORMAL);
+ success= row_log_online_op(index, entry, trx_id);
}
index->lock.s_unlock();
+ if (!success)
+ {
+ row_log_mark_other_online_index_abort(index->table);
+ return;
+ }
+ index= dict_table_get_next_index(index);
+ }
+ }
+}
+
+void UndorecApplier::log_update(const dtuple_t &tuple,
+ dict_index_t *clust_index)
+{
+ rec_offs offsets_[REC_OFFS_NORMAL_SIZE];
+ rec_offs offsets2_[REC_OFFS_NORMAL_SIZE];
+ rec_offs *offsets= offsets_;
+ rec_offs *prev_offsets= offsets2_;
+
+ rec_offs_init(offsets_);
+ rec_offs_init(offsets2_);
+
+ dict_table_t *table= clust_index->table;
+
+ clust_index->lock.s_lock(SRW_LOCK_CALL);
+ bool table_rebuild=
+ (clust_index->online_log
+ && !clust_index->online_log_is_dummy()
+ && clust_index->online_status <= ONLINE_INDEX_CREATION);
+ clust_index->lock.s_unlock();
+
+ mtr.start();
+ const rec_t *rec;
+ rec_t *prev_version;
+ bool is_update= (type == TRX_UNDO_UPD_EXIST_REC);
+ const rec_t *match_rec= get_old_rec(tuple, clust_index, &rec, &offsets);
+ if (!match_rec)
+ {
+ mtr.commit();
+ return;
+ }
+
+ if (table_rebuild)
+ {
+ const rec_t *copy_rec= match_rec;
+ if (match_rec == rec)
+ copy_rec= rec_copy(mem_heap_alloc(
+ heap, rec_offs_size(offsets)), match_rec, offsets);
+ trx_undo_prev_version_build(rec, &mtr, match_rec, clust_index,
+ offsets, heap, &prev_version, nullptr,
+ nullptr, 0, block);
+
+ prev_offsets= rec_get_offsets(prev_version, clust_index, prev_offsets,
+ clust_index->n_core_fields,
+ ULINT_UNDEFINED, &heap);
+ rec_offs_make_valid(copy_rec, clust_index, true, offsets);
+ mtr.commit();
+
+ clust_index->lock.s_lock(SRW_LOCK_CALL);
+ /* Recheck whether clustered index online log has been cleared */
+ if (clust_index->online_log)
+ {
+ if (is_update)
+ {
+ const dtuple_t *rebuilt_old_pk= row_log_table_get_pk(
+ prev_version, clust_index, prev_offsets, nullptr, &heap);
+ row_log_table_update(copy_rec, clust_index, offsets, rebuilt_old_pk);
+ }
+ else
+ row_log_table_delete(prev_version, clust_index, prev_offsets, nullptr);
}
+ clust_index->lock.s_unlock();
+ return;
+ }
- index->clear(thr);
+ dtuple_t *row= nullptr;
+ row_ext_t *new_ext;
+ if (match_rec != rec)
+ row= row_build(ROW_COPY_POINTERS, clust_index, match_rec, offsets,
+ clust_index->table, NULL, NULL, &new_ext, heap);
+ else
+ row= row_build(ROW_COPY_DATA, clust_index, rec, offsets,
+ clust_index->table, NULL, NULL, &new_ext, heap);
+ mtr.commit();
+ row_ext_t *old_ext;
+ dtuple_t *old_row= nullptr;
+ if (!(this->cmpl_info & UPD_NODE_NO_ORD_CHANGE))
+ {
+ for (ulint i = 0; i < dict_table_get_n_v_cols(table); i++)
+ dfield_get_type(
+ dtuple_get_nth_v_field(row, i))->mtype = DATA_MISSING;
+ }
+
+ if (is_update)
+ {
+ old_row= dtuple_copy(row, heap);
+ row_upd_replace(old_row, &old_ext, clust_index, update, heap);
+ }
+
+ if (table->n_v_cols)
+ row_upd_replace_vcol(row, table, update, false, nullptr,
+ (cmpl_info & UPD_NODE_NO_ORD_CHANGE)
+ ? nullptr : this->undo_rec);
+
+ bool success= true;
+ dict_index_t *index= dict_table_get_next_index(clust_index);
+ while (index)
+ {
+ index->lock.s_lock(SRW_LOCK_CALL);
+ if (index->online_log &&
+ index->online_status <= ONLINE_INDEX_CREATION &&
+ !index->is_corrupted())
+ {
+ if (is_update)
+ {
+ dtuple_t *old_entry= row_build_index_entry_low(
+ old_row, old_ext, index, heap, ROW_BUILD_NORMAL);
+
+ success= row_log_online_op(index, old_entry, 0);
+
+ dtuple_t *new_entry= row_build_index_entry_low(
+ row, new_ext, index, heap, ROW_BUILD_NORMAL);
+
+ if (success)
+ success= row_log_online_op(index, new_entry, trx_id);
+ }
+ else
+ {
+ dtuple_t *old_entry= row_build_index_entry_low(
+ row, new_ext, index, heap, ROW_BUILD_NORMAL);
+
+ success= row_log_online_op(index, old_entry, 0);
+ }
+ }
+ index->lock.s_unlock();
+ if (!success)
+ {
+ row_log_mark_other_online_index_abort(index->table);
+ return;
+ }
+ index= dict_table_get_next_index(index);
}
}
+
diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc
index fedd7a7ebdc..8a36b03f4a5 100644
--- a/storage/innobase/row/row0merge.cc
+++ b/storage/innobase/row/row0merge.cc
@@ -909,11 +909,7 @@ row_merge_dup_report(
row_merge_dup_t* dup, /*!< in/out: for reporting duplicates */
const dfield_t* entry) /*!< in: duplicate index entry */
{
- if (!dup->n_dup++) {
- if (!dup->table) {
- /* bulk insert */
- return;
- }
+ if (!dup->n_dup++ && dup->table) {
/* Only report the first duplicate record,
but count all duplicate records. */
innobase_fields_to_mysql(dup->table, dup->index, entry);
@@ -3836,11 +3832,7 @@ row_merge_insert_index_tuples(
Any modifications after the
row_merge_read_clustered_index() scan
- will go through row_log_table_apply().
- Any modifications to off-page columns
- will be tracked by
- row_log_table_blob_alloc() and
- row_log_table_blob_free(). */
+ will go through row_log_table_apply(). */
row_merge_copy_blobs(
mrec, offsets,
old_table->space->zip_size(),
@@ -5022,6 +5014,13 @@ func_exit:
MONITOR_BACKGROUND_DROP_INDEX);
}
}
+
+ dict_index_t *clust_index= new_table->indexes.start;
+ clust_index->lock.x_lock(SRW_LOCK_CALL);
+ ut_ad(!clust_index->online_log ||
+ clust_index->online_log_is_dummy());
+ clust_index->online_log= nullptr;
+ clust_index->lock.x_unlock();
}
DBUG_RETURN(error);
diff --git a/storage/innobase/row/row0mysql.cc b/storage/innobase/row/row0mysql.cc
index db586e8f266..0c7a128245f 100644
--- a/storage/innobase/row/row0mysql.cc
+++ b/storage/innobase/row/row0mysql.cc
@@ -1124,7 +1124,7 @@ row_lock_table_autoinc_for_mysql(
trx_start_if_not_started_xa(trx, true);
- err = lock_table(prebuilt->table, LOCK_AUTO_INC, thr);
+ err = lock_table(prebuilt->table, NULL, LOCK_AUTO_INC, thr);
trx->error_state = err;
} while (err != DB_SUCCESS
@@ -1166,7 +1166,7 @@ row_lock_table(row_prebuilt_t* prebuilt)
trx_start_if_not_started_xa(trx, false);
- err = lock_table(prebuilt->table, static_cast<lock_mode>(
+ err = lock_table(prebuilt->table, NULL, static_cast<lock_mode>(
prebuilt->select_lock_type), thr);
trx->error_state = err;
} while (err != DB_SUCCESS
diff --git a/storage/innobase/row/row0purge.cc b/storage/innobase/row/row0purge.cc
index a68c8d64a78..f77856f8406 100644
--- a/storage/innobase/row/row0purge.cc
+++ b/storage/innobase/row/row0purge.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -41,7 +41,6 @@ Created 3/14/1997 Heikki Tuuri
#include "row0upd.h"
#include "row0vers.h"
#include "row0mysql.h"
-#include "row0log.h"
#include "log0log.h"
#include "srv0mon.h"
#include "srv0start.h"
@@ -359,27 +358,6 @@ row_purge_remove_sec_if_poss_tree(
mtr.start();
index->set_modified(mtr);
- if (!index->is_committed()) {
- /* The index->online_status may change if the index is
- or was being created online, but not committed yet. It
- is protected by index->lock. */
- mtr_sx_lock_index(index, &mtr);
-
- if (dict_index_is_online_ddl(index)) {
- /* Online secondary index creation will not
- copy any delete-marked records. Therefore
- there is nothing to be purged. We must also
- skip the purge when a completed index is
- dropped by rollback_inplace_alter_table(). */
- goto func_exit_no_pcur;
- }
- } else {
- /* For secondary indexes,
- index->online_status==ONLINE_INDEX_COMPLETE if
- index->is_committed(). */
- ut_ad(!dict_index_is_online_ddl(index));
- }
-
search_result = row_search_index_entry(
index, entry,
BTR_MODIFY_TREE | BTR_LATCH_FOR_DELETE,
@@ -452,7 +430,6 @@ row_purge_remove_sec_if_poss_tree(
func_exit:
btr_pcur_close(&pcur); // FIXME: need this?
-func_exit_no_pcur:
mtr.commit();
return(success);
@@ -483,40 +460,10 @@ row_purge_remove_sec_if_poss_leaf(
mtr.start();
index->set_modified(mtr);
- if (!index->is_committed()) {
- /* For uncommitted spatial index, we also skip the purge. */
- if (dict_index_is_spatial(index)) {
- goto func_exit_no_pcur;
- }
-
- /* The index->online_status may change if the the
- index is or was being created online, but not
- committed yet. It is protected by index->lock. */
- mtr_s_lock_index(index, &mtr);
-
- if (dict_index_is_online_ddl(index)) {
- /* Online secondary index creation will not
- copy any delete-marked records. Therefore
- there is nothing to be purged. We must also
- skip the purge when a completed index is
- dropped by rollback_inplace_alter_table(). */
- goto func_exit_no_pcur;
- }
-
- mode = BTR_PURGE_LEAF_ALREADY_S_LATCHED;
- } else {
- /* For secondary indexes,
- index->online_status==ONLINE_INDEX_COMPLETE if
- index->is_committed(). */
- ut_ad(!dict_index_is_online_ddl(index));
-
- /* Change buffering is disabled for spatial index and
- virtual index. */
- mode = (dict_index_is_spatial(index)
- || dict_index_has_virtual(index))
- ? BTR_MODIFY_LEAF
- : BTR_PURGE_LEAF;
- }
+ /* Change buffering is disabled for spatial index and
+ virtual index. */
+ mode = (index->type & (DICT_SPATIAL | DICT_VIRTUAL))
+ ? BTR_MODIFY_LEAF : BTR_PURGE_LEAF;
/* Set the purge node for the call to row_purge_poss_sec(). */
pcur.btr_cur.purge_node = node;
diff --git a/storage/innobase/row/row0sel.cc b/storage/innobase/row/row0sel.cc
index 52f9efa3957..5e6c4e17f3b 100644
--- a/storage/innobase/row/row0sel.cc
+++ b/storage/innobase/row/row0sel.cc
@@ -2,7 +2,7 @@
Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2008, Google Inc.
-Copyright (c) 2015, 2021, MariaDB Corporation.
+Copyright (c) 2015, 2022, MariaDB Corporation.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
@@ -2356,7 +2356,8 @@ row_sel_step(
que_node_get_next(table_node))) {
dberr_t err = lock_table(
- table_node->table, i_lock_mode, thr);
+ table_node->table, nullptr,
+ i_lock_mode, thr);
if (err != DB_SUCCESS) {
trx_t* trx;
@@ -4671,7 +4672,7 @@ aborted:
trx->read_view.open(trx);
} else {
wait_table_again:
- err = lock_table(prebuilt->table,
+ err = lock_table(prebuilt->table, nullptr,
prebuilt->select_lock_type == LOCK_S
? LOCK_IS : LOCK_IX, thr);
diff --git a/storage/innobase/row/row0uins.cc b/storage/innobase/row/row0uins.cc
index 173ae9a98f9..446d56f8daa 100644
--- a/storage/innobase/row/row0uins.cc
+++ b/storage/innobase/row/row0uins.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -35,7 +35,6 @@ Created 2/25/1997 Heikki Tuuri
#include "mach0data.h"
#include "row0undo.h"
#include "row0vers.h"
-#include "row0log.h"
#include "trx0trx.h"
#include "trx0rec.h"
#include "row0row.h"
@@ -70,7 +69,6 @@ row_undo_ins_remove_clust_rec(
ulint n_tries = 0;
mtr_t mtr;
dict_index_t* index = node->pcur.btr_cur.index;
- bool online;
table_id_t table_id = 0;
const bool dict_locked = node->trx->dict_operation_lock_mode;
restart:
@@ -90,20 +88,10 @@ restart:
if (index->table->is_temporary()) {
ut_ad(node->rec_type == TRX_UNDO_INSERT_REC);
mtr.set_log_mode(MTR_LOG_NO_REDO);
- ut_ad(!dict_index_is_online_ddl(index));
ut_ad(index->table->id >= DICT_HDR_FIRST_ID);
- online = false;
} else {
index->set_modified(mtr);
ut_ad(lock_table_has_locks(index->table));
- online = dict_index_is_online_ddl(index);
- if (online) {
- ut_ad(node->rec_type == TRX_UNDO_INSERT_REC);
- ut_ad(!node->trx->dict_operation_lock_mode);
- ut_ad(node->table->id != DICT_INDEXES_ID);
- ut_ad(node->table->id != DICT_COLUMNS_ID);
- mtr_s_lock_index(index, &mtr);
- }
}
/* This is similar to row_undo_mod_clust(). The DDL thread may
@@ -112,8 +100,7 @@ restart:
purged. However, we can log the removal out of sync with the
B-tree modification. */
ut_a(node->pcur.restore_position(
- online ? BTR_MODIFY_LEAF | BTR_ALREADY_S_LATCHED
- : (node->rec_type == TRX_UNDO_INSERT_METADATA)
+ (node->rec_type == TRX_UNDO_INSERT_METADATA)
? BTR_MODIFY_TREE
: BTR_MODIFY_LEAF,
&mtr) == btr_pcur_t::SAME_ALL);
@@ -126,94 +113,83 @@ restart:
ut_ad(rec_is_metadata(rec, index->table->not_redundant())
== (node->rec_type == TRX_UNDO_INSERT_METADATA));
- if (online && dict_index_is_online_ddl(index)) {
- mem_heap_t* heap = NULL;
- const rec_offs* offsets = rec_get_offsets(
- rec, index, NULL, index->n_core_fields,
- ULINT_UNDEFINED, &heap);
- row_log_table_delete(rec, index, offsets, NULL);
- mem_heap_free(heap);
- } else {
- switch (node->table->id) {
- case DICT_COLUMNS_ID:
- /* This is rolling back an INSERT into SYS_COLUMNS.
- If it was part of an instant ALTER TABLE operation, we
- must evict the table definition, so that it can be
- reloaded after the dictionary operation has been
- completed. At this point, any corresponding operation
- to the metadata record will have been rolled back. */
- ut_ad(!online);
- ut_ad(node->trx->dict_operation_lock_mode);
- ut_ad(node->rec_type == TRX_UNDO_INSERT_REC);
- if (rec_get_n_fields_old(rec)
- != DICT_NUM_FIELDS__SYS_COLUMNS
- || (rec_get_1byte_offs_flag(rec)
- ? rec_1_get_field_end_info(rec, 0) != 8
- : rec_2_get_field_end_info(rec, 0) != 8)) {
- break;
- }
- static_assert(!DICT_FLD__SYS_COLUMNS__TABLE_ID, "");
- node->trx->evict_table(mach_read_from_8(rec));
+ switch (node->table->id) {
+ case DICT_COLUMNS_ID:
+ /* This is rolling back an INSERT into SYS_COLUMNS.
+ If it was part of an instant ALTER TABLE operation, we
+ must evict the table definition, so that it can be
+ reloaded after the dictionary operation has been
+ completed. At this point, any corresponding operation
+ to the metadata record will have been rolled back. */
+ ut_ad(node->trx->dict_operation_lock_mode);
+ ut_ad(node->rec_type == TRX_UNDO_INSERT_REC);
+ if (rec_get_n_fields_old(rec)
+ != DICT_NUM_FIELDS__SYS_COLUMNS
+ || (rec_get_1byte_offs_flag(rec)
+ ? rec_1_get_field_end_info(rec, 0) != 8
+ : rec_2_get_field_end_info(rec, 0) != 8)) {
break;
- case DICT_INDEXES_ID:
- ut_ad(!online);
- ut_ad(node->trx->dict_operation_lock_mode);
- ut_ad(node->rec_type == TRX_UNDO_INSERT_REC);
- if (!table_id) {
- table_id = mach_read_from_8(rec);
- if (table_id) {
- mtr.commit();
- goto restart;
- }
- ut_ad("corrupted SYS_INDEXES record" == 0);
+ }
+ static_assert(!DICT_FLD__SYS_COLUMNS__TABLE_ID, "");
+ node->trx->evict_table(mach_read_from_8(rec));
+ break;
+ case DICT_INDEXES_ID:
+ ut_ad(node->trx->dict_operation_lock_mode);
+ ut_ad(node->rec_type == TRX_UNDO_INSERT_REC);
+ if (!table_id) {
+ table_id = mach_read_from_8(rec);
+ if (table_id) {
+ mtr.commit();
+ goto restart;
}
+ ut_ad("corrupted SYS_INDEXES record" == 0);
+ }
- pfs_os_file_t d = OS_FILE_CLOSED;
-
- if (const uint32_t space_id = dict_drop_index_tree(
- &node->pcur, node->trx, &mtr)) {
- if (table) {
- lock_release_on_rollback(node->trx,
- table);
- if (!dict_locked) {
- dict_sys.lock(SRW_LOCK_CALL);
- }
- if (table->release()) {
- dict_sys.remove(table);
- } else if (table->space_id
- == space_id) {
- table->space = nullptr;
- table->file_unreadable = true;
- }
- if (!dict_locked) {
- dict_sys.unlock();
- }
- table = nullptr;
- if (!mdl_ticket);
- else if (MDL_context* mdl_context =
- static_cast<MDL_context*>(
- thd_mdl_context(
- node->trx->
- mysql_thd))) {
- mdl_context->release_lock(
- mdl_ticket);
- mdl_ticket = nullptr;
- }
- }
+ pfs_os_file_t d = OS_FILE_CLOSED;
- d = fil_delete_tablespace(space_id);
+ if (const uint32_t space_id = dict_drop_index_tree(
+ &node->pcur, node->trx, &mtr)) {
+ if (table) {
+ lock_release_on_rollback(node->trx,
+ table);
+ if (!dict_locked) {
+ dict_sys.lock(SRW_LOCK_CALL);
+ }
+ if (table->release()) {
+ dict_sys.remove(table);
+ } else if (table->space_id
+ == space_id) {
+ table->space = nullptr;
+ table->file_unreadable = true;
+ }
+ if (!dict_locked) {
+ dict_sys.unlock();
+ }
+ table = nullptr;
+ if (!mdl_ticket);
+ else if (MDL_context* mdl_context =
+ static_cast<MDL_context*>(
+ thd_mdl_context(
+ node->trx->
+ mysql_thd))) {
+ mdl_context->release_lock(
+ mdl_ticket);
+ mdl_ticket = nullptr;
+ }
}
- mtr.commit();
+ d = fil_delete_tablespace(space_id);
+ }
- if (d != OS_FILE_CLOSED) {
- os_file_close(d);
- }
+ mtr.commit();
- mtr.start();
- ut_a(node->pcur.restore_position(
- BTR_MODIFY_LEAF, &mtr) == btr_pcur_t::SAME_ALL);
+ if (d != OS_FILE_CLOSED) {
+ os_file_close(d);
}
+
+ mtr.start();
+ ut_a(node->pcur.restore_position(
+ BTR_MODIFY_LEAF, &mtr) == btr_pcur_t::SAME_ALL);
}
if (btr_cur_optimistic_delete(&node->pcur.btr_cur, 0, &mtr)) {
@@ -299,10 +275,6 @@ row_undo_ins_remove_sec_low(
mtr_sx_lock_index(index, &mtr);
}
- if (row_log_online_op_try(index, entry, 0)) {
- goto func_exit_no_pcur;
- }
-
if (dict_index_is_spatial(index)) {
if (modify_leaf) {
mode |= BTR_RTREE_DELETE_MARK;
@@ -346,7 +318,6 @@ row_undo_ins_remove_sec_low(
}
btr_pcur_close(&pcur);
-func_exit_no_pcur:
mtr_commit(&mtr);
return(err);
@@ -546,7 +517,7 @@ row_undo_ins_remove_sec_rec(
while (index != NULL) {
dtuple_t* entry;
- if (index->type & DICT_FTS) {
+ if (index->type & DICT_FTS || !index->is_committed()) {
dict_table_next_uncorrupted_index(index);
continue;
}
diff --git a/storage/innobase/row/row0umod.cc b/storage/innobase/row/row0umod.cc
index 494a23eaf0a..f18d7ab1be1 100644
--- a/storage/innobase/row/row0umod.cc
+++ b/storage/innobase/row/row0umod.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -36,7 +36,6 @@ Created 2/27/1997 Heikki Tuuri
#include "ibuf0ibuf.h"
#include "row0undo.h"
#include "row0vers.h"
-#include "row0log.h"
#include "trx0trx.h"
#include "trx0rec.h"
#include "row0row.h"
@@ -80,11 +79,6 @@ row_undo_mod_clust_low(
mem_heap_t** offsets_heap,
/*!< in/out: memory heap that can be emptied */
mem_heap_t* heap, /*!< in/out: memory heap */
- const dtuple_t**rebuilt_old_pk,
- /*!< out: row_log_table_get_pk()
- before the update, or NULL if
- the table is not being rebuilt online or
- the PRIMARY KEY definition does not change */
byte* sys, /*!< out: DB_TRX_ID, DB_ROLL_PTR
for row_log_table_delete() */
que_thr_t* thr, /*!< in: query thread */
@@ -111,15 +105,6 @@ row_undo_mod_clust_low(
|| node->update->info_bits == REC_INFO_METADATA_ADD
|| node->update->info_bits == REC_INFO_METADATA_ALTER);
- if (mode != BTR_MODIFY_LEAF
- && dict_index_is_online_ddl(btr_cur_get_index(btr_cur))) {
- *rebuilt_old_pk = row_log_table_get_pk(
- btr_cur_get_rec(btr_cur),
- btr_cur_get_index(btr_cur), NULL, sys, &heap);
- } else {
- *rebuilt_old_pk = NULL;
- }
-
if (mode != BTR_MODIFY_TREE) {
ut_ad((mode & ulint(~BTR_ALREADY_S_LATCHED))
== BTR_MODIFY_LEAF);
@@ -269,7 +254,6 @@ row_undo_mod_clust(
bool have_latch = false;
dberr_t err;
dict_index_t* index;
- bool online;
ut_ad(thr_get_trx(thr) == node->trx);
ut_ad(node->trx->in_rollback);
@@ -287,26 +271,16 @@ row_undo_mod_clust(
ut_ad(lock_table_has_locks(index->table));
}
- online = dict_index_is_online_ddl(index);
- if (online) {
- ut_ad(!node->trx->dict_operation_lock_mode);
- mtr_s_lock_index(index, &mtr);
- }
-
mem_heap_t* heap = mem_heap_create(1024);
mem_heap_t* offsets_heap = NULL;
rec_offs* offsets = NULL;
- const dtuple_t* rebuilt_old_pk;
byte sys[DATA_TRX_ID_LEN + DATA_ROLL_PTR_LEN];
/* Try optimistic processing of the record, keeping changes within
the index page */
err = row_undo_mod_clust_low(node, &offsets, &offsets_heap,
- heap, &rebuilt_old_pk, sys,
- thr, &mtr, online
- ? BTR_MODIFY_LEAF | BTR_ALREADY_S_LATCHED
- : BTR_MODIFY_LEAF);
+ heap, sys, thr, &mtr, BTR_MODIFY_LEAF);
if (err != DB_SUCCESS) {
btr_pcur_commit_specify_mtr(pcur, &mtr);
@@ -321,34 +295,12 @@ row_undo_mod_clust(
index->set_modified(mtr);
}
- err = row_undo_mod_clust_low(
- node, &offsets, &offsets_heap,
- heap, &rebuilt_old_pk, sys,
- thr, &mtr, BTR_MODIFY_TREE);
+ err = row_undo_mod_clust_low(node, &offsets, &offsets_heap,
+ heap, sys, thr, &mtr,
+ BTR_MODIFY_TREE);
ut_ad(err == DB_SUCCESS || err == DB_OUT_OF_FILE_SPACE);
}
- if (err == DB_SUCCESS && online && dict_index_is_online_ddl(index)) {
- switch (node->rec_type) {
- case TRX_UNDO_DEL_MARK_REC:
- row_log_table_insert(
- btr_pcur_get_rec(pcur), index, offsets);
- break;
- case TRX_UNDO_UPD_EXIST_REC:
- row_log_table_update(
- btr_pcur_get_rec(pcur), index, offsets,
- rebuilt_old_pk);
- break;
- case TRX_UNDO_UPD_DEL_REC:
- row_log_table_delete(
- btr_pcur_get_rec(pcur), index, offsets, sys);
- break;
- default:
- ut_ad(0);
- break;
- }
- }
-
/**
* when scrubbing, and records gets cleared,
* the transaction id is not present afterwards.
@@ -570,10 +522,6 @@ row_undo_mod_del_mark_or_remove_sec_low(
ut_ad(mode == (BTR_MODIFY_TREE | BTR_LATCH_FOR_DELETE));
mtr_sx_lock_index(index, &mtr);
}
-
- if (row_log_online_op_try(index, entry, 0)) {
- goto func_exit_no_pcur;
- }
} else {
/* For secondary indexes,
index->online_status==ONLINE_INDEX_COMPLETE if
@@ -669,7 +617,6 @@ row_undo_mod_del_mark_or_remove_sec_low(
func_exit:
btr_pcur_close(&pcur);
-func_exit_no_pcur:
mtr_commit(&mtr);
return(err);
@@ -753,28 +700,6 @@ row_undo_mod_del_unmark_sec_and_undo_update(
try_again:
row_mtr_start(&mtr, index, !(mode & BTR_MODIFY_LEAF));
- if (!index->is_committed()) {
- /* The index->online_status may change if the index is
- or was being created online, but not committed yet. It
- is protected by index->lock. */
- if (mode == BTR_MODIFY_LEAF) {
- mode = BTR_MODIFY_LEAF | BTR_ALREADY_S_LATCHED;
- mtr_s_lock_index(index, &mtr);
- } else {
- ut_ad(mode == BTR_MODIFY_TREE);
- mtr_sx_lock_index(index, &mtr);
- }
-
- if (row_log_online_op_try(index, entry, trx->id)) {
- goto func_exit_no_pcur;
- }
- } else {
- /* For secondary indexes,
- index->online_status==ONLINE_INDEX_COMPLETE if
- index->is_committed(). */
- ut_ad(!dict_index_is_online_ddl(index));
- }
-
btr_cur->thr = thr;
search_result = row_search_index_entry(index, entry, mode,
@@ -802,34 +727,26 @@ try_again:
}
}
- if (index->is_committed()) {
- /* During online secondary index creation, it
- is possible that MySQL is waiting for a
- meta-data lock upgrade before invoking
- ha_innobase::commit_inplace_alter_table()
- while this ROLLBACK is executing. InnoDB has
- finished building the index, but it does not
- yet exist in MySQL. In this case, we suppress
- the printout to the error log. */
+ if (btr_cur->up_match >= dict_index_get_n_unique(index)
+ || btr_cur->low_match >= dict_index_get_n_unique(index)) {
ib::warn() << "Record in index " << index->name
<< " of table " << index->table->name
- << " was not found on rollback, trying to"
- " insert: " << *entry
+ << " was not found on rollback, and"
+ " a duplicate exists: "
+ << *entry
<< " at: " << rec_index_print(
btr_cur_get_rec(btr_cur), index);
- }
-
- if (btr_cur->up_match >= dict_index_get_n_unique(index)
- || btr_cur->low_match >= dict_index_get_n_unique(index)) {
- if (index->is_committed()) {
- ib::warn() << "Record in index " << index->name
- << " was not found on rollback, and"
- " a duplicate exists";
- }
err = DB_DUPLICATE_KEY;
break;
}
+ ib::warn() << "Record in index " << index->name
+ << " of table " << index->table->name
+ << " was not found on rollback, trying to insert: "
+ << *entry
+ << " at: " << rec_index_print(
+ btr_cur_get_rec(btr_cur), index);
+
/* Insert the missing record that we were trying to
delete-unmark. */
big_rec_t* big_rec;
@@ -912,7 +829,6 @@ try_again:
}
btr_pcur_close(&pcur);
-func_exit_no_pcur:
mtr_commit(&mtr);
return(err);
@@ -940,7 +856,7 @@ row_undo_mod_upd_del_sec(
dict_index_t* index = node->index;
dtuple_t* entry;
- if (index->type & DICT_FTS) {
+ if (index->type & DICT_FTS || !index->is_committed()) {
dict_table_next_uncorrupted_index(node->index);
continue;
}
@@ -1006,7 +922,7 @@ row_undo_mod_del_mark_sec(
dict_index_t* index = node->index;
dtuple_t* entry;
- if (index->type == DICT_FTS) {
+ if (index->type == DICT_FTS || !index->is_committed()) {
dict_table_next_uncorrupted_index(node->index);
continue;
}
@@ -1076,6 +992,12 @@ row_undo_mod_upd_exist_sec(
while (node->index != NULL) {
+
+ if (!node->index->is_committed()) {
+ dict_table_next_uncorrupted_index(node->index);
+ continue;
+ }
+
dict_index_t* index = node->index;
dtuple_t* entry;
diff --git a/storage/innobase/row/row0upd.cc b/storage/innobase/row/row0upd.cc
index 4d364c19540..b51133aaa0d 100644
--- a/storage/innobase/row/row0upd.cc
+++ b/storage/innobase/row/row0upd.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2017, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2015, 2021, MariaDB Corporation.
+Copyright (c) 2015, 2022, MariaDB Corporation.
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
@@ -241,12 +241,9 @@ row_upd_check_references_constraints(
|| row_upd_changes_first_fields_binary(
entry, index, node->update,
foreign->n_fields))) {
- dict_table_t* foreign_table = foreign->foreign_table;
-
- dict_table_t* ref_table = NULL;
-
- if (foreign_table == NULL) {
+ dict_table_t* ref_table = nullptr;
+ if (!foreign->foreign_table) {
ref_table = dict_table_open_on_name(
foreign->foreign_table_name_lookup,
false, DICT_ERR_IGNORE_NONE);
@@ -293,7 +290,6 @@ wsrep_row_upd_check_foreign_constraints(
dtuple_t* entry;
const rec_t* rec;
dberr_t err;
- ibool opened = FALSE;
if (table->foreign_set.empty()) {
return(DB_SUCCESS);
@@ -328,27 +324,21 @@ wsrep_row_upd_check_foreign_constraints(
entry, index, node->update,
foreign->n_fields))) {
- if (foreign->referenced_table == NULL) {
+ dict_table_t *opened = nullptr;
+
+ if (!foreign->referenced_table) {
foreign->referenced_table =
dict_table_open_on_name(
foreign->referenced_table_name_lookup,
false, DICT_ERR_IGNORE_NONE);
- opened = (foreign->referenced_table) ? TRUE : FALSE;
+ opened = foreign->referenced_table;
}
- /* NOTE that if the thread ends up waiting for a lock
- we will release dict_sys.latch temporarily!
- But the counter on the table protects 'foreign' from
- being dropped while the check is running. */
-
err = row_ins_check_foreign_constraint(
TRUE, foreign, table, entry, thr);
- if (foreign->referenced_table) {
- if (opened) {
- dict_table_close(foreign->referenced_table);
- opened = FALSE;
- }
+ if (opened) {
+ dict_table_close(opened);
}
if (err != DB_SUCCESS) {
@@ -1081,16 +1071,7 @@ row_upd_replace_vcol(
/* If there is no index on the column, do not bother for
value update */
if (!col->m_col.ord_part) {
- dict_index_t* clust_index
- = dict_table_get_first_index(table);
-
- /* Skip the column if there is no online alter
- table in progress or it is not being indexed
- in new table */
- if (!dict_index_is_online_ddl(clust_index)
- || !row_log_col_is_indexed(clust_index, col_no)) {
- continue;
- }
+ continue;
}
dfield = dtuple_get_nth_v_field(row, col_no);
@@ -1906,6 +1887,13 @@ row_upd_sec_index_entry(
ut_ad(trx->id != 0);
index = node->index;
+ if (!index->is_committed()) {
+ return DB_SUCCESS;
+ }
+
+ /* For secondary indexes, index->online_status==ONLINE_INDEX_COMPLETE
+ if index->is_committed(). */
+ ut_ad(!dict_index_is_online_ddl(index));
const bool referenced = row_upd_index_is_referenced(index, trx);
#ifdef WITH_WSREP
@@ -1929,75 +1917,22 @@ row_upd_sec_index_entry(
case SRV_TMP_SPACE_ID:
mtr.set_log_mode(MTR_LOG_NO_REDO);
flags = BTR_NO_LOCKING_FLAG;
+ mode = index->is_spatial()
+ ? ulint(BTR_MODIFY_LEAF | BTR_RTREE_DELETE_MARK)
+ : ulint(BTR_MODIFY_LEAF);
break;
default:
index->set_modified(mtr);
/* fall through */
case IBUF_SPACE_ID:
flags = index->table->no_rollback() ? BTR_NO_ROLLBACK : 0;
- break;
- }
-
- bool uncommitted = !index->is_committed();
-
- if (uncommitted) {
- /* The index->online_status may change if the index is
- or was being created online, but not committed yet. It
- is protected by index->lock. */
-
- mtr_s_lock_index(index, &mtr);
-
- switch (dict_index_get_online_status(index)) {
- case ONLINE_INDEX_COMPLETE:
- /* This is a normal index. Do not log anything.
- Perform the update on the index tree directly. */
- break;
- case ONLINE_INDEX_CREATION:
- /* Log a DELETE and optionally INSERT. */
- row_log_online_op(index, entry, 0);
-
- if (!node->is_delete) {
- mem_heap_empty(heap);
- entry = row_build_index_entry(
- node->upd_row, node->upd_ext,
- index, heap);
- ut_a(entry);
- row_log_online_op(index, entry, trx->id);
- }
- /* fall through */
- case ONLINE_INDEX_ABORTED:
- case ONLINE_INDEX_ABORTED_DROPPED:
- mtr_commit(&mtr);
- goto func_exit;
- }
-
- /* We can only buffer delete-mark operations if there
- are no foreign key constraints referring to the index.
- Change buffering is disabled for temporary tables and
- spatial index. */
- mode = (referenced || index->table->is_temporary()
- || dict_index_is_spatial(index))
- ? BTR_MODIFY_LEAF_ALREADY_S_LATCHED
- : BTR_DELETE_MARK_LEAF_ALREADY_S_LATCHED;
- } else {
- /* For secondary indexes,
- index->online_status==ONLINE_INDEX_COMPLETE if
- index->is_committed(). */
- ut_ad(!dict_index_is_online_ddl(index));
-
/* We can only buffer delete-mark operations if there
- are no foreign key constraints referring to the index.
- Change buffering is disabled for temporary tables and
- spatial index. */
- mode = (referenced || index->table->is_temporary()
- || dict_index_is_spatial(index))
- ? BTR_MODIFY_LEAF
- : BTR_DELETE_MARK_LEAF;
- }
-
- if (dict_index_is_spatial(index)) {
- ut_ad(mode & BTR_MODIFY_LEAF);
- mode |= BTR_RTREE_DELETE_MARK;
+ are no foreign key constraints referring to the index. */
+ mode = index->is_spatial()
+ ? ulint(BTR_MODIFY_LEAF | BTR_RTREE_DELETE_MARK)
+ : referenced
+ ? ulint(BTR_MODIFY_LEAF) : ulint(BTR_DELETE_MARK_LEAF);
+ break;
}
/* Set the query thread, so that ibuf_insert_low() will be
@@ -2020,19 +1955,6 @@ row_upd_sec_index_entry(
break;
case ROW_NOT_FOUND:
- if (!index->is_committed()) {
- /* When online CREATE INDEX copied the update
- that we already made to the clustered index,
- and completed the secondary index creation
- before we got here, the old secondary index
- record would not exist. The CREATE INDEX
- should be waiting for a MySQL meta-data lock
- upgrade at least until this UPDATE returns.
- After that point, set_committed(true) would be
- invoked by commit_inplace_alter_table(). */
- break;
- }
-
if (dict_index_is_spatial(index) && btr_cur->rtr_info->fd_del) {
/* We found the record, but a delete marked */
break;
@@ -2139,35 +2061,11 @@ row_upd_sec_index_entry(
DEBUG_SYNC_C_IF_THD(trx->mysql_thd,
"before_row_upd_sec_new_index_entry");
- uncommitted = !index->is_committed();
- if (uncommitted) {
- mtr.start();
- /* The index->online_status may change if the index is
- being rollbacked. It is protected by index->lock. */
-
- mtr_s_lock_index(index, &mtr);
-
- switch (dict_index_get_online_status(index)) {
- case ONLINE_INDEX_COMPLETE:
- case ONLINE_INDEX_CREATION:
- break;
- case ONLINE_INDEX_ABORTED:
- case ONLINE_INDEX_ABORTED_DROPPED:
- mtr_commit(&mtr);
- goto func_exit;
- }
-
- }
-
/* Build a new index entry */
entry = row_build_index_entry(node->upd_row, node->upd_ext,
index, heap);
ut_a(entry);
- if (uncommitted) {
- mtr_commit(&mtr);
- }
-
/* Insert new index entry */
err = row_ins_sec_index_entry(index, entry, thr, !node->is_delete);
@@ -2488,7 +2386,6 @@ row_upd_clust_rec(
btr_pcur_t* pcur;
btr_cur_t* btr_cur;
dberr_t err;
- const dtuple_t* rebuilt_old_pk = NULL;
ut_ad(dict_index_is_clust(index));
ut_ad(!thr_get_trx(thr)->in_rollback);
@@ -2502,11 +2399,6 @@ row_upd_clust_rec(
dict_table_is_comp(index->table)));
ut_ad(rec_offs_validate(btr_cur_get_rec(btr_cur), index, offsets));
- if (dict_index_is_online_ddl(index)) {
- rebuilt_old_pk = row_log_table_get_pk(
- btr_cur_get_rec(btr_cur), index, offsets, NULL, &heap);
- }
-
/* Try optimistic updating of the record, keeping changes within
the page; we do not check locks because we assume the x-lock on the
record to update */
@@ -2524,7 +2416,7 @@ row_upd_clust_rec(
}
if (err == DB_SUCCESS) {
- goto success;
+ goto func_exit;
}
if (buf_pool.running_out()) {
@@ -2577,15 +2469,6 @@ row_upd_clust_rec(
DEBUG_SYNC_C("after_row_upd_extern");
}
- if (err == DB_SUCCESS) {
-success:
- if (dict_index_is_online_ddl(index)) {
- row_log_table_update(
- btr_cur_get_rec(btr_cur),
- index, offsets, rebuilt_old_pk);
- }
- }
-
func_exit:
if (heap) {
mem_heap_free(heap);
@@ -2932,7 +2815,8 @@ row_upd(
break;
}
- if (node->index->type != DICT_FTS) {
+ if (!(node->index->type & DICT_FTS)
+ && node->index->is_committed()) {
err = row_upd_sec_step(node, thr);
if (err != DB_SUCCESS) {
@@ -2999,7 +2883,7 @@ row_upd_step(
/* It may be that the current session has not yet
started its transaction, or it has been committed: */
- err = lock_table(node->table, LOCK_IX, thr);
+ err = lock_table(node->table, nullptr, LOCK_IX, thr);
if (err != DB_SUCCESS) {
diff --git a/storage/innobase/row/row0vers.cc b/storage/innobase/row/row0vers.cc
index 4a07072fdd6..acba98ceb05 100644
--- a/storage/innobase/row/row0vers.cc
+++ b/storage/innobase/row/row0vers.cc
@@ -1226,6 +1226,10 @@ row_vers_build_for_consistent_read(
return(err);
}
+#if defined __aarch64__&&defined __GNUC__&&__GNUC__==4&&!defined __clang__
+/* Avoid GCC 4.8.5 internal compiler error "could not split insn". */
+# pragma GCC optimize ("O0")
+#endif
/*****************************************************************//**
Constructs the last committed version of a clustered index record,
which should be seen by a semi-consistent read. */
diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc
index 7e1cd5145c2..ac3e101b515 100644
--- a/storage/innobase/srv/srv0srv.cc
+++ b/storage/innobase/srv/srv0srv.cc
@@ -472,7 +472,7 @@ priority of the background thread so that it will be scheduled and it
can release the resource. This solution is called priority inheritance
in real-time programming. A drawback of this solution is that the overhead
of acquiring a mutex increases slightly, maybe 0.2 microseconds on a 100
-MHz Pentium, because the thread has to call os_thread_get_curr_id. This may
+MHz Pentium, because the thread has to call pthread_self. This may
be compared to 0.5 microsecond overhead for a mutex lock-unlock pair. Note
that the thread cannot store the information in the resource , say mutex,
itself, because competing threads could wipe out the information if it is
diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc
index bebded53a80..107a654a134 100644
--- a/storage/innobase/srv/srv0start.cc
+++ b/storage/innobase/srv/srv0start.cc
@@ -55,7 +55,6 @@ Created 2/16/1996 Heikki Tuuri
#include "buf0dblwr.h"
#include "buf0dump.h"
#include "os0file.h"
-#include "os0thread.h"
#include "fil0fil.h"
#include "fil0crypt.h"
#include "fsp0fsp.h"
diff --git a/storage/innobase/trx/trx0purge.cc b/storage/innobase/trx/trx0purge.cc
index cc1ba3382af..f3583580f7e 100644
--- a/storage/innobase/trx/trx0purge.cc
+++ b/storage/innobase/trx/trx0purge.cc
@@ -29,7 +29,6 @@ Created 3/26/1996 Heikki Tuuri
#include "fut0fut.h"
#include "mach0data.h"
#include "mtr0log.h"
-#include "os0thread.h"
#include "que0que.h"
#include "row0purge.h"
#include "row0upd.h"
@@ -1090,7 +1089,7 @@ trx_purge_fetch_next_rec(
}
/* fprintf(stderr, "Thread %lu purging trx %llu undo record %llu\n",
- os_thread_get_curr_id(), iter->trx_no, iter->undo_no); */
+ pthread_self(), iter->trx_no, iter->undo_no); */
*roll_ptr = trx_undo_build_roll_ptr(
/* row_purge_record_func() will later set
diff --git a/storage/innobase/trx/trx0rec.cc b/storage/innobase/trx/trx0rec.cc
index 05333652a25..2d289245ca3 100644
--- a/storage/innobase/trx/trx0rec.cc
+++ b/storage/innobase/trx/trx0rec.cc
@@ -2036,6 +2036,10 @@ trx_undo_report_row_operation(
auto m = trx->mod_tables.emplace(index->table, trx->undo_no);
ut_ad(m.first->second.valid(trx->undo_no));
+ if (m.second && index->table->is_active_ddl()) {
+ trx->apply_online_log= true;
+ }
+
bool bulk = !rec;
if (!bulk) {
@@ -2233,12 +2237,15 @@ err_exit:
/** Copy an undo record to heap.
@param[in] roll_ptr roll pointer to a record that exists
-@param[in,out] heap memory heap where copied */
+@param[in,out] heap memory heap where copied
+@param[in] undo_block undo log block which was cached during
+ DML online log apply */
static
trx_undo_rec_t*
trx_undo_get_undo_rec_low(
- roll_ptr_t roll_ptr,
- mem_heap_t* heap)
+ roll_ptr_t roll_ptr,
+ mem_heap_t* heap,
+ const buf_block_t* undo_block= nullptr)
{
trx_undo_rec_t* undo_rec;
ulint rseg_id;
@@ -2254,14 +2261,21 @@ trx_undo_get_undo_rec_low(
trx_rseg_t* rseg = &trx_sys.rseg_array[rseg_id];
ut_ad(rseg->is_persistent());
- mtr.start();
+ if (undo_block
+ && undo_block->page.id().page_no() == page_no) {
+ undo_rec = trx_undo_rec_copy(
+ undo_block->page.frame + offset, heap);
+ } else {
+ mtr.start();
- buf_block_t* undo_page = trx_undo_page_get_s_latched(
- page_id_t(rseg->space->id, page_no), &mtr);
+ buf_block_t *undo_page = trx_undo_page_get_s_latched(
+ page_id_t(rseg->space->id, page_no), &mtr);
- undo_rec = trx_undo_rec_copy(undo_page->page.frame + offset, heap);
+ undo_rec = trx_undo_rec_copy(
+ undo_page->page.frame + offset, heap);
- mtr.commit();
+ mtr.commit();
+ }
return(undo_rec);
}
@@ -2274,6 +2288,8 @@ trx_undo_get_undo_rec_low(
undo log of this transaction
@param[in] name table name
@param[out] undo_rec own: copy of the record
+@param[in] undo_block undo log block which was cached during
+ DML online log apply
@retval true if the undo log has been
truncated and we cannot fetch the old version
@retval false if the undo log record is available
@@ -2285,13 +2301,15 @@ trx_undo_get_undo_rec(
mem_heap_t* heap,
trx_id_t trx_id,
const table_name_t& name,
- trx_undo_rec_t** undo_rec)
+ trx_undo_rec_t** undo_rec,
+ const buf_block_t* undo_block)
{
purge_sys.latch.rd_lock(SRW_LOCK_CALL);
bool missing_history = purge_sys.changes_visible(trx_id, name);
if (!missing_history) {
- *undo_rec = trx_undo_get_undo_rec_low(roll_ptr, heap);
+ *undo_rec = trx_undo_get_undo_rec_low(
+ roll_ptr, heap, undo_block);
}
purge_sys.latch.rd_unlock();
@@ -2305,41 +2323,48 @@ trx_undo_get_undo_rec(
#define ATTRIB_USED_ONLY_IN_DEBUG MY_ATTRIBUTE((unused))
#endif /* UNIV_DEBUG */
-/*******************************************************************//**
-Build a previous version of a clustered index record. The caller must
-hold a latch on the index page of the clustered index record.
+/** Build a previous version of a clustered index record. The caller
+must hold a latch on the index page of the clustered index record.
+@param index_rec clustered index record in the index tree
+@param index_mtr mtr which contains the latch to index_rec page
+ and purge_view
+@param rec version of a clustered index record
+@param index clustered index
+@param offsets rec_get_offsets(rec, index)
+@param heap memory heap from which the memory needed is
+ allocated
+@param old_vers previous version or NULL if rec is the
+ first inserted version, or if history data
+ has been deleted (an error), or if the purge
+ could have removed the version
+ though it has not yet done so
+@param v_heap memory heap used to create vrow
+ dtuple if it is not yet created. This heap
+ diffs from "heap" above in that it could be
+ prebuilt->old_vers_heap for selection
+@param v_row virtual column info, if any
+@param v_status status determine if it is going into this
+ function by purge thread or not.
+ And if we read "after image" of undo log
+@param undo_block undo log block which was cached during
+ online dml apply or nullptr
@retval true if previous version was built, or if it was an insert
or the table has been rebuilt
@retval false if the previous version is earlier than purge_view,
or being purged, which means that it may have been removed */
bool
trx_undo_prev_version_build(
-/*========================*/
- const rec_t* index_rec ATTRIB_USED_ONLY_IN_DEBUG,
- /*!< in: clustered index record in the
- index tree */
- mtr_t* index_mtr ATTRIB_USED_ONLY_IN_DEBUG,
- /*!< in: mtr which contains the latch to
- index_rec page and purge_view */
- const rec_t* rec, /*!< in: version of a clustered index record */
- dict_index_t* index, /*!< in: clustered index */
- rec_offs* offsets,/*!< in/out: rec_get_offsets(rec, index) */
- mem_heap_t* heap, /*!< in: memory heap from which the memory
- needed is allocated */
- rec_t** old_vers,/*!< out, own: previous version, or NULL if
- rec is the first inserted version, or if
- history data has been deleted (an error),
- or if the purge COULD have removed the version
- though it has not yet done so */
- mem_heap_t* v_heap, /* !< in: memory heap used to create vrow
- dtuple if it is not yet created. This heap
- diffs from "heap" above in that it could be
- prebuilt->old_vers_heap for selection */
- dtuple_t** vrow, /*!< out: virtual column info, if any */
- ulint v_status)
- /*!< in: status determine if it is going
- into this function by purge thread or not.
- And if we read "after image" of undo log */
+ const rec_t *index_rec ATTRIB_USED_ONLY_IN_DEBUG,
+ mtr_t *index_mtr ATTRIB_USED_ONLY_IN_DEBUG,
+ const rec_t *rec,
+ dict_index_t *index,
+ rec_offs *offsets,
+ mem_heap_t *heap,
+ rec_t **old_vers,
+ mem_heap_t *v_heap,
+ dtuple_t **vrow,
+ ulint v_status,
+ const buf_block_t*undo_block)
{
trx_undo_rec_t* undo_rec = NULL;
dtuple_t* entry;
@@ -2378,7 +2403,7 @@ trx_undo_prev_version_build(
if (trx_undo_get_undo_rec(
roll_ptr, heap, rec_trx_id, index->table->name,
- &undo_rec)) {
+ &undo_rec, undo_block)) {
if (v_status & TRX_UNDO_PREV_IN_PURGE) {
/* We are fetching the record being purged */
undo_rec = trx_undo_get_undo_rec_low(roll_ptr, heap);
diff --git a/storage/innobase/trx/trx0roll.cc b/storage/innobase/trx/trx0roll.cc
index 8fd9f93909c..59ea0bdcd8f 100644
--- a/storage/innobase/trx/trx0roll.cc
+++ b/storage/innobase/trx/trx0roll.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2017, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2016, 2021, MariaDB Corporation.
+Copyright (c) 2016, 2022, MariaDB Corporation.
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
@@ -60,7 +60,7 @@ const trx_t* trx_roll_crash_recv_trx;
inline bool trx_t::rollback_finish()
{
mod_tables.clear();
-
+ apply_online_log= false;
if (UNIV_LIKELY(error_state == DB_SUCCESS))
{
commit();
@@ -137,13 +137,16 @@ inline void trx_t::rollback_low(trx_savept_t *savept)
{
ut_a(error_state == DB_SUCCESS);
const undo_no_t limit= savept->least_undo_no;
+ apply_online_log= false;
for (trx_mod_tables_t::iterator i= mod_tables.begin();
- i != mod_tables.end(); )
+ i != mod_tables.end(); )
{
trx_mod_tables_t::iterator j= i++;
ut_ad(j->second.valid());
if (j->second.rollback(limit))
mod_tables.erase(j);
+ else if (!apply_online_log)
+ apply_online_log= j->first->is_active_ddl();
}
MONITOR_INC(MONITOR_TRX_ROLLBACK_SAVEPOINT);
}
@@ -631,7 +634,7 @@ struct trx_roll_count_callback_arg
static my_bool trx_roll_count_callback(rw_trx_hash_element_t *element,
trx_roll_count_callback_arg *arg)
{
- mysql_mutex_lock(&element->mutex);
+ element->mutex.wr_lock();
if (trx_t *trx= element->trx)
{
if (trx->is_recovered && trx_state_eq(trx, TRX_STATE_ACTIVE))
@@ -640,7 +643,7 @@ static my_bool trx_roll_count_callback(rw_trx_hash_element_t *element,
arg->n_rows+= trx->undo_no;
}
}
- mysql_mutex_unlock(&element->mutex);
+ element->mutex.wr_unlock();
return 0;
}
@@ -678,7 +681,7 @@ void trx_roll_report_progress()
static my_bool trx_rollback_recovered_callback(rw_trx_hash_element_t *element,
std::vector<trx_t*> *trx_list)
{
- mysql_mutex_lock(&element->mutex);
+ element->mutex.wr_lock();
if (trx_t *trx= element->trx)
{
trx->mutex_lock();
@@ -686,7 +689,7 @@ static my_bool trx_rollback_recovered_callback(rw_trx_hash_element_t *element,
trx_list->push_back(trx);
trx->mutex_unlock();
}
- mysql_mutex_unlock(&element->mutex);
+ element->mutex.wr_unlock();
return 0;
}
diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc
index 7a4a51e4685..e16ffcc5abf 100644
--- a/storage/innobase/trx/trx0trx.cc
+++ b/storage/innobase/trx/trx0trx.cc
@@ -133,6 +133,8 @@ trx_init(
trx->bulk_insert = false;
+ trx->apply_online_log = false;
+
ut_d(trx->start_file = 0);
ut_d(trx->start_line = 0);
@@ -452,6 +454,7 @@ void trx_t::free()
MEM_NOACCESS(&mod_tables, sizeof mod_tables);
MEM_NOACCESS(&detailed_error, sizeof detailed_error);
MEM_NOACCESS(&magic_n, sizeof magic_n);
+ MEM_NOACCESS(&apply_online_log, sizeof apply_online_log);
trx_pools->mem_free(this);
}
@@ -494,6 +497,13 @@ inline void trx_t::release_locks()
}
lock.table_locks.clear();
+ id= 0;
+ while (dict_table_t *table= UT_LIST_GET_FIRST(lock.evicted_tables))
+ {
+ UT_LIST_REMOVE(lock.evicted_tables, table);
+ dict_mem_table_free(table);
+ }
+ DEBUG_SYNC_C("after_trx_committed_in_memory");
}
/** At shutdown, frees a transaction object. */
@@ -512,6 +522,7 @@ TRANSACTIONAL_TARGET void trx_free_at_shutdown(trx_t *trx)
&& !srv_undo_sources && srv_fast_shutdown))));
ut_a(trx->magic_n == TRX_MAGIC_N);
+ ut_d(trx->apply_online_log = false);
trx->commit_state();
trx->release_locks();
trx->mod_tables.clear();
@@ -522,7 +533,6 @@ TRANSACTIONAL_TARGET void trx_free_at_shutdown(trx_t *trx)
DBUG_LOG("trx", "Free prepared: " << trx);
trx->state = TRX_STATE_NOT_STARTED;
ut_ad(!UT_LIST_GET_LEN(trx->lock.trx_locks));
- trx->id = 0;
trx->free();
}
@@ -1216,9 +1226,10 @@ void trx_t::evict_table(table_id_t table_id, bool reset_only)
}
}
-/** Mark a transaction committed in the main memory data structures. */
TRANSACTIONAL_INLINE inline void trx_t::commit_in_memory(const mtr_t *mtr)
{
+ /* We already detached from rseg in trx_write_serialisation_history() */
+ ut_ad(!rsegs.m_redo.undo);
must_flush_log_later= false;
read_view.close();
@@ -1229,12 +1240,14 @@ TRANSACTIONAL_INLINE inline void trx_t::commit_in_memory(const mtr_t *mtr)
ut_ad(!will_lock);
ut_a(!is_recovered);
ut_ad(!rsegs.m_redo.rseg);
+ ut_ad(!rsegs.m_redo.undo);
ut_ad(mysql_thd);
ut_ad(state == TRX_STATE_ACTIVE);
/* Note: We do not have to hold any lock_sys latch here, because
this is a non-locking transaction. */
ut_a(UT_LIST_GET_LEN(lock.trx_locks) == 0);
+ ut_ad(UT_LIST_GET_LEN(lock.evicted_tables) == 0);
/* This state change is not protected by any mutex, therefore
there is an inherent race here around state transition during
@@ -1280,21 +1293,10 @@ TRANSACTIONAL_INLINE inline void trx_t::commit_in_memory(const mtr_t *mtr)
is_recovered= false;
}
- release_locks();
- id= 0;
- DEBUG_SYNC_C("after_trx_committed_in_memory");
-
- while (dict_table_t *table= UT_LIST_GET_FIRST(lock.evicted_tables))
- {
- UT_LIST_REMOVE(lock.evicted_tables, table);
- dict_mem_table_free(table);
- }
+ if (UNIV_LIKELY(!dict_operation))
+ release_locks();
}
- /* We already detached from rseg in trx_write_serialisation_history() */
- ut_ad(!rsegs.m_redo.undo);
- ut_ad(UT_LIST_GET_LEN(lock.evicted_tables) == 0);
-
if (trx_rseg_t *rseg= rsegs.m_redo.rseg)
/* This is safe due to us having detached the persistent undo log. */
rseg->release();
@@ -1368,10 +1370,10 @@ TRANSACTIONAL_INLINE inline void trx_t::commit_in_memory(const mtr_t *mtr)
void trx_t::commit_cleanup()
{
- mutex.wr_lock();
- dict_operation= false;
+ ut_ad(!dict_operation);
+ ut_ad(!was_dict_operation);
- DBUG_LOG("trx", "Commit in memory: " << this);
+ mutex.wr_lock();
state= TRX_STATE_NOT_STARTED;
mod_tables.clear();
@@ -1387,7 +1389,7 @@ void trx_t::commit_cleanup()
TRANSACTIONAL_TARGET void trx_t::commit_low(mtr_t *mtr)
{
ut_ad(!mtr || mtr->is_active());
- ut_d(bool aborted = in_rollback && error_state == DB_DEADLOCK);
+ ut_d(bool aborted= in_rollback && error_state == DB_DEADLOCK);
ut_ad(!mtr == (aborted || !has_logged()));
ut_ad(!mtr || !aborted);
@@ -1406,12 +1408,13 @@ TRANSACTIONAL_TARGET void trx_t::commit_low(mtr_t *mtr)
ut_ad(error == DB_DUPLICATE_KEY || error == DB_LOCK_WAIT_TIMEOUT);
}
-#ifndef DBUG_OFF
+#ifdef ENABLED_DEBUG_SYNC
const bool debug_sync= mysql_thd && has_logged_persistent();
#endif
if (mtr)
{
+ apply_log();
trx_write_serialisation_history(this, mtr);
/* The following call commits the mini-transaction, making the
@@ -1431,7 +1434,7 @@ TRANSACTIONAL_TARGET void trx_t::commit_low(mtr_t *mtr)
mtr->commit();
}
-#ifndef DBUG_OFF
+#ifdef ENABLED_DEBUG_SYNC
if (debug_sync)
DEBUG_SYNC_C("before_trx_state_committed_in_memory");
#endif
@@ -1456,7 +1459,11 @@ void trx_t::commit_persist()
void trx_t::commit()
{
+ ut_ad(!was_dict_operation);
+ ut_d(was_dict_operation= dict_operation);
+ dict_operation= false;
commit_persist();
+ ut_d(was_dict_operation= false);
ut_d(for (const auto &p : mod_tables) ut_ad(!p.second.is_dropped()));
commit_cleanup();
}
@@ -1906,7 +1913,7 @@ static my_bool trx_recover_for_mysql_callback(rw_trx_hash_element_t *element,
trx_recover_for_mysql_callback_arg *arg)
{
DBUG_ASSERT(arg->len > 0);
- mysql_mutex_lock(&element->mutex);
+ element->mutex.wr_lock();
if (trx_t *trx= element->trx)
{
/*
@@ -1932,7 +1939,7 @@ static my_bool trx_recover_for_mysql_callback(rw_trx_hash_element_t *element,
}
}
}
- mysql_mutex_unlock(&element->mutex);
+ element->mutex.wr_unlock();
/* Do not terminate upon reaching arg->len; count all transactions */
return false;
}
@@ -1941,13 +1948,13 @@ static my_bool trx_recover_for_mysql_callback(rw_trx_hash_element_t *element,
static my_bool trx_recover_reset_callback(rw_trx_hash_element_t *element,
void*)
{
- mysql_mutex_lock(&element->mutex);
+ element->mutex.wr_lock();
if (trx_t *trx= element->trx)
{
if (trx_state_eq(trx, TRX_STATE_PREPARED_RECOVERED))
trx->state= TRX_STATE_PREPARED;
}
- mysql_mutex_unlock(&element->mutex);
+ element->mutex.wr_unlock();
return false;
}
@@ -1996,7 +2003,7 @@ static my_bool trx_get_trx_by_xid_callback(rw_trx_hash_element_t *element,
trx_get_trx_by_xid_callback_arg *arg)
{
my_bool found= 0;
- mysql_mutex_lock(&element->mutex);
+ element->mutex.wr_lock();
if (trx_t *trx= element->trx)
{
trx->mutex_lock();
@@ -2018,7 +2025,7 @@ static my_bool trx_get_trx_by_xid_callback(rw_trx_hash_element_t *element,
}
trx->mutex_unlock();
}
- mysql_mutex_unlock(&element->mutex);
+ element->mutex.wr_unlock();
return found;
}
diff --git a/storage/innobase/trx/trx0undo.cc b/storage/innobase/trx/trx0undo.cc
index 96dc82049d8..13f5f3b09a2 100644
--- a/storage/innobase/trx/trx0undo.cc
+++ b/storage/innobase/trx/trx0undo.cc
@@ -290,6 +290,107 @@ trx_undo_get_first_rec(const fil_space_t &space, uint32_t page_no,
mtr);
}
+void UndorecApplier::assign_rec(trx_undo_rec_t *rec)
+{
+ this->undo_rec= rec;
+ this->offset= page_offset(rec);
+}
+
+void UndorecApplier::apply_undo_rec()
+{
+ bool updated_extern= false;
+ undo_no_t undo_no= 0;
+ table_id_t table_id= 0;
+ undo_rec= trx_undo_rec_get_pars(undo_rec, &type,
+ &cmpl_info,
+ &updated_extern, &undo_no, &table_id);
+ dict_sys.freeze(SRW_LOCK_CALL);
+ dict_table_t *table= dict_sys.find_table(table_id);
+ dict_sys.unfreeze();
+
+ ut_ad(table);
+ if (!table->is_active_ddl())
+ return;
+
+ dict_index_t *index= dict_table_get_first_index(table);
+ const dtuple_t *undo_tuple;
+ switch (type) {
+ default:
+ ut_ad("invalid type" == 0);
+ MY_ASSERT_UNREACHABLE();
+ case TRX_UNDO_INSERT_REC:
+ undo_rec= trx_undo_rec_get_row_ref(undo_rec, index, &undo_tuple, heap);
+ insert:
+ log_insert(*undo_tuple, index);
+ break;
+ case TRX_UNDO_UPD_EXIST_REC:
+ case TRX_UNDO_UPD_DEL_REC:
+ case TRX_UNDO_DEL_MARK_REC:
+ trx_id_t trx_id;
+ roll_ptr_t roll_ptr;
+ byte info_bits;
+ undo_rec= trx_undo_update_rec_get_sys_cols(
+ undo_rec, &trx_id, &roll_ptr, &info_bits);
+
+ undo_rec= trx_undo_rec_get_row_ref(undo_rec, index, &undo_tuple, heap);
+ undo_rec= trx_undo_update_rec_get_update(undo_rec, index, type, trx_id,
+ roll_ptr, info_bits,
+ heap, &update);
+ if (type == TRX_UNDO_UPD_DEL_REC)
+ goto insert;
+ log_update(*undo_tuple, index);
+ }
+
+ clear_undo_rec();
+}
+
+/** Apply any changes to tables for which online DDL is in progress. */
+ATTRIBUTE_COLD void trx_t::apply_log()
+{
+ if (undo_no == 0 || apply_online_log == false)
+ return;
+ const trx_undo_t *undo= rsegs.m_redo.undo;
+ if (!undo)
+ return;
+ page_id_t page_id{rsegs.m_redo.rseg->space->id, undo->hdr_page_no};
+ page_id_t next_page_id(page_id);
+ mtr_t mtr;
+ mem_heap_t *heap= mem_heap_create(100);
+ mtr.start();
+ buf_block_t *block= buf_page_get(page_id, 0, RW_S_LATCH, &mtr);
+ ut_ad(block);
+
+ UndorecApplier log_applier(block, id);
+
+ for (;;)
+ {
+ trx_undo_rec_t *rec= trx_undo_page_get_first_rec(block, page_id.page_no(),
+ undo->hdr_offset);
+ while (rec)
+ {
+ log_applier.assign_rec(rec);
+ log_applier.apply_undo_rec();
+ rec= trx_undo_page_get_next_rec(block, page_offset(rec),
+ page_id.page_no(), undo->hdr_offset);
+ }
+
+ uint32_t next= mach_read_from_4(TRX_UNDO_PAGE_HDR + TRX_UNDO_PAGE_NODE +
+ FLST_NEXT + FIL_ADDR_PAGE +
+ block->page.frame);
+ if (next == FIL_NULL)
+ break;
+ next_page_id.set_page_no(next);
+ mtr.commit();
+ mtr.start();
+ block= buf_page_get(next_page_id, 0, RW_S_LATCH, &mtr);
+ log_applier.assign_block(block);
+ ut_ad(block);
+ }
+ mtr.commit();
+ mem_heap_free(heap);
+ apply_online_log= false;
+}
+
/*============== UNDO LOG FILE COPY CREATION AND FREEING ==================*/
/** Initialize an undo log page.
diff --git a/storage/innobase/ut/ut0ut.cc b/storage/innobase/ut/ut0ut.cc
index cc128a494ea..3d58f37b658 100644
--- a/storage/innobase/ut/ut0ut.cc
+++ b/storage/innobase/ut/ut0ut.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1994, 2017, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
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
@@ -32,7 +32,6 @@ Created 5/11/1994 Heikki Tuuri
#ifndef UNIV_INNOCHECKSUM
#include <mysql_com.h>
-#include "os0thread.h"
#include "ut0ut.h"
#include "trx0trx.h"
#include <string>
@@ -92,7 +91,7 @@ ut_print_timestamp(
#ifdef UNIV_INNOCHECKSUM
ulint{0}
#else
- ulint(os_thread_get_curr_id())
+ ulint(pthread_self())
#endif
);
}
diff --git a/storage/maria/ma_write.c b/storage/maria/ma_write.c
index 58e6d5e083b..392f0bf6d0e 100644
--- a/storage/maria/ma_write.c
+++ b/storage/maria/ma_write.c
@@ -731,7 +731,10 @@ static int w_search(register MARIA_HA *info, uint32 comp_flag, MARIA_KEY *key,
}
}
if (flag == MARIA_FOUND_WRONG_KEY)
+ {
+ my_errno= HA_ERR_CRASHED;
goto err;
+ }
if (!was_last_key)
insert_last=0;
next_page= _ma_kpos(page.node, keypos);
diff --git a/storage/maria/maria_def.h b/storage/maria/maria_def.h
index 4479b244ddf..1ad13ca042b 100644
--- a/storage/maria/maria_def.h
+++ b/storage/maria/maria_def.h
@@ -1203,7 +1203,8 @@ struct ha_table_option_struct
#define PACK_TYPE_SELECTED 1U /* Bits in field->pack_type */
#define PACK_TYPE_SPACE_FIELDS 2U
#define PACK_TYPE_ZERO_FILL 4U
-#define MARIA_FOUND_WRONG_KEY 32768U /* Impossible value from ha_key_cmp */
+
+#define MARIA_FOUND_WRONG_KEY INT_MAX32 /* Impossible value from ha_key_cmp */
#define MARIA_BLOCK_SIZE(key_length,data_pointer,key_pointer,block_size) (((((key_length)+(data_pointer)+(key_pointer))*4+(key_pointer)+2)/(block_size)+1)*(block_size))
#define MARIA_MAX_KEYPTR_SIZE 5 /* For calculating block lengths */
diff --git a/storage/spider/mysql-test/spider/bugfix/disabled.def b/storage/spider/mysql-test/spider/bugfix/disabled.def
index e19ea07b76b..68de2b6bfde 100644
--- a/storage/spider/mysql-test/spider/bugfix/disabled.def
+++ b/storage/spider/mysql-test/spider/bugfix/disabled.def
@@ -1 +1,2 @@
wait_timeout : MDEV-26045
+mdev_27239 : failed with ASAN build
diff --git a/storage/spider/mysql-test/spider/bugfix/r/mdev_25116.result b/storage/spider/mysql-test/spider/bugfix/r/mdev_25116.result
new file mode 100644
index 00000000000..cd2ca4b1635
--- /dev/null
+++ b/storage/spider/mysql-test/spider/bugfix/r/mdev_25116.result
@@ -0,0 +1,33 @@
+#
+# MDEV-25116 Spider: IF(COUNT( trigger SQL Error (1054)_ Unknown column '' in field list
+#
+for master_1
+for child2
+child2_1
+child2_2
+child2_3
+for child3
+connection child2_1;
+CREATE DATABASE auto_test_remote;
+USE auto_test_remote;
+CREATE TABLE tbl_a (id INT);
+connection master_1;
+CREATE DATABASE auto_test_local;
+USE auto_test_local;
+CREATE TABLE tbl_a (
+id INT
+) ENGINE=Spider DEFAULT CHARSET=utf8 COMMENT='table "tbl_a", srv "s_2_1"';
+connection master_1;
+SELECT IF(COUNT(id > 0),'Y','N') FROM tbl_a;
+IF(COUNT(id > 0),'Y','N')
+N
+connection master_1;
+DROP DATABASE IF EXISTS auto_test_local;
+connection child2_1;
+DROP DATABASE IF EXISTS auto_test_remote;
+for master_1
+for child2
+child2_1
+child2_2
+child2_3
+for child3
diff --git a/storage/spider/mysql-test/spider/bugfix/t/mdev_25116.cnf b/storage/spider/mysql-test/spider/bugfix/t/mdev_25116.cnf
new file mode 100644
index 00000000000..05dfd8a0bce
--- /dev/null
+++ b/storage/spider/mysql-test/spider/bugfix/t/mdev_25116.cnf
@@ -0,0 +1,3 @@
+!include include/default_mysqld.cnf
+!include ../my_1_1.cnf
+!include ../my_2_1.cnf
diff --git a/storage/spider/mysql-test/spider/bugfix/t/mdev_25116.test b/storage/spider/mysql-test/spider/bugfix/t/mdev_25116.test
new file mode 100644
index 00000000000..70c2bcc51b7
--- /dev/null
+++ b/storage/spider/mysql-test/spider/bugfix/t/mdev_25116.test
@@ -0,0 +1,37 @@
+--echo #
+--echo # MDEV-25116 Spider: IF(COUNT( trigger SQL Error (1054)_ Unknown column '' in field list
+--echo #
+
+--disable_query_log
+--disable_result_log
+--source ../../t/test_init.inc
+--enable_result_log
+--enable_query_log
+
+--connection child2_1
+CREATE DATABASE auto_test_remote;
+USE auto_test_remote;
+
+CREATE TABLE tbl_a (id INT);
+
+--connection master_1
+CREATE DATABASE auto_test_local;
+USE auto_test_local;
+
+eval CREATE TABLE tbl_a (
+ id INT
+) $MASTER_1_ENGINE $MASTER_1_CHARSET COMMENT='table "tbl_a", srv "s_2_1"';
+
+--connection master_1
+SELECT IF(COUNT(id > 0),'Y','N') FROM tbl_a;
+
+--connection master_1
+DROP DATABASE IF EXISTS auto_test_local;
+--connection child2_1
+DROP DATABASE IF EXISTS auto_test_remote;
+
+--disable_query_log
+--disable_result_log
+--source ../t/test_deinit.inc
+--enable_query_log
+--enable_result_log
diff --git a/storage/spider/mysql-test/spider/r/spider3_fixes.result b/storage/spider/mysql-test/spider/r/spider3_fixes.result
index d6aec25bfc1..7a80e102462 100644
--- a/storage/spider/mysql-test/spider/r/spider3_fixes.result
+++ b/storage/spider/mysql-test/spider/r/spider3_fixes.result
@@ -200,6 +200,14 @@ id
5000
10000
connection master_1;
+#
+# MDEV-28225 Disallow user to create Spider temporary table
+#
+connection master_1;
+CREATE TEMPORARY TABLE t1 (
+a INT
+) ENGINE=Spider;
+ERROR HY000: Table storage engine 'SPIDER' does not support the create option 'TEMPORARY'
deinit
connection master_1;
diff --git a/storage/spider/mysql-test/spider/r/variable_deprecation.result b/storage/spider/mysql-test/spider/r/variable_deprecation.result
index 6d715d95b9f..4b52da3c996 100644
--- a/storage/spider/mysql-test/spider/r/variable_deprecation.result
+++ b/storage/spider/mysql-test/spider/r/variable_deprecation.result
@@ -28,6 +28,21 @@ Warnings:
Warning 1287 The table parameter 'use_handler' is deprecated and will be removed in a future release
DROP TABLE tbl_a;
DROP TABLE tbl_b;
+# MDEV-28297 Deprecate spider_internal_offset
+SET spider_internal_offset = 1;
+Warnings:
+Warning 1287 '@@spider_internal_offset' is deprecated and will be removed in a future release
+SHOW VARIABLES LIKE "spider_internal_offset";
+Variable_name Value
+spider_internal_offset 1
+CREATE TABLE tbl_a (a INT) ENGINE=Spider COMMENT='ios "1"';
+Warnings:
+Warning 1287 The table parameter 'ios' is deprecated and will be removed in a future release
+CREATE TABLE tbl_b (a INT) ENGINE=Spider COMMENT='internal_offset "1"';
+Warnings:
+Warning 1287 The table parameter 'internal_offset' is deprecated and will be removed in a future release
+DROP TABLE tbl_a;
+DROP TABLE tbl_b;
# MDEV-28005 Deprecate Spider plugin variables regarding UDFs
SET GLOBAL spider_udf_ds_bulk_insert_rows = 1;
Warnings:
@@ -74,6 +89,98 @@ Warnings:
Warning 1287 The table parameter 'internal_limit' is deprecated and will be removed in a future release
DROP TABLE tbl_a;
DROP TABLE tbl_b;
+# MDEV-28244 Deprecate spider_xa_register_mode
+SET spider_xa_register_mode = 0;
+Warnings:
+Warning 1287 '@@spider_xa_register_mode' is deprecated and will be removed in a future release
+SHOW VARIABLES LIKE "spider_xa_register_mode";
+Variable_name Value
+spider_xa_register_mode 0
+# MDEV-28007 Deprecate Spider plugin variables regarding statistics persistence
+SET GLOBAL spider_store_last_sts = 0;
+Warnings:
+Warning 1287 '@@spider_store_last_sts' is deprecated and will be removed in a future release
+SHOW VARIABLES LIKE "spider_store_last_sts";
+Variable_name Value
+spider_store_last_sts 0
+SET GLOBAL spider_store_last_crd = 0;
+Warnings:
+Warning 1287 '@@spider_store_last_crd' is deprecated and will be removed in a future release
+SHOW VARIABLES LIKE "spider_store_last_crd";
+Variable_name Value
+spider_store_last_crd 0
+SET GLOBAL spider_load_sts_at_startup = 0;
+Warnings:
+Warning 1287 '@@spider_load_sts_at_startup' is deprecated and will be removed in a future release
+SHOW VARIABLES LIKE "spider_load_sts_at_startup";
+Variable_name Value
+spider_load_sts_at_startup 0
+SET GLOBAL spider_load_crd_at_startup = 0;
+Warnings:
+Warning 1287 '@@spider_load_crd_at_startup' is deprecated and will be removed in a future release
+SHOW VARIABLES LIKE "spider_load_crd_at_startup";
+Variable_name Value
+spider_load_crd_at_startup 0
+DROP TABLE tbl_a;
+DROP TABLE tbl_b;
+# MDEV-28008 Deprecate spider_crd_mode and spider_sts_mode
+SET spider_crd_mode = 1;
+Warnings:
+Warning 1287 '@@spider_crd_mode' is deprecated and will be removed in a future release
+SHOW VARIABLES LIKE "spider_crd_mode";
+Variable_name Value
+spider_crd_mode 1
+CREATE TABLE tbl_a (a INT) ENGINE=Spider COMMENT='cmd "3"';
+Warnings:
+Warning 1287 The table parameter 'cmd' is deprecated and will be removed in a future release
+CREATE TABLE tbl_b (a INT) ENGINE=Spider COMMENT='crd_mode "3"';
+Warnings:
+Warning 1287 The table parameter 'crd_mode' is deprecated and will be removed in a future release
+DROP TABLE tbl_a;
+DROP TABLE tbl_b;
+SET spider_sts_mode = 1;
+Warnings:
+Warning 1287 '@@spider_sts_mode' is deprecated and will be removed in a future release
+SHOW VARIABLES LIKE "spider_sts_mode";
+Variable_name Value
+spider_sts_mode 1
+CREATE TABLE tbl_a (a INT) ENGINE=Spider COMMENT='smd "3"';
+Warnings:
+Warning 1287 The table parameter 'smd' is deprecated and will be removed in a future release
+CREATE TABLE tbl_b (a INT) ENGINE=Spider COMMENT='sts_mode "3"';
+Warnings:
+Warning 1287 The table parameter 'sts_mode' is deprecated and will be removed in a future release
+DROP TABLE tbl_a;
+DROP TABLE tbl_b;
+# MDEV-28010 Deprecate spider_crd_type and spider_crd_weight
+SET spider_crd_type = 1;
+Warnings:
+Warning 1287 '@@spider_crd_type' is deprecated and will be removed in a future release
+SHOW VARIABLES LIKE "spider_crd_type";
+Variable_name Value
+spider_crd_type 1
+CREATE TABLE tbl_a (a INT) ENGINE=Spider COMMENT='ctp "1"';
+Warnings:
+Warning 1287 The table parameter 'ctp' is deprecated and will be removed in a future release
+CREATE TABLE tbl_b (a INT) ENGINE=Spider COMMENT='crd_type "1"';
+Warnings:
+Warning 1287 The table parameter 'crd_type' is deprecated and will be removed in a future release
+DROP TABLE tbl_a;
+DROP TABLE tbl_b;
+SET spider_crd_weight = 1;
+Warnings:
+Warning 1287 '@@spider_crd_weight' is deprecated and will be removed in a future release
+SHOW VARIABLES LIKE "spider_crd_weight";
+Variable_name Value
+spider_crd_weight 1
+CREATE TABLE tbl_a (a INT) ENGINE=Spider COMMENT='cwg "1"';
+Warnings:
+Warning 1287 The table parameter 'cwg' is deprecated and will be removed in a future release
+CREATE TABLE tbl_b (a INT) ENGINE=Spider COMMENT='crd_weight "1"';
+Warnings:
+Warning 1287 The table parameter 'crd_weight' is deprecated and will be removed in a future release
+DROP TABLE tbl_a;
+DROP TABLE tbl_b;
DROP DATABASE auto_test_local;
for master_1
for child2
diff --git a/storage/spider/mysql-test/spider/t/spider3_fixes.test b/storage/spider/mysql-test/spider/t/spider3_fixes.test
index 64d3b657ae8..eb48b0c89a2 100644
--- a/storage/spider/mysql-test/spider/t/spider3_fixes.test
+++ b/storage/spider/mysql-test/spider/t/spider3_fixes.test
@@ -266,6 +266,16 @@ if ($USE_CHILD_GROUP2)
}
+--echo #
+--echo # MDEV-28225 Disallow user to create Spider temporary table
+--echo #
+--connection master_1
+--error ER_ILLEGAL_HA_CREATE_OPTION
+CREATE TEMPORARY TABLE t1 (
+ a INT
+) ENGINE=Spider;
+
+
--echo
--echo deinit
--disable_warnings
diff --git a/storage/spider/mysql-test/spider/t/variable_deprecation.test b/storage/spider/mysql-test/spider/t/variable_deprecation.test
index 8521f5595d1..63965cb38c4 100644
--- a/storage/spider/mysql-test/spider/t/variable_deprecation.test
+++ b/storage/spider/mysql-test/spider/t/variable_deprecation.test
@@ -17,7 +17,15 @@ SET spider_use_handler = 3;
SHOW VARIABLES LIKE "spider_use_handler";
eval CREATE TABLE tbl_a (a INT) $MASTER_1_ENGINE COMMENT='uhd "3"';
eval CREATE TABLE tbl_b (a INT) $MASTER_1_ENGINE COMMENT='use_handler "3"';
+DROP TABLE tbl_a;
+DROP TABLE tbl_b;
+--echo # MDEV-28297 Deprecate spider_internal_offset
+SET spider_internal_offset = 1;
+SHOW VARIABLES LIKE "spider_internal_offset";
+
+eval CREATE TABLE tbl_a (a INT) $MASTER_1_ENGINE COMMENT='ios "1"';
+eval CREATE TABLE tbl_b (a INT) $MASTER_1_ENGINE COMMENT='internal_offset "1"';
DROP TABLE tbl_a;
DROP TABLE tbl_b;
@@ -46,6 +54,60 @@ eval CREATE TABLE tbl_b (a INT) $MASTER_1_ENGINE COMMENT='internal_limit "1"';
DROP TABLE tbl_a;
DROP TABLE tbl_b;
+--echo # MDEV-28244 Deprecate spider_xa_register_mode
+SET spider_xa_register_mode = 0;
+SHOW VARIABLES LIKE "spider_xa_register_mode";
+
+--echo # MDEV-28007 Deprecate Spider plugin variables regarding statistics persistence
+SET GLOBAL spider_store_last_sts = 0;
+SHOW VARIABLES LIKE "spider_store_last_sts";
+
+SET GLOBAL spider_store_last_crd = 0;
+SHOW VARIABLES LIKE "spider_store_last_crd";
+
+SET GLOBAL spider_load_sts_at_startup = 0;
+SHOW VARIABLES LIKE "spider_load_sts_at_startup";
+
+SET GLOBAL spider_load_crd_at_startup = 0;
+SHOW VARIABLES LIKE "spider_load_crd_at_startup";
+
+DROP TABLE tbl_a;
+DROP TABLE tbl_b;
+
+--echo # MDEV-28008 Deprecate spider_crd_mode and spider_sts_mode
+SET spider_crd_mode = 1;
+SHOW VARIABLES LIKE "spider_crd_mode";
+eval CREATE TABLE tbl_a (a INT) $MASTER_1_ENGINE COMMENT='cmd "3"';
+eval CREATE TABLE tbl_b (a INT) $MASTER_1_ENGINE COMMENT='crd_mode "3"';
+
+DROP TABLE tbl_a;
+DROP TABLE tbl_b;
+
+SET spider_sts_mode = 1;
+SHOW VARIABLES LIKE "spider_sts_mode";
+eval CREATE TABLE tbl_a (a INT) $MASTER_1_ENGINE COMMENT='smd "3"';
+eval CREATE TABLE tbl_b (a INT) $MASTER_1_ENGINE COMMENT='sts_mode "3"';
+
+DROP TABLE tbl_a;
+DROP TABLE tbl_b;
+
+--echo # MDEV-28010 Deprecate spider_crd_type and spider_crd_weight
+SET spider_crd_type = 1;
+SHOW VARIABLES LIKE "spider_crd_type";
+eval CREATE TABLE tbl_a (a INT) $MASTER_1_ENGINE COMMENT='ctp "1"';
+eval CREATE TABLE tbl_b (a INT) $MASTER_1_ENGINE COMMENT='crd_type "1"';
+
+DROP TABLE tbl_a;
+DROP TABLE tbl_b;
+
+SET spider_crd_weight = 1;
+SHOW VARIABLES LIKE "spider_crd_weight";
+eval CREATE TABLE tbl_a (a INT) $MASTER_1_ENGINE COMMENT='cwg "1"';
+eval CREATE TABLE tbl_b (a INT) $MASTER_1_ENGINE COMMENT='crd_weight "1"';
+
+DROP TABLE tbl_a;
+DROP TABLE tbl_b;
+
DROP DATABASE auto_test_local;
--disable_query_log
diff --git a/storage/spider/spd_db_conn.cc b/storage/spider/spd_db_conn.cc
index 549279fb180..e412c2f3da4 100644
--- a/storage/spider/spd_db_conn.cc
+++ b/storage/spider/spd_db_conn.cc
@@ -9302,8 +9302,7 @@ int spider_db_open_item_ref(
}
DBUG_RETURN(0);
}
- DBUG_RETURN(spider_db_print_item_type(*(item_ref->ref), NULL, spider, str,
- alias, alias_length, dbton_id, use_fields, fields));
+ DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM); // MDEV-25116
}
DBUG_RETURN(spider_db_open_item_ident((Item_ident *) item_ref, spider, str,
alias, alias_length, dbton_id, use_fields, fields));
diff --git a/storage/spider/spd_param.cc b/storage/spider/spd_param.cc
index c14f95ae182..48f30a57c7b 100644
--- a/storage/spider/spd_param.cc
+++ b/storage/spider/spd_param.cc
@@ -426,7 +426,7 @@ uint spider_param_force_commit(
*/
static MYSQL_THDVAR_UINT(
xa_register_mode, /* name */
- PLUGIN_VAR_RQCMDARG, /* opt */
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
"Mode of XA transaction register into system table", /* comment */
NULL, /* check */
NULL, /* update */
@@ -449,7 +449,7 @@ uint spider_param_xa_register_mode(
*/
static MYSQL_THDVAR_LONGLONG(
internal_offset, /* name */
- PLUGIN_VAR_RQCMDARG, /* opt */
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
"Internal offset", /* comment */
NULL, /* check */
spider_use_table_value_deprecated, /* update */
@@ -1603,7 +1603,7 @@ double spider_param_crd_interval(
*/
static MYSQL_THDVAR_INT(
crd_mode, /* name */
- PLUGIN_VAR_RQCMDARG, /* opt */
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
"Mode of cardinality confirmation.", /* comment */
NULL, /* check */
spider_use_table_value_deprecated, /* update */
@@ -1660,7 +1660,7 @@ int spider_param_crd_sync(
*/
static MYSQL_THDVAR_INT(
crd_type, /* name */
- PLUGIN_VAR_RQCMDARG, /* opt */
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
"Type of cardinality calculation.", /* comment */
NULL, /* check */
spider_use_table_value_deprecated, /* update */
@@ -1685,7 +1685,7 @@ int spider_param_crd_type(
*/
static MYSQL_THDVAR_INT(
crd_weight, /* name */
- PLUGIN_VAR_RQCMDARG, /* opt */
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
"Weight coefficient to calculate effectiveness of index from cardinality of column.", /* comment */
NULL, /* check */
spider_use_table_value_deprecated, /* update */
@@ -1767,7 +1767,7 @@ double spider_param_sts_interval(
*/
static MYSQL_THDVAR_INT(
sts_mode, /* name */
- PLUGIN_VAR_RQCMDARG, /* opt */
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
"Mode of table state confirmation.", /* comment */
NULL, /* check */
spider_use_table_value_deprecated, /* update */
@@ -3002,7 +3002,7 @@ static int spider_store_last_sts;
static MYSQL_SYSVAR_INT(
store_last_sts,
spider_store_last_sts,
- PLUGIN_VAR_RQCMDARG,
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED,
"Store last sts result into system table",
NULL,
spider_use_table_value_deprecated,
@@ -3029,7 +3029,7 @@ static int spider_store_last_crd;
static MYSQL_SYSVAR_INT(
store_last_crd,
spider_store_last_crd,
- PLUGIN_VAR_RQCMDARG,
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED,
"Store last crd result into system table",
NULL,
spider_use_table_value_deprecated,
@@ -3056,7 +3056,7 @@ static int spider_load_sts_at_startup;
static MYSQL_SYSVAR_INT(
load_sts_at_startup,
spider_load_sts_at_startup,
- PLUGIN_VAR_RQCMDARG,
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED,
"Load sts from system table at startup",
NULL,
spider_use_table_value_deprecated,
@@ -3083,7 +3083,7 @@ static int spider_load_crd_at_startup;
static MYSQL_SYSVAR_INT(
load_crd_at_startup,
spider_load_crd_at_startup,
- PLUGIN_VAR_RQCMDARG,
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED,
"Load crd from system table at startup",
NULL,
spider_use_table_value_deprecated,
diff --git a/storage/spider/spd_table.cc b/storage/spider/spd_table.cc
index f04b4208002..c72c6ea62b3 100644
--- a/storage/spider/spd_table.cc
+++ b/storage/spider/spd_table.cc
@@ -2315,6 +2315,7 @@ int spider_parse_connect_info(
SPIDER_PARAM_INT_WITH_MAX("cbm", crd_bg_mode, 0, 2);
#endif
SPIDER_PARAM_DOUBLE("civ", crd_interval, 0);
+ SPIDER_PARAM_DEPRECATED_WARNING("cmd");
SPIDER_PARAM_INT_WITH_MAX("cmd", crd_mode, 0, 3);
SPIDER_PARAM_INT_WITH_MAX("csr", casual_read, 0, 63);
#ifdef WITH_PARTITION_STORAGE_ENGINE
@@ -2322,7 +2323,9 @@ int spider_parse_connect_info(
#endif
SPIDER_PARAM_LONG_LIST_WITH_MAX("cto", connect_timeouts, 0,
2147483647);
+ SPIDER_PARAM_DEPRECATED_WARNING("ctp");
SPIDER_PARAM_INT_WITH_MAX("ctp", crd_type, 0, 2);
+ SPIDER_PARAM_DEPRECATED_WARNING("cwg");
SPIDER_PARAM_DOUBLE("cwg", crd_weight, 1);
SPIDER_PARAM_INT_WITH_MAX("dat", delete_all_rows_type, 0, 1);
SPIDER_PARAM_INT_WITH_MAX("ddi", direct_dup_insert, 0, 1);
@@ -2345,6 +2348,7 @@ int spider_parse_connect_info(
SPIDER_PARAM_INT_WITH_MAX("idl", internal_delayed, 0, 1);
SPIDER_PARAM_DEPRECATED_WARNING("ilm");
SPIDER_PARAM_LONGLONG("ilm", internal_limit, 0);
+ SPIDER_PARAM_DEPRECATED_WARNING("ios");
SPIDER_PARAM_LONGLONG("ios", internal_offset, 0);
SPIDER_PARAM_INT_WITH_MAX("iom", internal_optimize, 0, 1);
SPIDER_PARAM_INT_WITH_MAX("iol", internal_optimize_local, 0, 1);
@@ -2397,6 +2401,7 @@ int spider_parse_connect_info(
SPIDER_PARAM_INT_WITH_MAX("slc", store_last_crd, 0, 1);
SPIDER_PARAM_INT_WITH_MAX("slm", selupd_lock_mode, 0, 2);
SPIDER_PARAM_INT_WITH_MAX("sls", store_last_sts, 0, 1);
+ SPIDER_PARAM_DEPRECATED_WARNING("smd");
SPIDER_PARAM_INT_WITH_MAX("smd", sts_mode, 1, 2);
SPIDER_PARAM_LONGLONG("smr", static_mean_rec_length, 0);
SPIDER_PARAM_LONGLONG("spr", split_read, 0);
@@ -2463,14 +2468,17 @@ int spider_parse_connect_info(
option_struct &&
option_struct->remote_database);
SPIDER_PARAM_STR_LIST("password", tgt_passwords);
+ SPIDER_PARAM_DEPRECATED_WARNING("sts_mode");
SPIDER_PARAM_INT_WITH_MAX("sts_mode", sts_mode, 1, 2);
#ifdef WITH_PARTITION_STORAGE_ENGINE
SPIDER_PARAM_INT_WITH_MAX("sts_sync", sts_sync, 0, 2);
#endif
+ SPIDER_PARAM_DEPRECATED_WARNING("crd_mode");
SPIDER_PARAM_INT_WITH_MAX("crd_mode", crd_mode, 0, 3);
#ifdef WITH_PARTITION_STORAGE_ENGINE
SPIDER_PARAM_INT_WITH_MAX("crd_sync", crd_sync, 0, 2);
#endif
+ SPIDER_PARAM_DEPRECATED_WARNING("crd_type");
SPIDER_PARAM_INT_WITH_MAX("crd_type", crd_type, 0, 2);
SPIDER_PARAM_LONGLONG("priority", priority, 0);
#ifndef WITHOUT_SPIDER_BG_SEARCH
@@ -2488,6 +2496,7 @@ int spider_parse_connect_info(
error_num = connect_string_parse.print_param_error();
goto error;
case 10:
+ SPIDER_PARAM_DEPRECATED_WARNING("crd_weight");
SPIDER_PARAM_DOUBLE("crd_weight", crd_weight, 1);
SPIDER_PARAM_LONGLONG("split_read", split_read, 0);
SPIDER_PARAM_INT_WITH_MAX("quick_mode", quick_mode, 0, 3);
@@ -2537,6 +2546,7 @@ int spider_parse_connect_info(
error_num = connect_string_parse.print_param_error();
goto error;
case 15:
+ SPIDER_PARAM_DEPRECATED_WARNING("internal_offset");
SPIDER_PARAM_LONGLONG("internal_offset", internal_offset, 0);
SPIDER_PARAM_INT_WITH_MAX("reset_sql_alloc", reset_sql_alloc, 0, 1);
SPIDER_PARAM_INT_WITH_MAX("semi_table_lock", semi_table_lock, 0, 1);
@@ -6907,7 +6917,7 @@ int spider_db_init(
DBUG_ENTER("spider_db_init");
spider_hton_ptr = spider_hton;
- spider_hton->flags = HTON_NO_FLAGS;
+ spider_hton->flags = HTON_TEMPORARY_NOT_SUPPORTED;
#ifdef HTON_CAN_READ_CONNECT_STRING_IN_PARTITION
spider_hton->flags |= HTON_CAN_READ_CONNECT_STRING_IN_PARTITION;
#endif
diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c
index 6fe2b462db8..c67583958ea 100644
--- a/tests/mysql_client_test.c
+++ b/tests/mysql_client_test.c
@@ -7567,7 +7567,7 @@ static void test_explain_bug()
verify_prepare_field(result, 5, "Extra", "EXTRA",
mysql_get_server_version(mysql) <= 50000 ?
MYSQL_TYPE_STRING : MYSQL_TYPE_VAR_STRING,
- 0, 0, "information_schema", 30, 0);
+ 0, 0, "information_schema", 80, 0);
mysql_free_result(result);
mysql_stmt_close(stmt);
diff --git a/tpool/tpool_generic.cc b/tpool/tpool_generic.cc
index 5720c5b48aa..22d29d6400b 100644
--- a/tpool/tpool_generic.cc
+++ b/tpool/tpool_generic.cc
@@ -1,4 +1,4 @@
-/* Copyright (C) 2019, 2021, MariaDB Corporation.
+/* Copyright (C) 2019, 2022, MariaDB Corporation.
This program is free software; you can redistribute itand /or modify
it under the terms of the GNU General Public License as published by
@@ -128,7 +128,7 @@ enum worker_wake_reason
/* A per-worker thread structure.*/
-struct MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) worker_data
+struct alignas(CPU_LEVEL1_DCACHE_LINESIZE) worker_data
{
/** Condition variable to wakeup this worker.*/
std::condition_variable m_cv;
diff --git a/wsrep-lib b/wsrep-lib
-Subproject 23fb8624624c9144c77f3874647fa0f7394b0aa
+Subproject edd141127c11d78ef073f9f3ca61708821f20b3