Commit 6f271302 authored by Marko Mäkelä's avatar Marko Mäkelä

Merge 10.2 into 10.3

parents 75c01f39 fb96ac0a
archive.archive
archive.archive_gis
archive.partition_archive
binlog.binlog_base64_flag
binlog.binlog_database
binlog.binlog_innodb
binlog.binlog_parallel_replication_marks_stm_mix
binlog.binlog_row_mix_innodb_myisam
binlog.flashback
binlog_encryption.encrypted_slave
connect.bin
connect.bson
connect.dbf
connect.dir
connect.endian
connect.general
connect.json
connect.mysql
connect.secure_file_priv
connect.tbl
csv.csv
disks.disks
encryption.encryption_force
encryption.innodb_encryption_tables
encryption.tempfiles_encrypted
federated.federated
federated.federatedx
gcol.gcol_select_innodb
handler.interface
heap.heap
innodb.innodb
innodb.autoinc_persist
innodb.innodb_defrag_binlog
innodb.innodb_mysql
innodb.monitor
innodb.purge
innodb.table_flags
innodb.xa_recovery
innodb_fts.fulltext
innodb_gis.geometry
innodb_gis.rtree
innodb_zip.innodb-zip
innodb_zip.page_size
json.json_no_table
main.blackhole
main.bootstrap
main.compress
main.connect
main.ctype_collate
main.ctype_utf8
main.default
main.dyncol
main.fulltext
main.function_defaults
main.gis
main.grant
main.handlersocket
main.information_schema
main.innodb_ext_key
main.log_tables
main.lowercase_fs_off
main.myisam
main.mysql_client_test
main.mysql_protocols
main.mysql_upgrade
main.mysqladmin
main.mysqlbinlog
main.mysqlcheck
main.mysqld--defaults-file
main.mysqldump
main.mysqlhotcopy_myisam
main.mysqlshow
main.mysqlslap
main.mysqltest
main.parser
main.partition
main.perror
main.plugin
main.plugin_auth
main.pool_of_threads
main.ps
main.repair
main.shutdown
main.sp
main.ssl
main.ssl_compress
main.stat_tables
main.statistics
main.subselect
main.symlink
main.temp_table
main.timezone
main.type_timestamp_hires
main.user_var
main.userstat
main.variables
main.view
main.win
main.xa
maria.maria
mariabackup.full_backup
metadata_lock_info.table_metadata_lock
mroonga/storage.variable_version
mroonga/wrapper.count_star
multi_source.multisource
oqgraph.general-innodb
parts.rpl_partition
perfschema.selects
plugins.auth_ed25519
plugins.cracklib_password_check
plugins.dialog
plugins.fulltext_plugin
plugins.locales
plugins.pam_cleartext
plugins.processlist
plugins.qc_info
plugins.server_audit
plugins.simple_password_check
plugins.sql_error_log
plugins.two_password_validations
plugins.unix_socket
query_response_time.basic
rocksdb.rocksdb
roles.definer
rpl.rpl_gtid_basic
rpl.rpl_relayrotate
rpl.rpl_row_blob_innodb
rpl.rpl_semi_sync_event
rpl.rpl_sp
rpl.rpl_stm_binlog_max_cache_size
rpl.rpl_switch_stm_row_mixed
sequence.simple
spider.basic_sql
spider.ha
sql_discovery.simple
sys_vars.sysvars_aria
sys_vars.sysvars_server_notembedded
wsrep.variables
compat/oracle.binlog_ptr_mysqlbinlog
compat/oracle.sp-package
compat/maxdb.rpl_mariadb_timestamp
sql_sequence.mysqldump
versioning.simple
versioning.trx_id
SET GLOBAL innodb_flush_log_at_trx_commit= 1;
RESET MASTER;
CREATE TABLE t1 (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=Innodb;
*** Test that FLUSH LOGS waits if a transaction ordered commit is in progress.
connect con1,localhost,root,,;
SET DEBUG_SYNC= "commit_before_get_LOCK_commit_ordered SIGNAL con1_ready WAIT_FOR con1_go";
INSERT INTO t1 VALUES (1, REPEAT("x", 1));
connection default;
SET DEBUG_SYNC= "now WAIT_FOR con1_ready";
SET DEBUG_SYNC= "rotate_after_rotate SIGNAL con_flush_ready WAIT_FOR default_go";
FLUSH LOGS;
connect con2,localhost,root,,;
Trx_1 is not yet committed:
SELECT count(*) as 'ZERO' from t1;
ZERO
0
Wait for Trx_2 has rotated binlog:
SET DEBUG_SYNC= "now WAIT_FOR con_flush_ready";
SET DEBUG_SYNC= "now SIGNAL default_go";
connection default;
Must be tree logs in the list:
show binary logs;
Log_name File_size
master-bin.000001 #
master-bin.000002 #
master-bin.000003 #
include/show_binlog_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
master-bin.000001 # Gtid_list # # []
master-bin.000001 # Binlog_checkpoint # # master-bin.000001
master-bin.000001 # Gtid # # GTID #-#-#
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=Innodb
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES (1, REPEAT("x", 1))
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Rotate # # master-bin.000002;pos=POS
Only one Binlog checkpoint must exist and point to master-bin.000001
include/show_binlog_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000002 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
master-bin.000002 # Gtid_list # # [#-#-#]
master-bin.000002 # Binlog_checkpoint # # master-bin.000001
SELECT count(*) as 'ONE' from t1;
ONE
1
connection default;
DROP TABLE t1;
SET debug_sync = 'reset';
--source include/have_innodb.inc
--source include/have_debug.inc
--source include/have_debug_sync.inc
--source include/have_binlog_format_row.inc
# References:
#
# MDEV-24526 binlog rotate via FLUSH LOGS may obsolate binlog file too eary
#
# The test for MDEV-24526 proves the fixes correct observed race condition
# between a commiting transaction and FLUSH-LOGS.
# The plot.
# Trx_1 (con1) transaction binlogs first
# to yield its turn acquiring LOCK_commit_ordered to Trx_2 and stand
# still waiting of a signal that will never arrive.
# Trx_2 can't acquire it in the fixed version even though
# Trx_3 makes sure Trx_2 has reached a post-rotation execution point
# to signal it to proceed.
# Then the server gets crashed and Trx_1 must recover unlike
# in the OLD buggy version.
#
SET GLOBAL innodb_flush_log_at_trx_commit= 1;
RESET MASTER;
CREATE TABLE t1 (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=Innodb;
--echo *** Test that FLUSH LOGS waits if a transaction ordered commit is in progress.
connect(con1,localhost,root,,); # Trx_1
# hang before doing acquiring Commit Ordered mutex
SET DEBUG_SYNC= "commit_before_get_LOCK_commit_ordered SIGNAL con1_ready WAIT_FOR con1_go";
--send INSERT INTO t1 VALUES (1, REPEAT("x", 1))
connection default; # Trx_2
SET DEBUG_SYNC= "now WAIT_FOR con1_ready";
SET DEBUG_SYNC= "rotate_after_rotate SIGNAL con_flush_ready WAIT_FOR default_go";
--send FLUSH LOGS
connect(con2,localhost,root,,); # Trx_3
--echo Trx_1 is not yet committed:
SELECT count(*) as 'ZERO' from t1;
--echo Wait for Trx_2 has rotated binlog:
SET DEBUG_SYNC= "now WAIT_FOR con_flush_ready";
# Useless signal to prove Trx_2 cannot race Trx_1's commit
# even though Trx_1 never received the being waited 'con1_go'.
SET DEBUG_SYNC= "now SIGNAL default_go";
--let $shutdown_timeout=0
--source include/restart_mysqld.inc
connection default;
--enable_reconnect
--error 0,2013
--reap
--echo Must be tree logs in the list:
--source include/show_binary_logs.inc
--let $binlog_file= master-bin.000001
--let $binlog_start= 4
--source include/show_binlog_events.inc
--echo Only one Binlog checkpoint must exist and point to master-bin.000001
--let $binlog_file= master-bin.000002
--let $binlog_start= 4
--source include/show_binlog_events.inc
# In the buggy server version the following select may have
# resulted with ZERO:
SELECT count(*) as 'ONE' from t1;
# Clean up.
connection default;
DROP TABLE t1;
SET debug_sync = 'reset';
...@@ -178,6 +178,7 @@ Event_queue_element_for_exec::init(const LEX_CSTRING *db, const LEX_CSTRING *n) ...@@ -178,6 +178,7 @@ Event_queue_element_for_exec::init(const LEX_CSTRING *db, const LEX_CSTRING *n)
if (!(name.str= my_strndup(n->str, name.length= n->length, MYF(MY_WME)))) if (!(name.str= my_strndup(n->str, name.length= n->length, MYF(MY_WME))))
{ {
my_free(const_cast<char*>(dbname.str)); my_free(const_cast<char*>(dbname.str));
dbname.str= NULL;
return TRUE; return TRUE;
} }
return FALSE; return FALSE;
......
...@@ -33,7 +33,11 @@ struct TABLE; ...@@ -33,7 +33,11 @@ struct TABLE;
class Event_queue_element_for_exec class Event_queue_element_for_exec
{ {
public: public:
Event_queue_element_for_exec(){}; Event_queue_element_for_exec()
{
dbname.str= NULL; dbname.length= 0;
name.str= NULL; name.length= 0;
};
~Event_queue_element_for_exec(); ~Event_queue_element_for_exec();
bool bool
......
...@@ -639,6 +639,7 @@ Event_queue::get_top_for_execution_if_time(THD *thd, ...@@ -639,6 +639,7 @@ Event_queue::get_top_for_execution_if_time(THD *thd,
if (!(*event_name= new Event_queue_element_for_exec()) || if (!(*event_name= new Event_queue_element_for_exec()) ||
(*event_name)->init(&top->dbname, &top->name)) (*event_name)->init(&top->dbname, &top->name))
{ {
delete *event_name;
ret= TRUE; ret= TRUE;
break; break;
} }
......
...@@ -6908,6 +6908,9 @@ int MYSQL_BIN_LOG::rotate_and_purge(bool force_rotate, ...@@ -6908,6 +6908,9 @@ int MYSQL_BIN_LOG::rotate_and_purge(bool force_rotate,
bool check_purge= false; bool check_purge= false;
mysql_mutex_lock(&LOCK_log); mysql_mutex_lock(&LOCK_log);
DEBUG_SYNC(current_thd, "rotate_after_acquire_LOCK_log");
prev_binlog_id= current_binlog_id; prev_binlog_id= current_binlog_id;
if ((err_gtid= do_delete_gtid_domain(domain_drop_lex))) if ((err_gtid= do_delete_gtid_domain(domain_drop_lex)))
...@@ -6918,11 +6921,22 @@ int MYSQL_BIN_LOG::rotate_and_purge(bool force_rotate, ...@@ -6918,11 +6921,22 @@ int MYSQL_BIN_LOG::rotate_and_purge(bool force_rotate,
} }
else if (unlikely((error= rotate(force_rotate, &check_purge)))) else if (unlikely((error= rotate(force_rotate, &check_purge))))
check_purge= false; check_purge= false;
DEBUG_SYNC(current_thd, "rotate_after_rotate");
/* /*
NOTE: Run purge_logs wo/ holding LOCK_log because it does not need NOTE: Run purge_logs wo/ holding LOCK_log because it does not need
the mutex. Otherwise causes various deadlocks. the mutex. Otherwise causes various deadlocks.
Explicit binlog rotation must be synchronized with a concurrent
binlog ordered commit, in particular not let binlog
checkpoint notification request until early binlogged
concurrent commits have has been completed.
*/ */
mysql_mutex_lock(&LOCK_after_binlog_sync);
mysql_mutex_unlock(&LOCK_log); mysql_mutex_unlock(&LOCK_log);
mysql_mutex_lock(&LOCK_commit_ordered);
mysql_mutex_unlock(&LOCK_after_binlog_sync);
mysql_mutex_unlock(&LOCK_commit_ordered);
if (check_purge) if (check_purge)
checkpoint_and_purge(prev_binlog_id); checkpoint_and_purge(prev_binlog_id);
...@@ -8079,7 +8093,12 @@ MYSQL_BIN_LOG::trx_group_commit_leader(group_commit_entry *leader) ...@@ -8079,7 +8093,12 @@ MYSQL_BIN_LOG::trx_group_commit_leader(group_commit_entry *leader)
} }
DEBUG_SYNC(leader->thd, "commit_before_get_LOCK_commit_ordered"); DEBUG_SYNC(leader->thd, "commit_before_get_LOCK_commit_ordered");
mysql_mutex_lock(&LOCK_commit_ordered); mysql_mutex_lock(&LOCK_commit_ordered);
DBUG_EXECUTE_IF("crash_before_engine_commit",
{
DBUG_SUICIDE();
});
last_commit_pos_offset= commit_offset; last_commit_pos_offset= commit_offset;
/* /*
......
...@@ -191,7 +191,7 @@ ER_DB_DROP_DELETE ...@@ -191,7 +191,7 @@ ER_DB_DROP_DELETE
hun "Adatbazis megszuntetesi hiba ('%-.192s' nem torolheto, hibakod: %M)" hun "Adatbazis megszuntetesi hiba ('%-.192s' nem torolheto, hibakod: %M)"
ita "Errore durante la cancellazione del database (impossibile cancellare '%-.192s', errno: %M)" ita "Errore durante la cancellazione del database (impossibile cancellare '%-.192s', errno: %M)"
jpn "データベース削除エラー ('%-.192s' を削除できません。エラー番号: %M)" jpn "データベース削除エラー ('%-.192s' を削除できません。エラー番号: %M)"
kor "데이타베이스 제거 에러('%-.192s'를 삭제할 수 없니다, 에러번호: %M)" kor "데이타베이스 제거 에러('%-.192s'를 삭제할 수 없니다, 에러번호: %M)"
nor "Feil ved fjerning (drop) av databasen (kan ikke slette '%-.192s', feil %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)" 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)" pol "Bł?d podczas usuwania bazy danych (nie można usun?ć '%-.192s', bł?d %M)"
...@@ -216,7 +216,7 @@ ER_DB_DROP_RMDIR ...@@ -216,7 +216,7 @@ ER_DB_DROP_RMDIR
hun "Adatbazis megszuntetesi hiba ('%-.192s' nem szuntetheto meg, hibakod: %M)" hun "Adatbazis megszuntetesi hiba ('%-.192s' nem szuntetheto meg, hibakod: %M)"
ita "Errore durante la cancellazione del database (impossibile rmdir '%-.192s', errno: %M)" ita "Errore durante la cancellazione del database (impossibile rmdir '%-.192s', errno: %M)"
jpn "データベース削除エラー (ディレクトリ '%-.192s' を削除できません。エラー番号: %M)" jpn "データベース削除エラー (ディレクトリ '%-.192s' を削除できません。エラー番号: %M)"
kor "데이타베이스 제거 에러(rmdir '%-.192s'를 할 수 없니다, 에러번호: %M)" kor "데이타베이스 제거 에러(rmdir '%-.192s'를 할 수 없니다, 에러번호: %M)"
nor "Feil ved sletting av database (kan ikke slette katalogen '%-.192s', feil %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)" 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)" pol "Bł?d podczas usuwania bazy danych (nie można wykonać rmdir '%-.192s', bł?d %M)"
...@@ -516,7 +516,7 @@ ER_DUP_KEY 23000 ...@@ -516,7 +516,7 @@ ER_DUP_KEY 23000
hun "Irasi hiba, duplikalt kulcs a '%-.192s' tablaban" hun "Irasi hiba, duplikalt kulcs a '%-.192s' tablaban"
ita "Scrittura impossibile: chiave duplicata nella tabella '%-.192s'" ita "Scrittura impossibile: chiave duplicata nella tabella '%-.192s'"
jpn "書き込めません。表 '%-.192s' に重複するキーがあります。" jpn "書き込めません。表 '%-.192s' に重複するキーがあります。"
kor "기록할 수 없니다., 테이블 '%-.192s'에서 중복 키" kor "기록할 수 없니다., 테이블 '%-.192s'에서 중복 키"
nor "Kan ikke skrive, flere like nøkler i tabellen '%-.192s'" nor "Kan ikke skrive, flere like nøkler i tabellen '%-.192s'"
norwegian-ny "Kan ikkje skrive, flere like nyklar 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'" pol "Nie można zapisać, powtórzone klucze w tabeli '%-.192s'"
...@@ -641,7 +641,7 @@ ER_FILE_USED ...@@ -641,7 +641,7 @@ ER_FILE_USED
hun "'%-.192s' a valtoztatas ellen zarolva" hun "'%-.192s' a valtoztatas ellen zarolva"
ita "'%-.192s' e` soggetto a lock contro i cambiamenti" ita "'%-.192s' e` soggetto a lock contro i cambiamenti"
jpn "'%-.192s' はロックされています。" jpn "'%-.192s' はロックされています。"
kor "'%-.192s'가 변경할 수 없도록 잠겨있니다." kor "'%-.192s'가 변경할 수 없도록 잠겨있니다."
nor "'%-.192s' er låst mot oppdateringer" nor "'%-.192s' er låst mot oppdateringer"
norwegian-ny "'%-.192s' er låst mot oppdateringar" norwegian-ny "'%-.192s' er låst mot oppdateringar"
pol "'%-.192s' jest zablokowany na wypadek zmian" pol "'%-.192s' jest zablokowany na wypadek zmian"
...@@ -691,7 +691,7 @@ ER_FORM_NOT_FOUND ...@@ -691,7 +691,7 @@ ER_FORM_NOT_FOUND
hun "A(z) '%-.192s' nezet nem letezik a(z) '%-.192s'-hoz" hun "A(z) '%-.192s' nezet nem letezik a(z) '%-.192s'-hoz"
ita "La view '%-.192s' non esiste per '%-.192s'" ita "La view '%-.192s' non esiste per '%-.192s'"
jpn "ビュー '%-.192s' は '%-.192s' に存在しません。" jpn "ビュー '%-.192s' は '%-.192s' に存在しません。"
kor "뷰 '%-.192s'가 '%-.192s'에서는 존재하지 않니다." kor "뷰 '%-.192s'가 '%-.192s'에서는 존재하지 않니다."
nor "View '%-.192s' eksisterer ikke for '%-.192s'" nor "View '%-.192s' eksisterer ikke for '%-.192s'"
norwegian-ny "View '%-.192s' eksisterar ikkje for '%-.192s'" norwegian-ny "View '%-.192s' eksisterar ikkje for '%-.192s'"
pol "Widok '%-.192s' nie istnieje dla '%-.192s'" pol "Widok '%-.192s' nie istnieje dla '%-.192s'"
...@@ -739,7 +739,7 @@ ER_KEY_NOT_FOUND ...@@ -739,7 +739,7 @@ ER_KEY_NOT_FOUND
hun "Nem talalhato a rekord '%-.192s'-ben" hun "Nem talalhato a rekord '%-.192s'-ben"
ita "Impossibile trovare il record in '%-.192s'" ita "Impossibile trovare il record in '%-.192s'"
jpn "'%-.192s' にレコードが見つかりません。" jpn "'%-.192s' にレコードが見つかりません。"
kor "'%-.192s'에서 레코드를 찾을 수 없니다." kor "'%-.192s'에서 레코드를 찾을 수 없니다."
nor "Kan ikke finne posten i '%-.192s'" nor "Kan ikke finne posten i '%-.192s'"
norwegian-ny "Kan ikkje finne posten i '%-.192s'" norwegian-ny "Kan ikkje finne posten i '%-.192s'"
pol "Nie można znaleĽć rekordu w '%-.192s'" pol "Nie można znaleĽć rekordu w '%-.192s'"
...@@ -985,7 +985,7 @@ ER_BAD_HOST_ERROR 08S01 ...@@ -985,7 +985,7 @@ ER_BAD_HOST_ERROR 08S01
hun "A gepnev nem allapithato meg a cimbol" hun "A gepnev nem allapithato meg a cimbol"
ita "Impossibile risalire al nome dell'host dall'indirizzo (risoluzione inversa)" ita "Impossibile risalire al nome dell'host dall'indirizzo (risoluzione inversa)"
jpn "IPアドレスからホスト名を解決できません。" jpn "IPアドレスからホスト名を解決できません。"
kor "당신의 컴퓨터의 호스트이름을 얻을 수 없니다." kor "당신의 컴퓨터의 호스트이름을 얻을 수 없니다."
nor "Kan ikke få tak i vertsnavn for din adresse" nor "Kan ikke få tak i vertsnavn for din adresse"
norwegian-ny "Kan ikkje få tak i vertsnavn for di adresse" norwegian-ny "Kan ikkje få tak i vertsnavn for di adresse"
pol "Nie można otrzymać nazwy hosta dla twojego adresu" pol "Nie można otrzymać nazwy hosta dla twojego adresu"
...@@ -1533,7 +1533,7 @@ ER_PARSE_ERROR 42000 s1009 ...@@ -1533,7 +1533,7 @@ ER_PARSE_ERROR 42000 s1009
hun "A %s a '%-.80T'-hez kozeli a %d sorban" hun "A %s a '%-.80T'-hez kozeli a %d sorban"
ita "%s vicino a '%-.80T' linea %d" ita "%s vicino a '%-.80T' linea %d"
jpn "%s : '%-.80T' 付近 %d 行目" jpn "%s : '%-.80T' 付近 %d 行目"
kor "'%s' 에러 같니다. ('%-.80T' 명령어 라인 %d)" kor "'%s' 에러 같니다. ('%-.80T' 명령어 라인 %d)"
nor "%s nær '%-.80T' på linje %d" nor "%s nær '%-.80T' på linje %d"
norwegian-ny "%s attmed '%-.80T' på line %d" norwegian-ny "%s attmed '%-.80T' på line %d"
pol "%s obok '%-.80T' w linii %d" pol "%s obok '%-.80T' w linii %d"
...@@ -1658,7 +1658,7 @@ ER_TOO_MANY_KEYS 42000 S1009 ...@@ -1658,7 +1658,7 @@ ER_TOO_MANY_KEYS 42000 S1009
hindi "बहुत सारी KEYS निर्दिष्ट हैं; अधिकतम %d KEYS की अनुमति है" hindi "बहुत सारी KEYS निर्दिष्ट हैं; अधिकतम %d KEYS की अनुमति है"
ita "Troppe chiavi. Sono ammesse max %d chiavi" ita "Troppe chiavi. Sono ammesse max %d chiavi"
jpn "索引の数が多すぎます。最大 %d 個までです。" jpn "索引の数が多すぎます。最大 %d 個までです。"
kor "너무 많은 키가 정의되어 있니다.. 최대 %d의 키가 가능함" kor "너무 많은 키가 정의되어 있니다.. 최대 %d의 키가 가능함"
nor "For mange nøkler spesifisert. Maks %d nøkler tillatt" nor "For mange nøkler spesifisert. Maks %d nøkler tillatt"
norwegian-ny "For mange nykler spesifisert. Maks %d nyklar tillatt" norwegian-ny "For mange nykler spesifisert. Maks %d nyklar tillatt"
pol "Okre?lono zbyt wiele kluczy. Dostępnych jest maksymalnie %d kluczy" pol "Okre?lono zbyt wiele kluczy. Dostępnych jest maksymalnie %d kluczy"
...@@ -1683,7 +1683,7 @@ ER_TOO_MANY_KEY_PARTS 42000 S1009 ...@@ -1683,7 +1683,7 @@ ER_TOO_MANY_KEY_PARTS 42000 S1009
hun "Tul sok kulcsdarabot definialt. Maximum %d resz engedelyezett" hun "Tul sok kulcsdarabot definialt. Maximum %d resz engedelyezett"
ita "Troppe parti di chiave specificate. Sono ammesse max %d parti" ita "Troppe parti di chiave specificate. Sono ammesse max %d parti"
jpn "索引のキー列指定が多すぎます。最大 %d 個までです。" jpn "索引のキー列指定が多すぎます。最大 %d 個までです。"
kor "너무 많은 키 부분(parts)들이 정의되어 있니다.. 최대 %d 부분이 가능함" kor "너무 많은 키 부분(parts)들이 정의되어 있니다.. 최대 %d 부분이 가능함"
nor "For mange nøkkeldeler spesifisert. Maks %d deler tillatt" nor "For mange nøkkeldeler spesifisert. Maks %d deler tillatt"
norwegian-ny "For mange nykkeldelar spesifisert. Maks %d delar 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" pol "Okre?lono zbyt wiele czę?ci klucza. Dostępnych jest maksymalnie %d czę?ci"
...@@ -2593,7 +2593,7 @@ ER_FIELD_SPECIFIED_TWICE 42000 ...@@ -2593,7 +2593,7 @@ ER_FIELD_SPECIFIED_TWICE 42000
hun "A(z) '%-.192s' mezot ketszer definialta" hun "A(z) '%-.192s' mezot ketszer definialta"
ita "Campo '%-.192s' specificato 2 volte" ita "Campo '%-.192s' specificato 2 volte"
jpn "列 '%-.192s' は2回指定されています。" jpn "列 '%-.192s' は2回指定されています。"
kor "칼럼 '%-.192s'는 두번 정의되어 있니다." kor "칼럼 '%-.192s'는 두번 정의되어 있니다."
nor "Feltet '%-.192s' er spesifisert to ganger" nor "Feltet '%-.192s' er spesifisert to ganger"
norwegian-ny "Feltet '%-.192s' er spesifisert to gangar" norwegian-ny "Feltet '%-.192s' er spesifisert to gangar"
pol "Field '%-.192s' specified twice" pol "Field '%-.192s' specified twice"
...@@ -2774,7 +2774,7 @@ ER_TOO_BIG_ROWSIZE 42000 ...@@ -2774,7 +2774,7 @@ ER_TOO_BIG_ROWSIZE 42000
hun "Tul nagy sormeret. A maximalis sormeret (nem szamolva a blob objektumokat) %ld. Nehany mezot meg kell valtoztatnia" hun "Tul nagy sormeret. A maximalis sormeret (nem szamolva a blob objektumokat) %ld. Nehany mezot meg kell valtoztatnia"
ita "Riga troppo grande. La massima grandezza di una riga, non contando i BLOB, e` %ld. Devi cambiare alcuni campi in BLOB" 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に変更する必要があります。" jpn "行サイズが大きすぎます。この表の最大行サイズは BLOB を含まずに %ld です。格納時のオーバーヘッドも含まれます(マニュアルを確認してください)。列をTEXTまたはBLOBに変更する必要があります。"
kor "너무 큰 row 사이즈입니다. BLOB를 계산하지 않고 최대 row 사이즈는 %ld입니다. 얼마간의 필드들을 BLOB로 바꾸셔야 겠군요.." kor "너무 큰 row 사이즈입니다. BLOB를 계산하지 않고 최대 row 사이즈는 %ld입니다. 일부열을 BLOB 또는 TEXT로 변경해야 합니다."
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" 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" 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" rus "Слишком большой размер записи. Максимальный размер строки, исключая поля BLOB, - %ld. Возможно, вам следует изменить тип некоторых полей на BLOB"
...@@ -3077,7 +3077,7 @@ ER_PASSWORD_NO_MATCH 28000 ...@@ -3077,7 +3077,7 @@ ER_PASSWORD_NO_MATCH 28000
hun "Nincs megegyezo sor a user tablaban" hun "Nincs megegyezo sor a user tablaban"
ita "Impossibile trovare la riga corrispondente nella tabella user" ita "Impossibile trovare la riga corrispondente nella tabella user"
jpn "ユーザーテーブルに該当するレコードが見つかりません。" jpn "ユーザーテーブルに該当するレコードが見つかりません。"
kor "사용자 테이블에서 일치하는 것을 찾을 수 없니다." kor "사용자 테이블에서 일치하는 것을 찾을 수 없니다."
por "Não pode encontrar nenhuma linha que combine na tabela usuário (user table)" 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" rum "Nu pot gasi nici o linie corespunzatoare in tabela utilizatorului"
rus "Невозможно отыскать подходящую запись в таблице пользователей" rus "Невозможно отыскать подходящую запись в таблице пользователей"
...@@ -3219,7 +3219,7 @@ ER_MIX_OF_GROUP_FUNC_AND_FIELDS 42000 ...@@ -3219,7 +3219,7 @@ ER_MIX_OF_GROUP_FUNC_AND_FIELDS 42000
hun "A GROUP mezok (MIN(),MAX(),COUNT()...) kevert hasznalata nem lehetseges GROUP BY hivatkozas nelkul" hun "A GROUP mezok (MIN(),MAX(),COUNT()...) kevert hasznalata nem lehetseges GROUP BY hivatkozas nelkul"
ita "Il mescolare funzioni di aggregazione (MIN(),MAX(),COUNT()...) e non e` illegale se non c'e` una clausula GROUP BY" 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(),...)と通常の列を同時に使用できません。" jpn "GROUP BY句が無い場合、集計関数(MIN(),MAX(),COUNT(),...)と通常の列を同時に使用できません。"
kor "Mixing of GROUP 칼럼s (MIN(),MAX(),COUNT(),...) with no GROUP 칼럼s is illegal if there is no GROUP BY clause" kor "GROUP BY 절 없이 혼합된 GROUP 함수 (MIN(),MAX(),COUNT(),...) 를 사용할 수 없습니다."
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)" 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" 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" rus "Одновременное использование сгруппированных (GROUP) столбцов (MIN(),MAX(),COUNT(),...) с несгруппированными столбцами является некорректным, если в выражении есть GROUP BY"
...@@ -3668,6 +3668,7 @@ ER_TOO_LONG_STRING 42000 ...@@ -3668,6 +3668,7 @@ ER_TOO_LONG_STRING 42000
est "Tulemus on pikem kui lubatud 'max_allowed_packet' muutujaga" est "Tulemus on pikem kui lubatud 'max_allowed_packet' muutujaga"
fre "La chaîne résultat est plus grande que 'max_allowed_packet'" fre "La chaîne résultat est plus grande que 'max_allowed_packet'"
ger "Ergebnis-String ist länger als 'max_allowed_packet' Bytes" ger "Ergebnis-String ist länger als 'max_allowed_packet' Bytes"
kor "결과 문자열이 설정된 max_allowed_packet 값보다 큽니다."
hindi "रिजल्ट स्ट्रिंग 'max_allowed_packet' से लंबा है" hindi "रिजल्ट स्ट्रिंग 'max_allowed_packet' से लंबा है"
hun "Ez eredmeny sztring nagyobb, mint a lehetseges maximum: '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'" ita "La stringa di risposta e` piu` lunga di 'max_allowed_packet'"
...@@ -3689,6 +3690,7 @@ ER_TABLE_CANT_HANDLE_BLOB 42000 ...@@ -3689,6 +3690,7 @@ ER_TABLE_CANT_HANDLE_BLOB 42000
ger "Der verwendete Tabellentyp (%s) unterstützt keine BLOB- und TEXT-Felder" ger "Der verwendete Tabellentyp (%s) unterstützt keine BLOB- und TEXT-Felder"
hindi "स्टोरेज इंजन %s BLOB/TEXT कॉलम्स को सपोर्ट नहीं करता" hindi "स्टोरेज इंजन %s BLOB/TEXT कॉलम्स को सपोर्ट नहीं करता"
hun "A hasznalt tabla tipus (%s) nem tamogatja a BLOB/TEXT mezoket" 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" ita "Il tipo di tabella usata (%s) non supporta colonne di tipo BLOB/TEXT"
por "Tipo de tabela usado (%s) não permite colunas BLOB/TEXT" 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" rum "Tipul de tabela folosit (%s) nu suporta coloane de tip BLOB/TEXT"
...@@ -3706,6 +3708,7 @@ ER_TABLE_CANT_HANDLE_AUTO_INCREMENT 42000 ...@@ -3706,6 +3708,7 @@ ER_TABLE_CANT_HANDLE_AUTO_INCREMENT 42000
fre "Ce type de table (%s) ne supporte pas les colonnes AUTO_INCREMENT" fre "Ce type de table (%s) ne supporte pas les colonnes AUTO_INCREMENT"
ger "Der verwendete Tabellentyp (%s) unterstützt keine AUTO_INCREMENT-Felder" ger "Der verwendete Tabellentyp (%s) unterstützt keine AUTO_INCREMENT-Felder"
hindi "स्टोरेज इंजन %s AUTO_INCREMENT कॉलम्स को सपोर्ट नहीं करता" hindi "स्टोरेज इंजन %s AUTO_INCREMENT कॉलम्स को सपोर्ट नहीं करता"
kor "스토리지 엔진 (%s)는 AUTO_INCREMENT를 지원하지 않습니다."
hun "A hasznalt tabla tipus (%s) nem tamogatja az AUTO_INCREMENT tipusu mezoket" 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" ita "Il tipo di tabella usata (%s) non supporta colonne di tipo AUTO_INCREMENT"
por "Tipo de tabela usado (%s) não permite colunas AUTO_INCREMENT" por "Tipo de tabela usado (%s) não permite colunas AUTO_INCREMENT"
......
...@@ -6193,9 +6193,10 @@ ha_innobase::open(const char* name, int, uint) ...@@ -6193,9 +6193,10 @@ ha_innobase::open(const char* name, int, uint)
innobase_copy_frm_flags_from_table_share(ib_table, table->s); innobase_copy_frm_flags_from_table_share(ib_table, table->s);
const bool bk_thread = THDVAR(thd, background_thread);
/* No point to init any statistics if tablespace is still encrypted /* No point to init any statistics if tablespace is still encrypted
or if table is being opened by background thread */ or if table is being opened by background thread */
if (THDVAR(thd, background_thread)) { if (bk_thread) {
} else if (ib_table->is_readable()) { } else if (ib_table->is_readable()) {
dict_stats_init(ib_table); dict_stats_init(ib_table);
} else { } else {
...@@ -6394,11 +6395,14 @@ ha_innobase::open(const char* name, int, uint) ...@@ -6394,11 +6395,14 @@ ha_innobase::open(const char* name, int, uint)
} }
} }
if (table && m_prebuilt->table) { ut_ad(!m_prebuilt->table
ut_ad(table->versioned() == m_prebuilt->table->versioned()); || table->versioned() == m_prebuilt->table->versioned());
if (!bk_thread) {
info(HA_STATUS_NO_LOCK | HA_STATUS_VARIABLE | HA_STATUS_CONST
| HA_STATUS_OPEN);
} }
info(HA_STATUS_NO_LOCK | HA_STATUS_VARIABLE | HA_STATUS_CONST | HA_STATUS_OPEN);
DBUG_RETURN(0); DBUG_RETURN(0);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment