mirror of
https://github.com/MariaDB/server.git
synced 2025-04-18 05:05:32 +02:00
Merge 10.9 into 10.10
This commit is contained in:
commit
c0a6ce61d8
72 changed files with 515 additions and 2967 deletions
cmake/os
config.h.cmakeinclude
mysql-test/suite
encryption
innodb
mysys
plugin/disks
sql
backup.ccevent_data_objects.ccevents.ccitem_func.ccitem_strfunc.cclock.cclog.hlog_event.ccmdl.ccmysqld.ccsp_head.ccsql_acl.ccsql_cache.ccsql_class.ccsql_class.hsql_lex.ccsql_partition_admin.ccsql_plugin.ccsql_reload.ccsql_rename.ccsql_sequence.ccsql_table.ccsql_trigger.ccsys_vars.ccwsrep_allowlist_service.ccwsrep_binlog.ccwsrep_check_opts.ccwsrep_client_service.ccwsrep_high_priority_service.ccwsrep_mysqld.hwsrep_on.hwsrep_priv.hwsrep_schema.ccwsrep_sst.ccwsrep_thd.ccwsrep_var.cc
storage
connect
innobase
btr
buf
dict
fsp
handler
include
log
page
row
|
@ -63,6 +63,10 @@ SET(HAVE_GETHOSTBYADDR_R CACHE INTERNAL "")
|
|||
SET(HAVE_GETHRTIME CACHE INTERNAL "")
|
||||
SET(HAVE_GETPAGESIZE CACHE INTERNAL "")
|
||||
SET(HAVE_GETPASS CACHE INTERNAL "")
|
||||
SET(HAVE_GETMNTENT CACHE INTERNAL "")
|
||||
SET(HAVE_GETMNTENT_IN_SYS_MNTAB CACHE INTERNAL "")
|
||||
SET(HAVE_GETMNTINFO CACHE INTERNAL "")
|
||||
SET(HAVE_GETMNTINFO64 CACHE INTERNAL "")
|
||||
SET(HAVE_GETPASSPHRASE CACHE INTERNAL "")
|
||||
SET(HAVE_GETPWNAM CACHE INTERNAL "")
|
||||
SET(HAVE_GETPWUID CACHE INTERNAL "")
|
||||
|
@ -145,6 +149,7 @@ SET(HAVE_SELECT 1 CACHE INTERNAL "")
|
|||
SET(HAVE_SELECT_H CACHE INTERNAL "")
|
||||
SET(HAVE_SETENV CACHE INTERNAL "")
|
||||
SET(HAVE_SETLOCALE 1 CACHE INTERNAL "")
|
||||
SET(HAVE_SETMNTENT CACHE INTERNAL "")
|
||||
SET(HAVE_SIGACTION CACHE INTERNAL "")
|
||||
SET(HAVE_SIGINT 1 CACHE INTERNAL "")
|
||||
SET(HAVE_SIGPIPE CACHE INTERNAL "")
|
||||
|
|
|
@ -34,6 +34,11 @@
|
|||
#cmakedefine HAVE_FLOAT_H 1
|
||||
#cmakedefine HAVE_FNMATCH_H 1
|
||||
#cmakedefine HAVE_FPU_CONTROL_H 1
|
||||
#cmakedefine HAVE_GETMNTENT 1
|
||||
#cmakedefine HAVE_GETMNTENT_IN_SYS_MNTAB 1
|
||||
#cmakedefine HAVE_GETMNTINFO 1
|
||||
#cmakedefine HAVE_GETMNTINFO64 1
|
||||
#cmakedefine HAVE_GETMNTINFO_TAKES_statvfs 1
|
||||
#cmakedefine HAVE_GRP_H 1
|
||||
#cmakedefine HAVE_IA64INTRIN_H 1
|
||||
#cmakedefine HAVE_IEEEFP_H 1
|
||||
|
@ -209,6 +214,7 @@
|
|||
#cmakedefine HAVE_SELECT 1
|
||||
#cmakedefine HAVE_SETENV 1
|
||||
#cmakedefine HAVE_SETLOCALE 1
|
||||
#cmakedefine HAVE_SETMNTENT 1
|
||||
#cmakedefine HAVE_SETUPTERM 1
|
||||
#cmakedefine HAVE_SIGSET 1
|
||||
#cmakedefine HAVE_SIGACTION 1
|
||||
|
|
|
@ -17,44 +17,46 @@
|
|||
#define WSREP_INCLUDED
|
||||
|
||||
#include <my_config.h>
|
||||
#include "log.h"
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
|
||||
#define IF_WSREP(A,B) A
|
||||
|
||||
#define DBUG_ASSERT_IF_WSREP(A) DBUG_ASSERT(A)
|
||||
|
||||
#define WSREP_MYSQL_DB (char *)"mysql"
|
||||
extern ulong wsrep_debug; // wsrep_mysqld.cc
|
||||
extern void WSREP_LOG(void (*fun)(const char* fmt, ...), const char* fmt, ...);
|
||||
|
||||
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_) \
|
||||
if (WSREP_ON && WSREP(thd) && \
|
||||
wsrep_to_isolation_begin(thd, db_, table_, table_list_)) \
|
||||
goto wsrep_error_label;
|
||||
#define WSREP_DEBUG(...) \
|
||||
if (wsrep_debug) WSREP_LOG(sql_print_information, ##__VA_ARGS__)
|
||||
#define WSREP_INFO(...) WSREP_LOG(sql_print_information, ##__VA_ARGS__)
|
||||
#define WSREP_WARN(...) WSREP_LOG(sql_print_warning, ##__VA_ARGS__)
|
||||
#define WSREP_ERROR(...) WSREP_LOG(sql_print_error, ##__VA_ARGS__)
|
||||
#define WSREP_UNKNOWN(fmt, ...) WSREP_ERROR("UNKNOWN: " fmt, ##__VA_ARGS__)
|
||||
|
||||
#define WSREP_TO_ISOLATION_BEGIN_CREATE(db_, table_, table_list_, create_info_) \
|
||||
if (WSREP_ON && WSREP(thd) && \
|
||||
wsrep_to_isolation_begin(thd, db_, table_, \
|
||||
table_list_, nullptr, nullptr, create_info_)) \
|
||||
goto wsrep_error_label;
|
||||
#define WSREP_LOG_CONFLICT_THD(thd, role) \
|
||||
WSREP_INFO("%s: \n " \
|
||||
" THD: %lu, mode: %s, state: %s, conflict: %s, seqno: %lld\n " \
|
||||
" SQL: %s", \
|
||||
role, \
|
||||
thd_get_thread_id(thd), \
|
||||
wsrep_thd_client_mode_str(thd), \
|
||||
wsrep_thd_client_state_str(thd), \
|
||||
wsrep_thd_transaction_state_str(thd), \
|
||||
wsrep_thd_trx_seqno(thd), \
|
||||
wsrep_thd_query(thd) \
|
||||
);
|
||||
|
||||
#define WSREP_TO_ISOLATION_BEGIN_ALTER(db_, table_, table_list_, alter_info_, fk_tables_, create_info_) \
|
||||
if (WSREP(thd) && \
|
||||
wsrep_to_isolation_begin(thd, db_, table_, \
|
||||
table_list_, alter_info_, \
|
||||
fk_tables_, create_info_))
|
||||
#define WSREP_LOG_CONFLICT(bf_thd, victim_thd, bf_abort) \
|
||||
if (wsrep_debug || wsrep_log_conflicts) \
|
||||
{ \
|
||||
WSREP_INFO("cluster conflict due to %s for threads:", \
|
||||
(bf_abort) ? "high priority abort" : "certification failure" \
|
||||
); \
|
||||
if (bf_thd) WSREP_LOG_CONFLICT_THD(bf_thd, "Winning thread"); \
|
||||
if (victim_thd) WSREP_LOG_CONFLICT_THD(victim_thd, "Victim thread"); \
|
||||
WSREP_INFO("context: %s:%d", __FILE__, __LINE__); \
|
||||
}
|
||||
|
||||
/*
|
||||
Checks if lex->no_write_to_binlog is set for statements that use LOCAL or
|
||||
NO_WRITE_TO_BINLOG.
|
||||
*/
|
||||
#define WSREP_TO_ISOLATION_BEGIN_WRTCHK(db_, table_, table_list_) \
|
||||
if (WSREP(thd) && !thd->lex->no_write_to_binlog && \
|
||||
wsrep_to_isolation_begin(thd, db_, table_, table_list_)) \
|
||||
goto wsrep_error_label;
|
||||
|
||||
#define WSREP_SYNC_WAIT(thd_, before_) \
|
||||
{ if (WSREP_CLIENT(thd_) && \
|
||||
wsrep_sync_wait(thd_, before_)) goto wsrep_error_label; }
|
||||
|
||||
#else /* !WITH_WSREP */
|
||||
|
||||
|
@ -62,13 +64,11 @@
|
|||
* (e.g. embedded) */
|
||||
|
||||
#define IF_WSREP(A,B) B
|
||||
//#define DBUG_ASSERT_IF_WSREP(A)
|
||||
#define WSREP_DEBUG(...)
|
||||
//#define WSREP_INFO(...)
|
||||
//#define WSREP_WARN(...)
|
||||
#define WSREP_ERROR(...)
|
||||
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_) do { } while(0)
|
||||
#define WSREP_TO_ISOLATION_BEGIN_ALTER(db_, table_, table_list_, alter_info_, fk_tables_, create_info_)
|
||||
#define WSREP_TO_ISOLATION_BEGIN_CREATE(db_, table_, table_list_, create_info_)
|
||||
#define WSREP_TO_ISOLATION_BEGIN_WRTCHK(db_, table_, table_list_)
|
||||
#define WSREP_SYNC_WAIT(thd_, before_)
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
#endif /* WSREP_INCLUDED */
|
||||
|
|
|
@ -8,6 +8,7 @@ call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed r
|
|||
call mtr.add_suppression("InnoDB: Failed to read page .* from file '.*'");
|
||||
call mtr.add_suppression("InnoDB: OPT_PAGE_CHECKSUM mismatch");
|
||||
call mtr.add_suppression("InnoDB: Set innodb_force_recovery=1 to ignore corruption");
|
||||
call mtr.add_suppression("InnoDB: (Unable to apply log to|Discarding log for) corrupted page ");
|
||||
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
|
||||
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
|
||||
call mtr.add_suppression("\\[ERROR\\] InnoDB: Cannot decrypt \\[page id: space=");
|
||||
|
|
|
@ -9,6 +9,7 @@ call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed r
|
|||
call mtr.add_suppression("InnoDB: Failed to read page [123] from file '.*test.t1\\.ibd': Table is compressed or encrypted but uncompress or decrypt failed");
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=\\d+, page number=3\\] in file '.*test.t1\\.ibd' cannot be decrypted");
|
||||
call mtr.add_suppression("InnoDB: Table in tablespace \\d+ encrypted. However key management plugin or used key_version \\d+ is not found or used encryption algorithm or method does not match. Can't continue opening the table.");
|
||||
call mtr.add_suppression("InnoDB: (Unable to apply log to|Discarding log for) corrupted page ");
|
||||
--enable_query_log
|
||||
|
||||
let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
|
||||
|
|
|
@ -17,6 +17,7 @@ call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed r
|
|||
call mtr.add_suppression("InnoDB: Failed to read page .* from file '.*'");
|
||||
call mtr.add_suppression("InnoDB: OPT_PAGE_CHECKSUM mismatch");
|
||||
call mtr.add_suppression("InnoDB: Set innodb_force_recovery=1 to ignore corruption");
|
||||
call mtr.add_suppression("InnoDB: (Unable to apply log to|Discarding log for) corrupted page ");
|
||||
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
|
||||
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
|
||||
# for innodb_checksum_algorithm=full_crc32 only
|
||||
|
|
|
@ -51,25 +51,39 @@ id msg
|
|||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
id INT PRIMARY KEY,
|
||||
f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT NOT NULL,
|
||||
msg VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_bin,
|
||||
unique index(msg)
|
||||
msg_1 VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_bin,
|
||||
unique index(f1, msg, f2, msg_1, f3),
|
||||
unique index(f1, msg_1, f2, msg, f3),
|
||||
unique index(f1, msg, f3, msg_1, f2),
|
||||
unique index(f1, msg_1, f3, msg, f2),
|
||||
unique index(f2, msg_1, f1, msg, f3),
|
||||
unique index(f2, msg, f3, msg_1, f1),
|
||||
unique index(f3, f2, msg, msg_1, f1),
|
||||
unique index(f3, msg, msg_1, f1, f2)
|
||||
) ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES (1, 'aaa');
|
||||
INSERT INTO t1 VALUES (1, 1, 1, 1, 'aaa', 'aaa');
|
||||
SET DEBUG_DBUG="+d,create_index_fail";
|
||||
SET DEBUG_SYNC="innodb_inplace_alter_table_enter SIGNAL con1_go WAIT_FOR alter_signal";
|
||||
ALTER TABLE t1 MODIFY msg VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci, ALGORITHM=NOCOPY;
|
||||
ALTER TABLE t1 MODIFY msg VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci, MODIFY msg_1 VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci, ALGORITHM=NOCOPY;
|
||||
connection con1;
|
||||
SET DEBUG_SYNC="now WAIT_FOR con1_go";
|
||||
BEGIN;
|
||||
SELECT * FROM t1;
|
||||
id msg
|
||||
1 aaa
|
||||
id f1 f2 f3 msg msg_1
|
||||
1 1 1 1 aaa aaa
|
||||
SET DEBUG_SYNC="now SIGNAL alter_signal";
|
||||
connection default;
|
||||
ERROR 23000: Duplicate entry '' for key '*UNKNOWN*'
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
connection con1;
|
||||
rollback;
|
||||
INSERT INTO t1 VALUES(2, 'bbb');
|
||||
INSERT INTO t1 VALUES(2, 2, 2, 2, 'bbb', 'bbb');
|
||||
disconnect con1;
|
||||
connection default;
|
||||
SET DEBUG_SYNC=reset;
|
||||
|
@ -77,11 +91,22 @@ SHOW CREATE TABLE t1;
|
|||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`id` int(11) NOT NULL,
|
||||
`f1` int(11) NOT NULL,
|
||||
`f2` int(11) NOT NULL,
|
||||
`f3` int(11) NOT NULL,
|
||||
`msg` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
|
||||
`msg_1` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `msg` (`msg`)
|
||||
UNIQUE KEY `f1` (`f1`,`msg`,`f2`,`msg_1`,`f3`),
|
||||
UNIQUE KEY `f1_2` (`f1`,`msg_1`,`f2`,`msg`,`f3`),
|
||||
UNIQUE KEY `f1_3` (`f1`,`msg`,`f3`,`msg_1`,`f2`),
|
||||
UNIQUE KEY `f1_4` (`f1`,`msg_1`,`f3`,`msg`,`f2`),
|
||||
UNIQUE KEY `f2` (`f2`,`msg_1`,`f1`,`msg`,`f3`),
|
||||
UNIQUE KEY `f2_2` (`f2`,`msg`,`f3`,`msg_1`,`f1`),
|
||||
UNIQUE KEY `f3` (`f3`,`f2`,`msg`,`msg_1`,`f1`),
|
||||
UNIQUE KEY `f3_2` (`f3`,`msg`,`msg_1`,`f1`,`f2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES(3, 'ccc');
|
||||
INSERT INTO t1 VALUES(3, 3, 3, 3, 'ccc', 'ccc');
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(id INT PRIMARY KEY, msg VARCHAR(100),
|
||||
msg_1 VARCHAR(100) AS (msg) VIRTUAL,
|
||||
|
|
|
@ -17,4 +17,8 @@ pk c
|
|||
1 sql
|
||||
SELECT * FROM t1 WHERE pk = 12;
|
||||
ERROR HY000: Index for table 't1' is corrupt; try to repair it
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check Warning InnoDB: The B-tree of index PRIMARY is corrupted.
|
||||
test.t1 check error Corrupt
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -78,15 +78,26 @@ DROP TABLE t1;
|
|||
|
||||
CREATE TABLE t1 (
|
||||
id INT PRIMARY KEY,
|
||||
f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT NOT NULL,
|
||||
msg VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_bin,
|
||||
unique index(msg)
|
||||
msg_1 VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_bin,
|
||||
unique index(f1, msg, f2, msg_1, f3),
|
||||
unique index(f1, msg_1, f2, msg, f3),
|
||||
unique index(f1, msg, f3, msg_1, f2),
|
||||
unique index(f1, msg_1, f3, msg, f2),
|
||||
unique index(f2, msg_1, f1, msg, f3),
|
||||
unique index(f2, msg, f3, msg_1, f1),
|
||||
unique index(f3, f2, msg, msg_1, f1),
|
||||
unique index(f3, msg, msg_1, f1, f2)
|
||||
) ENGINE=INNODB;
|
||||
|
||||
INSERT INTO t1 VALUES (1, 'aaa');
|
||||
INSERT INTO t1 VALUES (1, 1, 1, 1, 'aaa', 'aaa');
|
||||
SET DEBUG_DBUG="+d,create_index_fail";
|
||||
SET DEBUG_SYNC="innodb_inplace_alter_table_enter SIGNAL con1_go WAIT_FOR alter_signal";
|
||||
--send
|
||||
ALTER TABLE t1 MODIFY msg VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci, ALGORITHM=NOCOPY;
|
||||
ALTER TABLE t1 MODIFY msg VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci, MODIFY msg_1 VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci, ALGORITHM=NOCOPY;
|
||||
|
||||
connection con1;
|
||||
SET DEBUG_SYNC="now WAIT_FOR con1_go";
|
||||
|
@ -96,14 +107,15 @@ SET DEBUG_SYNC="now SIGNAL alter_signal";
|
|||
connection default;
|
||||
--error ER_DUP_ENTRY
|
||||
reap;
|
||||
CHECK TABLE t1;
|
||||
connection con1;
|
||||
rollback;
|
||||
INSERT INTO t1 VALUES(2, 'bbb');
|
||||
INSERT INTO t1 VALUES(2, 2, 2, 2, 'bbb', 'bbb');
|
||||
disconnect con1;
|
||||
connection default;
|
||||
SET DEBUG_SYNC=reset;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES(3, 'ccc');
|
||||
INSERT INTO t1 VALUES(3, 3, 3, 3, 'ccc', 'ccc');
|
||||
DROP TABLE t1;
|
||||
|
||||
# Inplace Collation change is not supported for virtual column
|
||||
|
|
|
@ -6,6 +6,7 @@ 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: Database page corruption on disk or a failed read of file '.*test.t1\\.ibd' page");
|
||||
call mtr.add_suppression("InnoDB: Failed to read page 3 from file '.*test.t1\\.ibd': Page read from tablespace is corrupted.");
|
||||
call mtr.add_suppression("InnoDB: (Unable to apply log to|Discarding log for) corrupted page .*, page number=3\\]");
|
||||
call mtr.add_suppression("Table test/t1 is corrupted. Please drop the table and recreate\\.");
|
||||
call mtr.add_suppression("InnoDB: File '.*test/t1\\.ibd' is corrupted");
|
||||
call mtr.add_suppression("InnoDB: A long wait .* was observed for dict_sys");
|
||||
|
|
|
@ -4,12 +4,14 @@
|
|||
--disable_query_log
|
||||
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed read of file '.*test.t1\\.ibd' page");
|
||||
call mtr.add_suppression("\\[ERROR\\] InnoDB: Failed to read page 19 from file '.*test.t1\\.ibd': Page read from tablespace is corrupted\\.");
|
||||
call mtr.add_suppression("InnoDB: (Unable to apply log to|Discarding log for) corrupted page .*, page number=19\\]");
|
||||
call mtr.add_suppression("\\[ERROR\\] InnoDB: Plugin initialization aborted at srv0start\\.cc.* with error Data structure corruption");
|
||||
call mtr.add_suppression("\\[ERROR\\] Plugin 'InnoDB' (init function|registration)");
|
||||
call mtr.add_suppression("\\[ERROR\\] InnoDB: We detected index corruption");
|
||||
call mtr.add_suppression("\\[ERROR\\] (mysqld|mariadbd).*: Index for table 't1' is corrupt; try to repair it");
|
||||
call mtr.add_suppression("InnoDB: btr_pcur_open_low level: 0 table: `test`\\.`t1` index: `PRIMARY`");
|
||||
call mtr.add_suppression("InnoDB: File '.*test/t1\\.ibd' is corrupted");
|
||||
call mtr.add_suppression("InnoDB: In page .* of index `PRIMARY` of table `test`\\.`t1`");
|
||||
--enable_query_log
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, c CHAR(255))ENGINE=InnoDB STATS_PERSISTENT=0;
|
||||
|
||||
|
@ -53,6 +55,7 @@ let $restart_parameters=--innodb-force-recovery=2;
|
|||
SELECT * FROM t1 WHERE PK = 1;
|
||||
--error ER_NOT_KEYFILE
|
||||
SELECT * FROM t1 WHERE pk = 12;
|
||||
CHECK TABLE t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
let $restart_parameters=;
|
||||
|
|
|
@ -111,7 +111,7 @@ my_bool my_gethwaddr(uchar *to)
|
|||
for (i= 0; res && i < ifc.ifc_len / sizeof(ifr[0]); i++)
|
||||
{
|
||||
#if !defined(_AIX) || !defined(__linux__)
|
||||
#if defined(__linux___)
|
||||
#if defined(__linux__)
|
||||
#define HWADDR_DATA ifr[i].ifr_hwaddr.sa_data
|
||||
#else
|
||||
#define HWADDR_DATA ifr[i].ifr_hwaddr
|
||||
|
|
|
@ -1,7 +1,24 @@
|
|||
INCLUDE (CheckIncludeFiles)
|
||||
CHECK_INCLUDE_FILES ("sys/statvfs.h;mntent.h" INFO_HEADERS LANGUAGE CXX)
|
||||
|
||||
IF (INFO_HEADERS)
|
||||
CHECK_SYMBOL_EXISTS (getmntent "mntent.h" HAVE_GETMNTENT)
|
||||
CHECK_SYMBOL_EXISTS (getmntent "sys/mnttab.h" HAVE_GETMNTENT_IN_SYS_MNTAB)
|
||||
CHECK_SYMBOL_EXISTS (setmntent "mntent.h" HAVE_SETMNTENT)
|
||||
CHECK_SYMBOL_EXISTS (getmntinfo "sys/types.h;sys/mount.h" HAVE_GETMNTINFO)
|
||||
CHECK_SYMBOL_EXISTS (getmntinfo64 "sys/types.h;sys/mount.h" HAVE_GETMNTINFO64)
|
||||
|
||||
IF (HAVE_GETMNTINFO)
|
||||
CHECK_CXX_SOURCE_COMPILES("
|
||||
#include <sys/types.h>
|
||||
#include <sys/statvfs.h>
|
||||
int main()
|
||||
{
|
||||
struct statvfs *s;
|
||||
return getmntinfo(&s, ST_WAIT);
|
||||
}
|
||||
" HAVE_GETMNTINFO_TAKES_statvfs)
|
||||
ENDIF()
|
||||
IF (HAVE_GETMNTENT OR HAVE_GETMNTENT_IN_SYS_MNTAB OR
|
||||
HAVE_GETMNTINFO OR HAVE_GETMNTINFO64)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql)
|
||||
MYSQL_ADD_PLUGIN(DISKS information_schema_disks.cc MODULE_ONLY RECOMPILE_FOR_EMBEDDED)
|
||||
ENDIF()
|
||||
|
|
|
@ -17,11 +17,45 @@
|
|||
#include <my_global.h>
|
||||
#include <sys/statvfs.h>
|
||||
#include <sys/types.h>
|
||||
#if defined(HAVE_GETMNTENT)
|
||||
#include <mntent.h>
|
||||
#elif !defined(HAVE_GETMNTINFO_TAKES_statvfs)
|
||||
/* getmntinfo (the not NetBSD variants) */
|
||||
#include <sys/param.h>
|
||||
#include <sys/ucred.h>
|
||||
#include <sys/mount.h>
|
||||
#endif
|
||||
#if defined(HAVE_GETMNTENT_IN_SYS_MNTAB)
|
||||
#include <sys/mnttab.h>
|
||||
#define HAVE_GETMNTENT
|
||||
#endif
|
||||
#include <sql_class.h>
|
||||
#include <sql_i_s.h>
|
||||
#include <sql_acl.h> /* check_global_access() */
|
||||
|
||||
/*
|
||||
This intends to support *BSD's, macOS, Solaris, AIX, HP-UX, and Linux.
|
||||
|
||||
specificly:
|
||||
FreeBSD/OpenBSD/DragonFly (statfs) NetBSD (statvfs) uses getmntinfo().
|
||||
macOS uses getmntinfo64().
|
||||
Linux can use getmntent_r(), but we've just used getmntent for simplification.
|
||||
Linux/Solaris/AIX/HP-UX uses setmntent()/getmntent().
|
||||
Solaris uses getmntent() with a diffent prototype, return structure, and
|
||||
no setmntent(fopen instead)
|
||||
*/
|
||||
#if defined(HAVE_GETMNTINFO_TAKES_statvfs) || defined(HAVE_GETMNTENT)
|
||||
typedef struct statvfs st_info;
|
||||
#elif defined(HAVE_GETMNTINFO64)
|
||||
typedef struct statfs64 st_info;
|
||||
#else // GETMNTINFO
|
||||
typedef struct statfs st_info;
|
||||
#endif
|
||||
#ifndef MOUNTED
|
||||
/* HPUX - https://docstore.mik.ua/manuals/hp-ux/en/B2355-60130/getmntent.3X.html */
|
||||
#define MOUNTED MNT_MNTTAB
|
||||
#endif
|
||||
|
||||
bool schema_table_store_record(THD *thd, TABLE *table);
|
||||
|
||||
|
||||
|
@ -41,24 +75,40 @@ ST_FIELD_INFO disks_table_fields[]=
|
|||
};
|
||||
|
||||
|
||||
|
||||
int disks_table_add_row(THD* pThd,
|
||||
TABLE* pTable,
|
||||
const char* zDisk,
|
||||
const char* zPath,
|
||||
const struct statvfs& info)
|
||||
static int disks_table_add_row_stat(
|
||||
THD* pThd,
|
||||
TABLE* pTable,
|
||||
const char* zDisk,
|
||||
const char* zPath,
|
||||
const st_info &info)
|
||||
{
|
||||
// From: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/statvfs.h.html
|
||||
// and same for statfs:
|
||||
// From: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/statfs.2.html#//apple_ref/doc/man/2/statfs
|
||||
// and: https://www.freebsd.org/cgi/man.cgi?query=statfs&sektion=2&apropos=0&manpath=FreeBSD+13.1-RELEASE+and+Ports
|
||||
//
|
||||
// f_frsize Fundamental file system block size.
|
||||
// f_bsize Fundamental file system block size.
|
||||
// f_blocks Total number of blocks on file system in units of f_frsize.
|
||||
// f_bfree Total number of free blocks.
|
||||
// f_bavail Number of free blocks available to non-privileged process.
|
||||
ulong block_size= (ulong) info.f_bsize;
|
||||
|
||||
ulonglong total = ((ulonglong)info.f_frsize * info.f_blocks) / 1024;
|
||||
ulonglong used = ((ulonglong)info.f_frsize *
|
||||
ulonglong total = ((ulonglong) block_size * info.f_blocks) / 1024;
|
||||
ulonglong used = ((ulonglong) block_size *
|
||||
(info.f_blocks - info.f_bfree)) / 1024;
|
||||
ulonglong avail = ((ulonglong)info.f_frsize * info.f_bavail) / 1024;
|
||||
ulonglong avail = ((ulonglong) block_size * info.f_bavail) / 1024;
|
||||
|
||||
/* skip filesystems that don't have any space */
|
||||
if (!info.f_blocks)
|
||||
return 0;
|
||||
|
||||
/* skip RO mounted filesystems */
|
||||
#if defined(HAVE_GETMNTINFO_TAKES_statvfs) || defined(HAVE_GETMNTENT)
|
||||
if (info.f_flag & ST_RDONLY)
|
||||
#else
|
||||
if (info.f_flags & MNT_RDONLY)
|
||||
#endif
|
||||
return 0;
|
||||
|
||||
pTable->field[0]->store(zDisk, strlen(zDisk), system_charset_info);
|
||||
pTable->field[1]->store(zPath, strlen(zPath), system_charset_info);
|
||||
|
@ -70,71 +120,147 @@ int disks_table_add_row(THD* pThd,
|
|||
return (schema_table_store_record(pThd, pTable) != 0) ? 1 : 0;
|
||||
}
|
||||
|
||||
int disks_table_add_row(THD* pThd, TABLE* pTable, const char* zDisk, const char* zPath)
|
||||
|
||||
#ifdef HAVE_GETMNTENT
|
||||
static int disks_table_add_row(THD* pThd, TABLE* pTable, const char* zDisk, const char* zPath)
|
||||
{
|
||||
int rv = 0;
|
||||
|
||||
struct statvfs info;
|
||||
st_info info;
|
||||
|
||||
if (statvfs(zPath, &info) == 0) // We ignore failures.
|
||||
{
|
||||
rv = disks_table_add_row(pThd, pTable, zDisk, zPath, info);
|
||||
rv = disks_table_add_row_stat(pThd, pTable, zDisk, zPath, info);
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
#endif
|
||||
|
||||
int disks_fill_table(THD* pThd, TABLE_LIST* pTables, Item* pCond)
|
||||
|
||||
#ifdef HAVE_GETMNTINFO
|
||||
static int disks_fill_table(THD* pThd, TABLE_LIST* pTables, Item* pCond)
|
||||
{
|
||||
int rv = 1;
|
||||
TABLE* pTable = pTables->table;
|
||||
st_info *s;
|
||||
int count, rv= 0;
|
||||
TABLE* pTable= pTables->table;
|
||||
|
||||
if (check_global_access(pThd, FILE_ACL, true))
|
||||
return 0;
|
||||
return 0;
|
||||
|
||||
FILE* pFile = setmntent("/etc/mtab", "r");
|
||||
#if defined(HAVE_GETMNTINFO_TAKES_statvfs)
|
||||
count= getmntinfo(&s, ST_WAIT);
|
||||
#elif defined(HAVE_GETMNTINFO64)
|
||||
count= getmntinfo64(&s, MNT_WAIT);
|
||||
#else
|
||||
count= getmntinfo(&s, MNT_WAIT);
|
||||
#endif
|
||||
if (count == 0)
|
||||
return 1;
|
||||
|
||||
if (pFile)
|
||||
while (count && rv == 0)
|
||||
{
|
||||
const size_t BUFFER_SIZE = 4096; // 4K should be sufficient.
|
||||
|
||||
char* pBuffer = new (std::nothrow) char [BUFFER_SIZE];
|
||||
|
||||
if (pBuffer)
|
||||
{
|
||||
rv = 0;
|
||||
|
||||
struct mntent ent;
|
||||
struct mntent* pEnt;
|
||||
|
||||
while ((rv == 0) && (pEnt = getmntent_r(pFile, &ent, pBuffer, BUFFER_SIZE)))
|
||||
{
|
||||
// We only report the ones that refer to physical disks.
|
||||
if (pEnt->mnt_fsname[0] == '/')
|
||||
{
|
||||
rv = disks_table_add_row(pThd, pTable, pEnt->mnt_fsname, pEnt->mnt_dir);
|
||||
}
|
||||
}
|
||||
|
||||
delete [] pBuffer;
|
||||
}
|
||||
else
|
||||
{
|
||||
rv = 1;
|
||||
}
|
||||
|
||||
endmntent(pFile);
|
||||
rv= disks_table_add_row_stat(pThd, pTable, s->f_mntfromname, s->f_mntonname, *s);
|
||||
count--;
|
||||
s++;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
#else /* HAVE_GETMNTINFO */
|
||||
|
||||
static mysql_mutex_t m_getmntent;
|
||||
|
||||
/* HAVE_GETMNTENT */
|
||||
static int disks_fill_table(THD* pThd, TABLE_LIST* pTables, Item* pCond)
|
||||
{
|
||||
int rv= 1;
|
||||
#ifdef HAVE_SETMNTENT
|
||||
struct mntent* pEnt;
|
||||
#else
|
||||
struct mnttab mnttabent, *pEnt= &mnttabent;
|
||||
#endif
|
||||
FILE* pFile;
|
||||
TABLE* pTable= pTables->table;
|
||||
|
||||
if (check_global_access(pThd, FILE_ACL, true))
|
||||
return 0;
|
||||
|
||||
#ifdef HAVE_SETMNTENT
|
||||
pFile= setmntent(MOUNTED, "r");
|
||||
#else
|
||||
/* Solaris */
|
||||
pFile= fopen("/etc/mnttab", "r");
|
||||
#endif
|
||||
|
||||
if (!pFile)
|
||||
return 1;
|
||||
|
||||
rv= 0;
|
||||
|
||||
/*
|
||||
We lock the outer loop rather than between getmntent so the multiple
|
||||
infomation_schema.disks reads don't all start blocking each other and
|
||||
no-one gets any answers.
|
||||
*/
|
||||
mysql_mutex_lock(&m_getmntent);
|
||||
|
||||
while ((rv == 0) &&
|
||||
#if defined(HAVE_SETMNTENT)
|
||||
(pEnt = getmntent(pFile))
|
||||
|
||||
#else
|
||||
getmntent(pFile, pEnt) != 0
|
||||
#endif
|
||||
)
|
||||
{
|
||||
struct stat f;
|
||||
const char *path, *point;
|
||||
#ifdef HAVE_SETMNTENT
|
||||
path= pEnt->mnt_dir;
|
||||
point= pEnt->mnt_fsname;
|
||||
#else
|
||||
path= pEnt->mnt_mountp;
|
||||
point= pEnt->mnt_special;
|
||||
#endif
|
||||
// Try to keep to real storage by excluding
|
||||
// read only mounts, and mount points that aren't directories
|
||||
if (hasmntopt(pEnt, MNTOPT_RO) != NULL)
|
||||
continue;
|
||||
if (stat(path, &f))
|
||||
continue;
|
||||
if (!S_ISDIR(f.st_mode))
|
||||
continue;
|
||||
rv= disks_table_add_row(pThd, pTable, point, path);
|
||||
}
|
||||
mysql_mutex_unlock(&m_getmntent);
|
||||
|
||||
#ifdef HAVE_SETMNTENT
|
||||
endmntent(pFile);
|
||||
#else
|
||||
fclose(pFile);
|
||||
#endif
|
||||
|
||||
return rv;
|
||||
}
|
||||
#endif /* HAVE_GETMNTINFO */
|
||||
|
||||
int disks_table_init(void *ptr)
|
||||
static int disks_table_init(void *ptr)
|
||||
{
|
||||
ST_SCHEMA_TABLE* pSchema_table = (ST_SCHEMA_TABLE*)ptr;
|
||||
|
||||
pSchema_table->fields_info = disks_table_fields;
|
||||
pSchema_table->fill_table = disks_fill_table;
|
||||
#ifndef HAVE_GETMNTINFO
|
||||
mysql_mutex_init(0, &m_getmntent, MY_MUTEX_INIT_SLOW);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int disks_table_deinit(void *ptr __attribute__((unused)))
|
||||
{
|
||||
#ifndef HAVE_GETMNTINFO
|
||||
mysql_mutex_destroy(&m_getmntent);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -148,15 +274,15 @@ maria_declare_plugin(disks)
|
|||
MYSQL_INFORMATION_SCHEMA_PLUGIN,
|
||||
&disks_table_info, /* type-specific descriptor */
|
||||
"DISKS", /* table name */
|
||||
"Johan Wikman", /* author */
|
||||
"Johan Wikman, Daniel Black", /* author */
|
||||
"Disk space information", /* description */
|
||||
PLUGIN_LICENSE_GPL, /* license type */
|
||||
Show::disks_table_init, /* init function */
|
||||
NULL, /* deinit function */
|
||||
0x0101, /* version = 1.1 */
|
||||
Show::disks_table_deinit, /* deinit function */
|
||||
0x0102, /* version = 1.2 */
|
||||
NULL, /* no status variables */
|
||||
NULL, /* no system variables */
|
||||
"1.1", /* String version representation */
|
||||
"1.2", /* String version representation */
|
||||
MariaDB_PLUGIN_MATURITY_STABLE /* Maturity (see include/mysql/plugin.h)*/
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
show create table information_schema.disks;
|
||||
Table Create Table
|
||||
DISKS CREATE TEMPORARY TABLE `DISKS` (
|
||||
`Disk` varchar(4096) NOT NULL,
|
||||
`Path` varchar(4096) NOT NULL,
|
||||
`Disk` varchar(pathlen) NOT NULL,
|
||||
`Path` varchar(pathlen) NOT NULL,
|
||||
`Total` bigint(32) NOT NULL,
|
||||
`Used` bigint(32) NOT NULL,
|
||||
`Available` bigint(32) NOT NULL
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
--replace_regex /varchar\([0-9]+\)/varchar(pathlen)/
|
||||
show create table information_schema.disks;
|
||||
select sum(Total) > sum(Available), sum(Total)>sum(Used) from information_schema.disks;
|
||||
|
|
|
@ -36,6 +36,9 @@
|
|||
#include <my_sys.h>
|
||||
#include <strfunc.h> // strconvert()
|
||||
#include "wsrep_mysqld.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_server_state.h"
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
static const char *stage_names[]=
|
||||
{"START", "FLUSH", "BLOCK_DDL", "BLOCK_COMMIT", "END", 0};
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "sp_head.h"
|
||||
#include "sql_show.h" // append_definer, append_identifier
|
||||
#include "mysql/psi/mysql_sp.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_trans_observer.h"
|
||||
#endif /* WITH_WSREP */
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include "set_var.h"
|
||||
#include "lock.h" // lock_object_name
|
||||
#include "mysql/psi/mysql_sp.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
/**
|
||||
@addtogroup Event_Scheduler
|
||||
|
|
|
@ -55,6 +55,9 @@
|
|||
#include "debug_sync.h"
|
||||
#include "sql_base.h"
|
||||
#include "sql_cte.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "mysql/service_wsrep.h"
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
#ifdef NO_EMBEDDED_ACCESS_CHECKS
|
||||
#define sp_restore_security_context(A,B) while (0) {}
|
||||
|
|
|
@ -5813,8 +5813,8 @@ bool Item_func_natural_sort_key::check_vcol_func_processor(void *arg)
|
|||
}
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "wsrep_server_state.h"
|
||||
/* Format is %d-%d-%llu */
|
||||
#define WSREP_MAX_WSREP_SERVER_GTID_STR_LEN 10+1+10+1+20
|
||||
|
||||
|
|
|
@ -79,7 +79,10 @@
|
|||
#include "sql_parse.h" // is_log_table_write_query
|
||||
#include "sql_handler.h"
|
||||
#include <hash.h>
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "wsrep_server_state.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
@defgroup Locking Locking
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#define LOG_H
|
||||
|
||||
#include "handler.h" /* my_xid */
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "rpl_constants.h"
|
||||
|
||||
class Relay_log_info;
|
||||
|
|
|
@ -43,6 +43,9 @@
|
|||
#include <strfunc.h>
|
||||
#include "compat56.h"
|
||||
#include "sql_insert.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif /* WITH_WSREP */
|
||||
#else
|
||||
#include "mysqld_error.h"
|
||||
#endif /* MYSQL_CLIENT */
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
#include <mysql/psi/mysql_mdl.h>
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
static PSI_memory_key key_memory_MDL_context_acquire_locks;
|
||||
|
||||
|
|
|
@ -78,6 +78,7 @@
|
|||
#ifdef WITH_WSREP
|
||||
#include "wsrep_thd.h"
|
||||
#include "wsrep_sst.h"
|
||||
#include "wsrep_server_state.h"
|
||||
#endif /* WITH_WSREP */
|
||||
#include "proxy_protocol.h"
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include "sql_audit.h"
|
||||
#include "debug_sync.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep.h"
|
||||
#include "wsrep_trans_observer.h"
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
#include "password.h"
|
||||
|
||||
#include "sql_plugin_compat.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
#define MAX_SCRAMBLE_LENGTH 1024
|
||||
|
||||
|
|
|
@ -347,6 +347,9 @@ TODO list:
|
|||
#include "probes_mysql.h"
|
||||
#include "transaction.h"
|
||||
#include "strfunc.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
const uchar *query_state_map;
|
||||
|
||||
|
|
|
@ -68,6 +68,7 @@
|
|||
#ifdef WITH_WSREP
|
||||
#include "wsrep_thd.h"
|
||||
#include "wsrep_trans_observer.h"
|
||||
#include "wsrep_server_state.h"
|
||||
#else
|
||||
static inline bool wsrep_is_bf_aborted(THD* thd) { return false; }
|
||||
#endif /* WITH_WSREP */
|
||||
|
|
|
@ -66,7 +66,8 @@ void set_thd_stage_info(void *thd,
|
|||
#include "my_apc.h"
|
||||
#include "rpl_gtid.h"
|
||||
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "wsrep.h"
|
||||
#include "wsrep_on.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include <inttypes.h>
|
||||
/* wsrep-lib */
|
||||
|
@ -76,6 +77,11 @@ void set_thd_stage_info(void *thd,
|
|||
#include "wsrep_condition_variable.h"
|
||||
|
||||
class Wsrep_applier_service;
|
||||
enum wsrep_consistency_check_mode {
|
||||
NO_CONSISTENCY_CHECK,
|
||||
CONSISTENCY_CHECK_DECLARED,
|
||||
CONSISTENCY_CHECK_RUNNING,
|
||||
};
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
class Reprepare_observer;
|
||||
|
@ -7869,7 +7875,9 @@ extern THD_list server_threads;
|
|||
|
||||
void setup_tmp_table_column_bitmaps(TABLE *table, uchar *bitmaps,
|
||||
uint field_count);
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
extern void wsrep_to_isolation_end(THD*);
|
||||
#endif
|
||||
/*
|
||||
RAII utility class to ease binlogging with temporary setting
|
||||
THD etc context and restoring the original one upon logger execution.
|
||||
|
|
|
@ -37,6 +37,9 @@
|
|||
#include "sql_partition.h"
|
||||
#include "sql_partition_admin.h" // Sql_cmd_alter_table_*_part
|
||||
#include "event_parse_data.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "mysql/service_wsrep.h"
|
||||
#endif
|
||||
|
||||
void LEX::parse_error(uint err_number)
|
||||
{
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#endif
|
||||
#include "sql_base.h" // open_and_lock_tables
|
||||
#include "ddl_log.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
#ifndef WITH_PARTITION_STORAGE_ENGINE
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include <mysql/plugin_data_type.h>
|
||||
#include <mysql/plugin_function.h>
|
||||
#include "sql_plugin_compat.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
static PSI_memory_key key_memory_plugin_mem_root;
|
||||
static PSI_memory_key key_memory_plugin_int_mem_root;
|
||||
|
|
|
@ -33,6 +33,9 @@
|
|||
#include "debug_sync.h"
|
||||
#include "des_key_file.h"
|
||||
#include "transaction.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
static void disable_checkpoints(THD *thd);
|
||||
|
||||
|
|
|
@ -29,8 +29,9 @@
|
|||
#include "sql_trigger.h"
|
||||
#include "sql_base.h" // tdc_remove_table, lock_table_names,
|
||||
#include "sql_handler.h" // mysql_ha_rm_tables
|
||||
#include "sql_statistics.h"
|
||||
#include "sql_statistics.h"
|
||||
#include "ddl_log.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "debug.h"
|
||||
|
||||
/* used to hold table entries for as part of list of renamed temporary tables */
|
||||
|
|
|
@ -26,6 +26,9 @@
|
|||
#include "transaction.h"
|
||||
#include "lock.h"
|
||||
#include "sql_acl.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
struct Field_definition
|
||||
{
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
#include "ddl_log.h"
|
||||
#include "debug.h" // debug_crash_here()
|
||||
#include <algorithm>
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "rpl_mi.h"
|
||||
#include "rpl_rli.h"
|
||||
#include "log.h"
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include "debug_sync.h" // DEBUG_SYNC
|
||||
#include "debug.h" // debug_crash_here
|
||||
#include "mysql/psi/mysql_sp.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
|
|
|
@ -65,6 +65,9 @@
|
|||
#include "semisync_master.h"
|
||||
#include "semisync_slave.h"
|
||||
#include <ssl_compat.h>
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
#define PCRE2_STATIC 1 /* Important on Windows */
|
||||
#include "pcre2.h" /* pcre2 header file */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright 2021 Codership Oy <info@codership.com>
|
||||
/* Copyright 2021-2022 Codership Oy <info@codership.com>
|
||||
|
||||
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
|
||||
|
@ -18,6 +18,7 @@
|
|||
#include "my_global.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "wsrep_priv.h"
|
||||
#include "wsrep_schema.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <memory>
|
||||
|
|
|
@ -16,11 +16,11 @@
|
|||
#include "mariadb.h"
|
||||
#include "mysql/service_wsrep.h"
|
||||
#include "wsrep_binlog.h"
|
||||
#include "wsrep_priv.h"
|
||||
#include "log.h"
|
||||
#include "slave.h"
|
||||
#include "log_event.h"
|
||||
#include "wsrep_applier.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
#include "transaction.h"
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "sys_vars_shared.h"
|
||||
#include "wsrep.h"
|
||||
#include "wsrep_sst.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
extern char *my_bind_addr_str;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright 2018-2021 Codership Oy <info@codership.com>
|
||||
/* Copyright 2018-2022 Codership Oy <info@codership.com>
|
||||
|
||||
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
|
||||
|
@ -20,6 +20,8 @@
|
|||
#include "wsrep_thd.h"
|
||||
#include "wsrep_xid.h"
|
||||
#include "wsrep_trans_observer.h"
|
||||
#include "wsrep_server_state.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
#include "sql_base.h" /* close_temporary_table() */
|
||||
#include "sql_class.h" /* THD */
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "wsrep_schema.h"
|
||||
#include "wsrep_xid.h"
|
||||
#include "wsrep_trans_observer.h"
|
||||
#include "wsrep_server_state.h"
|
||||
|
||||
#include "sql_class.h" /* THD */
|
||||
#include "transaction.h"
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
/* Copyright 2008-2021 Codership Oy <http://www.codership.com>
|
||||
Copyright (c) 2020, 2021, MariaDB
|
||||
/* Copyright 2008-2022 Codership Oy <http://www.codership.com>
|
||||
|
||||
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
|
||||
|
@ -20,8 +19,6 @@
|
|||
#include <wsrep.h>
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
extern bool WSREP_ON_;
|
||||
extern bool WSREP_PROVIDER_EXISTS_;
|
||||
|
||||
#include <mysql/plugin.h>
|
||||
#include "mysql/service_wsrep.h"
|
||||
|
@ -40,21 +37,12 @@ typedef struct st_mysql_show_var SHOW_VAR;
|
|||
#include "wsrep/provider.hpp"
|
||||
#include "wsrep/streaming_context.hpp"
|
||||
#include "wsrep_api.h"
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include "wsrep_server_state.h"
|
||||
|
||||
#define WSREP_UNDEFINED_TRX_ID ULONGLONG_MAX
|
||||
|
||||
class set_var;
|
||||
class THD;
|
||||
|
||||
enum wsrep_consistency_check_mode {
|
||||
NO_CONSISTENCY_CHECK,
|
||||
CONSISTENCY_CHECK_DECLARED,
|
||||
CONSISTENCY_CHECK_RUNNING,
|
||||
};
|
||||
|
||||
// Global wsrep parameters
|
||||
|
||||
// MySQL wsrep options
|
||||
|
@ -83,7 +71,6 @@ extern const char* wsrep_status_file;
|
|||
extern const char* wsrep_allowlist;
|
||||
extern my_bool wsrep_certify_nonPK;
|
||||
extern long int wsrep_protocol_version;
|
||||
extern ulong wsrep_forced_binlog_format;
|
||||
extern my_bool wsrep_desync;
|
||||
extern ulong wsrep_reject_queries;
|
||||
extern my_bool wsrep_recovery;
|
||||
|
@ -102,7 +89,7 @@ extern ulong wsrep_running_applier_threads;
|
|||
extern ulong wsrep_running_rollbacker_threads;
|
||||
extern bool wsrep_new_cluster;
|
||||
extern bool wsrep_gtid_mode;
|
||||
extern uint wsrep_gtid_domain_id;
|
||||
extern uint32 wsrep_gtid_domain_id;
|
||||
extern ulonglong wsrep_mode;
|
||||
|
||||
enum enum_wsrep_reject_types {
|
||||
|
@ -114,7 +101,7 @@ enum enum_wsrep_reject_types {
|
|||
enum enum_wsrep_OSU_method {
|
||||
WSREP_OSU_TOI,
|
||||
WSREP_OSU_RSU,
|
||||
WSREP_OSU_NONE
|
||||
WSREP_OSU_NONE,
|
||||
};
|
||||
|
||||
enum enum_wsrep_sync_wait {
|
||||
|
@ -238,68 +225,46 @@ extern bool wsrep_split_allowlist(std::vector<std::string>& allowlist);
|
|||
|
||||
/* Other global variables */
|
||||
extern wsrep_seqno_t wsrep_locked_seqno;
|
||||
#define WSREP_ON unlikely(WSREP_ON_)
|
||||
|
||||
/* use xxxxxx_NNULL macros when thd pointer is guaranteed to be non-null to
|
||||
* avoid compiler warnings (GCC 6 and later) */
|
||||
|
||||
#define WSREP_NNULL(thd) \
|
||||
(WSREP_PROVIDER_EXISTS_ && thd->variables.wsrep_on)
|
||||
|
||||
#define WSREP(thd) \
|
||||
(thd && WSREP_NNULL(thd))
|
||||
|
||||
#define WSREP_CLIENT_NNULL(thd) \
|
||||
(WSREP_NNULL(thd) && thd->wsrep_client_thread)
|
||||
|
||||
#define WSREP_CLIENT(thd) \
|
||||
(WSREP(thd) && thd->wsrep_client_thread)
|
||||
|
||||
#define WSREP_EMULATE_BINLOG_NNULL(thd) \
|
||||
(WSREP_NNULL(thd) && wsrep_emulate_bin_log)
|
||||
|
||||
#define WSREP_EMULATE_BINLOG(thd) \
|
||||
(WSREP(thd) && wsrep_emulate_bin_log)
|
||||
|
||||
#define WSREP_BINLOG_FORMAT(my_format) \
|
||||
((wsrep_forced_binlog_format != BINLOG_FORMAT_UNSPEC) ? \
|
||||
wsrep_forced_binlog_format : my_format)
|
||||
|
||||
/* A wrapper function for MySQL log functions. The call will prefix
|
||||
the log message with WSREP and forward the result buffer to fun. */
|
||||
void WSREP_LOG(void (*fun)(const char* fmt, ...), const char* fmt, ...);
|
||||
|
||||
#define WSREP_DEBUG(...) \
|
||||
if (wsrep_debug) sql_print_information( "WSREP: " __VA_ARGS__)
|
||||
#define WSREP_INFO(...) sql_print_information( "WSREP: " __VA_ARGS__)
|
||||
#define WSREP_WARN(...) sql_print_warning( "WSREP: " __VA_ARGS__)
|
||||
#define WSREP_ERROR(...) sql_print_error( "WSREP: " __VA_ARGS__)
|
||||
#define WSREP_UNKNOWN(fmt, ...) WSREP_ERROR("UNKNOWN: " fmt, ##__VA_ARGS__)
|
||||
#define WSREP_SYNC_WAIT(thd_, before_) \
|
||||
{ if (WSREP_CLIENT(thd_) && \
|
||||
wsrep_sync_wait(thd_, before_)) goto wsrep_error_label; }
|
||||
|
||||
#define WSREP_LOG_CONFLICT_THD(thd, role) \
|
||||
WSREP_INFO( \
|
||||
"%s: \n " \
|
||||
" THD: %lu, mode: %s, state: %s, conflict: %s, seqno: %lld\n " \
|
||||
" SQL: %s", \
|
||||
role, \
|
||||
thd_get_thread_id(thd), \
|
||||
wsrep_thd_client_mode_str(thd), \
|
||||
wsrep_thd_client_state_str(thd), \
|
||||
wsrep_thd_transaction_state_str(thd), \
|
||||
wsrep_thd_trx_seqno(thd), \
|
||||
wsrep_thd_query(thd) \
|
||||
);
|
||||
#define WSREP_MYSQL_DB (char *)"mysql"
|
||||
|
||||
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_) \
|
||||
if (WSREP_ON && WSREP(thd) && wsrep_to_isolation_begin(thd, db_, table_, table_list_)) \
|
||||
goto wsrep_error_label;
|
||||
|
||||
#define WSREP_TO_ISOLATION_BEGIN_CREATE(db_, table_, table_list_, create_info_) \
|
||||
if (WSREP_ON && WSREP(thd) && \
|
||||
wsrep_to_isolation_begin(thd, db_, table_, \
|
||||
table_list_, nullptr, nullptr, create_info_))\
|
||||
goto wsrep_error_label;
|
||||
|
||||
#define WSREP_TO_ISOLATION_BEGIN_ALTER(db_, table_, table_list_, alter_info_, fk_tables_, create_info_) \
|
||||
if (WSREP(thd) && wsrep_thd_is_local(thd) && \
|
||||
wsrep_to_isolation_begin(thd, db_, table_, \
|
||||
table_list_, alter_info_, fk_tables_, create_info_))
|
||||
|
||||
#define WSREP_TO_ISOLATION_END \
|
||||
if ((WSREP(thd) && wsrep_thd_is_local_toi(thd)) || \
|
||||
wsrep_thd_is_in_rsu(thd)) \
|
||||
wsrep_to_isolation_end(thd);
|
||||
|
||||
/*
|
||||
Checks if lex->no_write_to_binlog is set for statements that use LOCAL or
|
||||
NO_WRITE_TO_BINLOG.
|
||||
*/
|
||||
#define WSREP_TO_ISOLATION_BEGIN_WRTCHK(db_, table_, table_list_) \
|
||||
if (WSREP(thd) && !thd->lex->no_write_to_binlog \
|
||||
&& wsrep_to_isolation_begin(thd, db_, table_, table_list_)) \
|
||||
goto wsrep_error_label;
|
||||
|
||||
#define WSREP_LOG_CONFLICT(bf_thd, victim_thd, bf_abort) \
|
||||
if (wsrep_debug || wsrep_log_conflicts) \
|
||||
{ \
|
||||
WSREP_INFO("cluster conflict due to %s for threads:", \
|
||||
(bf_abort) ? "high priority abort" : "certification failure" \
|
||||
); \
|
||||
if (bf_thd) WSREP_LOG_CONFLICT_THD(bf_thd, "Winning thread"); \
|
||||
if (victim_thd) WSREP_LOG_CONFLICT_THD(victim_thd, "Victim thread"); \
|
||||
WSREP_INFO("context: %s:%d", __FILE__, __LINE__); \
|
||||
}
|
||||
|
||||
#define WSREP_PROVIDER_EXISTS (WSREP_PROVIDER_EXISTS_)
|
||||
|
||||
|
@ -313,9 +278,6 @@ static inline bool wsrep_cluster_address_exists()
|
|||
extern my_bool wsrep_ready_get();
|
||||
extern void wsrep_ready_wait();
|
||||
|
||||
class Ha_trx_info;
|
||||
struct THD_TRANS;
|
||||
|
||||
extern mysql_mutex_t LOCK_wsrep_ready;
|
||||
extern mysql_cond_t COND_wsrep_ready;
|
||||
extern mysql_mutex_t LOCK_wsrep_sst;
|
||||
|
@ -339,8 +301,10 @@ extern mysql_mutex_t LOCK_wsrep_donor_monitor;
|
|||
extern mysql_cond_t COND_wsrep_joiner_monitor;
|
||||
extern mysql_cond_t COND_wsrep_donor_monitor;
|
||||
|
||||
extern my_bool wsrep_emulate_bin_log;
|
||||
extern int wsrep_to_isolation;
|
||||
#ifdef GTID_SUPPORT
|
||||
extern rpl_sidno wsrep_sidno;
|
||||
#endif /* GTID_SUPPORT */
|
||||
extern my_bool wsrep_preordered_opt;
|
||||
|
||||
#ifdef HAVE_PSI_INTERFACE
|
||||
|
@ -384,8 +348,6 @@ extern PSI_thread_key key_wsrep_sst_donor_monitor;
|
|||
|
||||
struct TABLE_LIST;
|
||||
class Alter_info;
|
||||
struct HA_CREATE_INFO;
|
||||
|
||||
int wsrep_to_isolation_begin(THD *thd, const char *db_, const char *table_,
|
||||
const TABLE_LIST* table_list,
|
||||
const Alter_info* alter_info= nullptr,
|
||||
|
@ -639,12 +601,6 @@ wsrep::key wsrep_prepare_key_for_toi(const char* db, const char* table,
|
|||
/* These macros are needed to compile MariaDB without WSREP support
|
||||
* (e.g. embedded) */
|
||||
|
||||
#define WSREP_ON false
|
||||
#define WSREP(T) (0)
|
||||
#define WSREP_NNULL(T) (0)
|
||||
#define WSREP_EMULATE_BINLOG(thd) (0)
|
||||
#define WSREP_EMULATE_BINLOG_NNULL(thd) (0)
|
||||
#define WSREP_BINLOG_FORMAT(my_format) ((ulong)my_format)
|
||||
#define WSREP_PROVIDER_EXISTS (0)
|
||||
#define wsrep_emulate_bin_log (0)
|
||||
#define wsrep_to_isolation (0)
|
||||
|
@ -657,6 +613,12 @@ wsrep::key wsrep_prepare_key_for_toi(const char* db, const char* table,
|
|||
#define wsrep_create_appliers(X) do {} while(0)
|
||||
#define wsrep_should_replicate_ddl(X,Y) (1)
|
||||
#define wsrep_cluster_address_exists() (false)
|
||||
#define WSREP_MYSQL_DB (0)
|
||||
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_) do { } while(0)
|
||||
#define WSREP_TO_ISOLATION_BEGIN_ALTER(db_, table_, table_list_, alter_info_, fk_tables_)
|
||||
#define WSREP_TO_ISOLATION_END
|
||||
#define WSREP_TO_ISOLATION_BEGIN_WRTCHK(db_, table_, table_list_)
|
||||
#define WSREP_SYNC_WAIT(thd_, before_)
|
||||
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
|
|
63
sql/wsrep_on.h
Normal file
63
sql/wsrep_on.h
Normal file
|
@ -0,0 +1,63 @@
|
|||
/* Copyright 2022 Codership Oy <http://www.codership.com>
|
||||
|
||||
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 02111-1301 USA */
|
||||
|
||||
#ifndef WSREP_ON_H
|
||||
#define WSREP_ON_H
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
|
||||
extern bool WSREP_ON_;
|
||||
extern bool WSREP_PROVIDER_EXISTS_;
|
||||
extern my_bool wsrep_emulate_bin_log;
|
||||
extern ulong wsrep_forced_binlog_format;
|
||||
|
||||
#define WSREP_ON unlikely(WSREP_ON_)
|
||||
|
||||
/* use xxxxxx_NNULL macros when thd pointer is guaranteed to be non-null to
|
||||
* avoid compiler warnings (GCC 6 and later) */
|
||||
|
||||
#define WSREP_NNULL(thd) \
|
||||
(WSREP_PROVIDER_EXISTS_ && thd->variables.wsrep_on)
|
||||
|
||||
#define WSREP(thd) \
|
||||
(thd && WSREP_NNULL(thd))
|
||||
|
||||
#define WSREP_CLIENT_NNULL(thd) \
|
||||
(WSREP_NNULL(thd) && thd->wsrep_client_thread)
|
||||
|
||||
#define WSREP_CLIENT(thd) \
|
||||
(WSREP(thd) && thd->wsrep_client_thread)
|
||||
|
||||
#define WSREP_EMULATE_BINLOG_NNULL(thd) \
|
||||
(WSREP_NNULL(thd) && wsrep_emulate_bin_log)
|
||||
|
||||
#define WSREP_EMULATE_BINLOG(thd) \
|
||||
(WSREP(thd) && wsrep_emulate_bin_log)
|
||||
|
||||
#define WSREP_BINLOG_FORMAT(my_format) \
|
||||
((wsrep_forced_binlog_format != BINLOG_FORMAT_UNSPEC) ? \
|
||||
wsrep_forced_binlog_format : my_format)
|
||||
|
||||
#else
|
||||
|
||||
#define WSREP_ON false
|
||||
#define WSREP(T) (0)
|
||||
#define WSREP_NNULL(T) (0)
|
||||
#define WSREP_EMULATE_BINLOG(thd) (0)
|
||||
#define WSREP_EMULATE_BINLOG_NNULL(thd) (0)
|
||||
#define WSREP_BINLOG_FORMAT(my_format) ((ulong)my_format)
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -19,13 +19,8 @@
|
|||
#ifndef WSREP_PRIV_H
|
||||
#define WSREP_PRIV_H
|
||||
|
||||
#include <my_global.h>
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "wsrep_schema.h"
|
||||
|
||||
#include <log.h>
|
||||
#include <pthread.h>
|
||||
#include <cstdio>
|
||||
#include "wsrep_api.h"
|
||||
#include "wsrep/server_state.hpp"
|
||||
|
||||
my_bool wsrep_ready_set (my_bool x);
|
||||
|
||||
|
@ -39,7 +34,6 @@ wsrep_cb_status wsrep_sst_donate_cb (void* app_ctx,
|
|||
|
||||
extern wsrep_uuid_t local_uuid;
|
||||
extern wsrep_seqno_t local_seqno;
|
||||
extern Wsrep_schema* wsrep_schema;
|
||||
|
||||
// a helper function
|
||||
bool wsrep_sst_received(THD*, const wsrep_uuid_t&, wsrep_seqno_t,
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include "wsrep_high_priority_service.h"
|
||||
#include "wsrep_storage_service.h"
|
||||
#include "wsrep_thd.h"
|
||||
#include "wsrep_server_state.h"
|
||||
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#include "wsrep_utils.h"
|
||||
#include "wsrep_xid.h"
|
||||
#include "wsrep_thd.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "wsrep_server_state.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "wsrep_trans_observer.h"
|
||||
#include "wsrep_high_priority_service.h"
|
||||
#include "wsrep_storage_service.h"
|
||||
#include "wsrep_server_state.h"
|
||||
#include "transaction.h"
|
||||
#include "rpl_rli.h"
|
||||
#include "log_event.h"
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include "wsrep_trans_observer.h"
|
||||
#include "wsrep_server_state.h"
|
||||
|
||||
ulong wsrep_reject_queries;
|
||||
|
||||
|
|
|
@ -1,320 +0,0 @@
|
|||
case MSG_ACCESS_VIOLATN: p = "Violation accès mémoire"; break;
|
||||
case MSG_ADD_BAD_TYPE: p = "Ajout d'une valeur de type %s non conforme dans un tableau %s"; break;
|
||||
case MSG_ALLOC_ERROR: p = "Erreur d'allocation de %s"; break;
|
||||
case MSG_ANSWER_TYPE: p = "Réponse de type"; break;
|
||||
case MSG_API_CONF_ERROR: p = "Erreur SQL: API_CONFORMANCE"; break;
|
||||
case MSG_APPL_NOT_INIT: p = "Application non initialisée"; break;
|
||||
case MSG_ARRAY_BNDS_EXCD: p = "Hors limite de tableau"; break;
|
||||
case MSG_BAD_ARRAY_OPER: p = "Les tableaux doivent utiliser l'opérateur IN"; break;
|
||||
case MSG_BAD_ARRAY_TYPE: p = "Type=%d invalide pour un tableau"; break;
|
||||
case MSG_BAD_ARRAY_VAL: p = "Les tableaux doivent avoir le même nombre de valeurs"; break;
|
||||
case MSG_BAD_BIN_FMT: p = "Format invalide %c pour la colonne BIN %s"; break;
|
||||
case MSG_BAD_BLK_ESTIM: p = "Nombre de blocs supérieur à l'estimation"; break;
|
||||
case MSG_BAD_BLK_SIZE: p = "Taille du bloc %d non conforme"; break;
|
||||
case MSG_BAD_BYTE_NUM: p = "Le nombre d'octets écrits est faux"; break;
|
||||
case MSG_BAD_BYTE_READ: p = "Le nombre d'octets lus est faux"; break;
|
||||
case MSG_BAD_COL_TYPE: p = "Type invalide %s pour la colonne %s"; break;
|
||||
case MSG_BAD_COL_XPATH: p = "Xpath invalide colonne %s de la table HTML %s"; break;
|
||||
case MSG_BAD_CONST_TYPE: p = "Type=%d invalide pour une constante"; break;
|
||||
case MSG_BAD_CONV_TYPE: p = "Convertion de type invalide %d"; break;
|
||||
case MSG_BAD_DATETIME: p = "Valeur date/temps invalide"; break;
|
||||
case MSG_BAD_DBF_FILE: p = "Le fichier DBF %s est altéré"; break;
|
||||
case MSG_BAD_DBF_REC: p = "Fichier DBF %s altéré enregistrement %d"; break;
|
||||
case MSG_BAD_DBF_TYPE: p = "Type DBF %c non supporté colonne %s"; break;
|
||||
case MSG_BAD_DIRECTORY: p = "Répertoire invalide %s: %s"; break;
|
||||
case MSG_BAD_FIELD_RANK: p = "Rang %d invalide pour la colonne %s"; break;
|
||||
case MSG_BAD_FIELD_TYPE: p = "Mauvais type de champ %s"; break;
|
||||
case MSG_BAD_FILE_HANDLE: p = "Handle de fichier invalide: %s"; break;
|
||||
case MSG_BAD_FILTER: p = "Mauvais filtre: Opc=%d B_T=%d %d Type=%d %d"; break;
|
||||
case MSG_BAD_FILTER_CONV: p = "Conversion filtre incorrecte, B_T=%d,%d"; break;
|
||||
case MSG_BAD_FILTER_OP: p = "Opérateur de filtre invalide %d"; break;
|
||||
case MSG_BAD_FLD_FORMAT: p = "Format invalide pour le champs %d de %s"; break;
|
||||
case MSG_BAD_FLD_LENGTH: p = "Champs %s trop long (%s --> %d) ligne %d de %s"; break;
|
||||
case MSG_BAD_FREQ_SET: p = "Spécification erronnée de Freq pour la colonne %s"; break;
|
||||
case MSG_BAD_FUNC_MODE: p = "%s: mode invalide %d"; break;
|
||||
case MSG_BAD_HANDLE_VAL: p = "Valeur Handle invalide"; break;
|
||||
case MSG_BAD_HEADER: p = "Fichier %s: bloc en-tête altéré"; break;
|
||||
case MSG_BAD_HEAD_END: p = "Lecture fin d'en-tête impossible"; break;
|
||||
case MSG_BAD_INDEX_FILE: p = "Fichier index %s corrompu"; break;
|
||||
case MSG_BAD_LINEFLD_FMT: p = "Format invalide ligne %d champs %d de %s"; break;
|
||||
case MSG_BAD_LINE_LEN: p = "Longueur ligne non égale à Lrecl"; break;
|
||||
case MSG_BAD_LRECL: p = "Disparité lrecl table/fichier (%d,%hd)"; break;
|
||||
case MSG_BAD_NODE_TYPE: p = "Type noeud erroné pour la table"; break;
|
||||
case MSG_BAD_OFFSET_VAL: p = "Nul offset invalide pour une table CSV"; break;
|
||||
case MSG_BAD_OPEN_MODE: p = "Mode d'ouverture invalide %d"; break;
|
||||
case MSG_BAD_PARAM_TYPE: p = "%.8s: Paramètre de type=%d invalide"; break;
|
||||
case MSG_BAD_PARM_COUNT: p = "Nombre de paramètres incohérent"; break;
|
||||
case MSG_BAD_QUOTE_FIELD: p = "Quote manquante dans %s champs %d ligne %d"; break;
|
||||
case MSG_BAD_READ_NUMBER: p = "Mauvais nombre %d de valeurs lues dans %s"; break;
|
||||
case MSG_BAD_RECFM: p = "Recfm type %d invalide pour DOSCOL"; break;
|
||||
case MSG_BAD_RECFM_VAL: p = "Valeur invalide %d de Recfm"; break;
|
||||
case MSG_BAD_SET_CASE: p = "La casse d'un tableau ne peut pas passer de non respect à respecter"; break;
|
||||
case MSG_BAD_SET_STRING: p = "SetValue: appel invalide pour STRING"; break;
|
||||
case MSG_BAD_SPECIAL_COL: p = "Colonne spéciale invalide %s"; break;
|
||||
case MSG_BAD_SPEC_COLUMN: p = "Colonne spéciale invalide pour ce type de table"; break;
|
||||
case MSG_BAD_TABLE_TYPE: p = "Type invalide %s pour la table %s"; break;
|
||||
case MSG_BAD_TYPE_LIKE: p = "Type(%d)= %d invalide pour LIKE"; break;
|
||||
case MSG_BAD_VALBLK_INDX: p = "Valeur hors limites de l'index du bloc de valeurs"; break;
|
||||
case MSG_BAD_VALBLK_TYPE: p = "Type=%d invalide pour un bloc de valeurs"; break;
|
||||
case MSG_BAD_VALNODE: p = "Type %d invalide pour le noeud valeur colonne %s"; break;
|
||||
case MSG_BAD_VALUE_TYPE: p = "Type de valeur invalide %d"; break;
|
||||
case MSG_BAD_VAL_UPDATE: p = "Impossible de déterminer quelle valeur %s doit être mise à jour"; break;
|
||||
case MSG_BAS_NS_LIST: p = "Format invalide de la liste des espace-noms"; break;
|
||||
case MSG_BIN_F_TOO_LONG: p = "Valeur trop longue pour le champ %s (%d --> %d)"; break;
|
||||
case MSG_BIN_MODE_FAIL: p = "Echec mode binaire: %s"; break;
|
||||
case MSG_BLKTYPLEN_MISM: p = "Disparité types/longueurs de bloc dans SetValue"; break;
|
||||
case MSG_BLK_IS_NULL: p = "Blk est nul"; break;
|
||||
case MSG_BREAKPOINT: p = "Point de contrôle"; break;
|
||||
case MSG_BUILD_INDEX: p = "Construction index %s sur %s"; break;
|
||||
case MSG_CANNOT_OPEN: p = "Ouverture impossible de %s"; break;
|
||||
case MSG_CHSIZE_ERROR: p = "Erreur dans chsize: %s"; break;
|
||||
case MSG_COL_ALLOC_ERR: p = "Allocation impossible du noeud colonne"; break;
|
||||
case MSG_COL_ISNOT_TABLE: p = "La colonne %s n'est pas dans la table %s"; break;
|
||||
case MSG_COL_NOT_SORTED: p = "La colonne %s de la table %s n'est pas triée"; break;
|
||||
case MSG_COL_NUM_MISM: p = "Disparité du nombre de colonnes"; break;
|
||||
case MSG_COM_ERROR: p = "Erreur Com"; break;
|
||||
case MSG_CONCAT_SUBNODE: p = "Concaténation de sous-noeuds impossible"; break;
|
||||
case MSG_CONNECT_CANCEL: p = "Connection interrompue par l'utilisateur"; break;
|
||||
case MSG_CONTROL_C_EXIT: p = "Exit par Ctrl-C"; break;
|
||||
case MSG_DATABASE_LOADED: p = "Base de données %s chargée"; break;
|
||||
case MSG_DATA_MISALIGN: p = "Mauvais alignement pour ce type de données"; break;
|
||||
case MSG_DBASE_FILE: p = "Fichier dBASE dbf: "; break;
|
||||
case MSG_DEF_ALLOC_ERROR: p = "Erreur d'allocation de la classe DEF %s"; break;
|
||||
case MSG_DEL_FILE_ERR: p = "Erreur à l'effacement de %s"; break;
|
||||
case MSG_DEL_READ_ERROR: p = "Delete: erreur en lecture req=%d len=%d"; break;
|
||||
case MSG_DEL_WRITE_ERROR: p = "Delete: erreur en écriture: %s"; break;
|
||||
case MSG_DEPREC_FLAG: p = "Option Flag périmée, utiliser Coltype"; break;
|
||||
case MSG_DLL_LOAD_ERROR: p = "Erreur %d au chargement du module %s"; break;
|
||||
case MSG_DOM_NOT_SUPP: p = "MS-DOM non supporté par cette version"; break;
|
||||
case MSG_DVAL_NOTIN_LIST: p = "Valeur %s non trouvée dans la liste des valeurs distinctes de la colonne %s"; break;
|
||||
case MSG_EMPTY_DOC: p = "Document vide"; break;
|
||||
case MSG_EMPTY_FILE: p = "%s du fichier vide %s: "; break;
|
||||
case MSG_EOF_AFTER_LINE: p = "Fin de fichier après la ligne %d"; break;
|
||||
case MSG_EOF_INDEX_FILE: p = "EOF lisant le fichier index"; break;
|
||||
case MSG_ERROR_IN_LSK: p = "Erreur %d dans lseek64"; break;
|
||||
case MSG_ERROR_IN_SFP: p = "Erreur %d dans SetFilePointer"; break;
|
||||
case MSG_ERR_READING_REC: p = "Erreur lisant l'enregistrement %d de %s"; break;
|
||||
case MSG_FAIL_ADD_NODE: p = "L'ajout du noeud %s dans la table a échoué"; break;
|
||||
case MSG_FETCH_NO_RES: p = "Fetch: Pas de Résultats"; break;
|
||||
case MSG_FIELD_TOO_LONG: p = "Valeur trop longue pour le champs %d ligne %d"; break;
|
||||
case MSG_FILELEN_ERROR: p = "Erreur dans %s pour %s"; break;
|
||||
case MSG_FILE_IS_EMPTY: p = "Le fichier %s est vide"; break;
|
||||
case MSG_FILE_MAP_ERR: p = "Erreur de File mapping"; break;
|
||||
case MSG_FILE_MAP_ERROR: p = "CreateFileMapping %s erreur rc=%d"; break;
|
||||
case MSG_FILE_OPEN_YET: p = "Fichier %s déjà ouvert"; break;
|
||||
case MSG_FILE_UNFOUND: p = "Fichier %s non trouvé"; break;
|
||||
case MSG_FLD_TOO_LNG_FOR: p = "Champs %d trop long pour %s ligne %d de %s"; break;
|
||||
case MSG_FLT_BAD_RESULT: p = "Virgule flottante: résultat inexacte"; break;
|
||||
case MSG_FLT_DENORMAL_OP: p = "Opérande virgule flottante non normalisé"; break;
|
||||
case MSG_FLT_INVALID_OP: p = "Opération virgule flottante invalide"; break;
|
||||
case MSG_FLT_OVERFLOW: p = "Dépassement de capacité virgule flottante"; break;
|
||||
case MSG_FLT_STACK_CHECK: p = "Virgule flottante: Erreur de la pile"; break;
|
||||
case MSG_FLT_UNDERFLOW: p = "Sous-dépassement de capacité virgule flottante"; break;
|
||||
case MSG_FLT_ZERO_DIVIDE: p = "Virgule flottante: division par zéro"; break;
|
||||
case MSG_FMT_WRITE_NIY: p = "L'écriture des fichiers %s n'est pas encore implémentée"; break;
|
||||
case MSG_FOXPRO_FILE: p = "Fichier FoxPro: "; break;
|
||||
case MSG_FPUTS_ERROR: p = "Erreur dans fputs: %s"; break;
|
||||
case MSG_FSEEK_ERROR: p = "Erreur dans fseek: %s"; break;
|
||||
case MSG_FSETPOS_ERROR: p = "Erreur dans fseek pour i=%d"; break;
|
||||
case MSG_FTELL_ERROR: p = "Erreur dans ftell enregistrement=%d: %s"; break;
|
||||
case MSG_FUNCTION_ERROR: p = "Erreur dans %s: %d"; break;
|
||||
case MSG_FUNC_ERRNO: p = "Erreur %d dans %s"; break;
|
||||
case MSG_FUNC_ERROR: p = "Erreur dans %s"; break;
|
||||
case MSG_FUNC_ERR_S: p = "Erreur dans %s: %s"; break;
|
||||
case MSG_FWRITE_ERROR: p = "Erreur dans fwrite: %s"; break;
|
||||
case MSG_GET_DIST_VALS: p = "Récupération des valeurs distinctes de "; break;
|
||||
case MSG_GET_FUNC_ERR: p = "Erreur en recherche de la fonction %s: %s"; break;
|
||||
case MSG_GLOBAL_ERROR: p = "Erreur d'allocation de Global (taille=%d)\n"; break;
|
||||
case MSG_GUARD_PAGE: p = "Violation de page de garde"; break;
|
||||
case MSG_GZOPEN_ERROR: p = "gzopen %s: erreur %d sur %s"; break;
|
||||
case MSG_ILLEGAL_INSTR: p = "Instruction illégale"; break;
|
||||
case MSG_ILL_FILTER_CONV: p = "Conversion implicite illégale dans un filtre"; break;
|
||||
case MSG_INDEX_NOT_UNIQ: p = "L'index n'est pas Unique"; break;
|
||||
case MSG_INDEX_YET_ON: p = "L'index %s existe déjà sur %s"; break;
|
||||
case MSG_INDX_COL_NOTIN: p = "La colonne index %s n'existe pas dans la table %s"; break;
|
||||
case MSG_INDX_EXIST_YET: p = "L'entrée index existe déjà"; break;
|
||||
case MSG_INIT_FAILED: p = "L'initialisation de %s a échoué"; break;
|
||||
case MSG_INT_COL_ERROR: p = "Erreur interne sur la colonne index %s"; break;
|
||||
case MSG_INT_OVERFLOW: p = "Dépassement de capacité sur entier"; break;
|
||||
case MSG_INT_ZERO_DIVIDE: p = "Division entière par zéro"; break;
|
||||
case MSG_INVALID_DISP: p = "Disposition invalide"; break;
|
||||
case MSG_INVALID_FTYPE: p = "SBV: Ftype %d invalide"; break;
|
||||
case MSG_INVALID_HANDLE: p = "Poignée invalide"; break;
|
||||
case MSG_INVALID_OPER: p = "Opérateur invalide %d pour %s"; break;
|
||||
case MSG_INV_COLUMN_TYPE: p = "Type %d Invalide pour la colonne %s"; break;
|
||||
case MSG_INV_COL_TYPE: p = "Type de colonne %s invalide"; break;
|
||||
case MSG_INV_DEF_READ: p = "Lecture différée invalide rc=%d"; break;
|
||||
case MSG_INV_DIRCOL_OFST: p = "Offset invalide pour une colonne DIR"; break;
|
||||
case MSG_INV_MAP_POS: p = "Position mémoire invalide"; break;
|
||||
case MSG_INV_RAND_ACC: p = "L'accès aléatoire d'une table non optimisée est impossible"; break;
|
||||
case MSG_INV_REC_POS: p = "Position d'enregistrement invalide"; break;
|
||||
case MSG_INV_RESULT_TYPE: p = "Type de résultat invalide %s"; break;
|
||||
case MSG_INV_UPDT_TABLE: p = "Table %s invalide pour Update"; break;
|
||||
case MSG_IN_WITHOUT_SUB: p = "IN ou EXISTS sans tableau ou subquery"; break;
|
||||
case MSG_KEY_ALLOC_ERR: p = "Erreur d'allocation d'un bloc offset clé"; break;
|
||||
case MSG_KEY_ALLOC_ERROR: p = "Erreur d'allocation mémoire, Klen=%d n=%d"; break;
|
||||
case MSG_LINE_TOO_LONG: p = "La nouvelle ligne est trop longue"; break;
|
||||
case MSG_LIST: p = "--Liste--"; break;
|
||||
case MSG_LOADING_FAILED: p = "Le chargement de %s a échoué"; break;
|
||||
case MSG_LRECL_TOO_SMALL: p = "Lrecl trop petit (longueur en-tête = %d)"; break;
|
||||
case MSG_MAKE_EMPTY_FILE: p = "Génération du fichier vide %s: %s"; break;
|
||||
case MSG_MAKING: p = "Génération"; break;
|
||||
case MSG_MALLOC_ERROR: p = "Allocation mémoire impossible par %s"; break;
|
||||
case MSG_MAP_VIEW_ERROR: p = "MapViewOfFile %s erreur rc=%d"; break;
|
||||
case MSG_MAXSIZE_ERROR: p = "Maxsize incalculable sur table ouverte"; break;
|
||||
case MSG_MEM_ALLOC_ERR: p = "Erreur d'allocation mémoire, taille %s = %d"; break;
|
||||
case MSG_MEM_ALLOC_ERROR: p = "Erreur d'allocation mémoire"; break;
|
||||
case MSG_MISPLACED_QUOTE: p = "Appostrophe mal placée ligne %d"; break;
|
||||
case MSG_MISSING_ARG: p = "Argument manquant pour l'opérateur %d"; break;
|
||||
case MSG_MISSING_FIELD: p = "Champs %d manquant dans %s ligne %d"; break;
|
||||
case MSG_MISSING_FNAME: p = "Nom du fichier manquant"; break;
|
||||
case MSG_MISSING_NODE: p = "Noeud %s manquant dans %s"; break;
|
||||
case MSG_MISSING_ROWNODE: p = "Impossible de trouver le noeud de la ligne %d"; break;
|
||||
case MSG_MIS_TAG_LIST: p = "Liste des balises colonne manquante"; break;
|
||||
case MSG_MUL_MAKECOL_ERR: p = "Erreur logique dans TABMUL::MakeCol"; break;
|
||||
case MSG_NAME_CONV_ERR: p = "Erreur de convertion du nom de noeud"; break;
|
||||
case MSG_NEW_DOC_FAILED: p = "Impossible de créer le nouveau document"; break;
|
||||
case MSG_NEW_RETURN_NULL: p = "NULL renvoyé par New dans PlugEvalLike"; break;
|
||||
case MSG_NEXT_FILE_ERROR: p = "Erreur en recherche du fichier suivant. rc=%s"; break;
|
||||
case MSG_NONCONT_EXCEPT: p = "Exception non-continuable"; break;
|
||||
case MSG_NOP_ZLIB_INDEX: p = "L'indexage d'une table zlib non optimisée est impossible"; break;
|
||||
case MSG_NOT_A_DBF_FILE: p = "Le fichier n'a pas le format dBASE dbf "; break;
|
||||
case MSG_NOT_FIXED_LEN: p = "Fichier %s non fixe, len=%d lrecl=%d"; break;
|
||||
case MSG_NO_0DH_HEAD: p = "0DH manquant en fin d'en-tête (dbc=%d)"; break;
|
||||
case MSG_NO_ACTIVE_DB: p = "Pas de base de données active"; break;
|
||||
case MSG_NO_CHAR_FROM: p = "Conversion de type %d en caractères impossible"; break;
|
||||
case MSG_NO_DATE_FMT: p = "Pas de format date pour le valblock de type %d"; break;
|
||||
case MSG_NO_DEF_FNCCOL: p = "Colonne fonction par défaut introuvable"; break;
|
||||
case MSG_NO_DEF_PIVOTCOL: p = "Colonne pivot par défaut introuvable"; break;
|
||||
case MSG_NO_DIR_INDX_RD: p = "Pas d'accès directe des tables %s"; break;
|
||||
case MSG_NO_FEAT_SUPPORT: p = "%s non supporté dans cette version"; break;
|
||||
case MSG_NO_FLD_FORMAT: p = "Format absent pour le champs %d de %s"; break;
|
||||
case MSG_NO_FORMAT_COL: p = "Type COLUMN informattable"; break;
|
||||
case MSG_NO_FORMAT_TYPE: p = "Le format ne peut pas être défini à partir du type %d"; break;
|
||||
case MSG_NO_INDEX_READ: p = "Pas d'accès directe des tables multiples"; break;
|
||||
case MSG_NO_KEY_COL: p = "Pas de colonne clé trouvée"; break;
|
||||
case MSG_NO_KEY_UPDATE: p = "Le nom des clés ne peut pas être modifié"; break;
|
||||
case MSG_NO_MAP_INSERT: p = "MAP incompatible avec Insert"; break;
|
||||
case MSG_NO_MATCHING_COL: p = "Pas de colonne correspondant à %s dans %s"; break;
|
||||
case MSG_NO_MATCH_COL: p = "Colonne correspondante introuvable"; break;
|
||||
case MSG_NO_MEMORY: p = "Mémoire pleine"; break;
|
||||
case MSG_NO_MODE_PADDED: p = "Mode non supporté pour les fichiers 'padded'"; break;
|
||||
case MSG_NO_MUL_VCT: p = "Les tables VCT ne peuvent pas être multiples"; break;
|
||||
case MSG_NO_ODBC_DELETE: p = "Delete ne devrait pas être appelé pour les tables ODBC"; break;
|
||||
case MSG_NO_ODBC_DIRECT: p = "Accès directe des tables ODBC non encore implémenté"; break;
|
||||
case MSG_NO_ODBC_MUL: p = "Multiple(2) non supporté pour les tables ODBC"; break;
|
||||
case MSG_NO_ODBC_SPECOL: p = "Pas de colonne spéciale ODBC"; break;
|
||||
case MSG_NO_PART_DEL: p = "Delete partiel des fichier %s impossible"; break;
|
||||
case MSG_NO_PART_MAP: p = "Mapping partiel non implémenté pour cet OS"; break;
|
||||
case MSG_NO_PAR_BLK_INS: p = "Insertion de bloc partiel impossible"; break;
|
||||
case MSG_NO_PIV_DIR_ACC: p = "Pas d'accès directe aux tables PIVOT"; break;
|
||||
case MSG_NO_READ_32: p = "Lecture de 32 octets impossible"; break;
|
||||
case MSG_NO_RECOV_SPACE: p = "Espace non recouvrable dans le fichier index"; break;
|
||||
case MSG_NO_ROWID_FOR_AM: p = "Accès direct impossible de ROWID pour les tables de type %s"; break;
|
||||
case MSG_NO_ROW_NODE: p = "Le nom du Rownode n'est pas défini"; break;
|
||||
case MSG_NO_SECTION_NAME: p = "Nom de section manquant"; break;
|
||||
case MSG_NO_SEC_UPDATE: p = "Les noms de section ne peuvent pas être modifiés"; break;
|
||||
case MSG_NO_SETPOS_YET: p = "SetPos pas encore implémenté pour les fichier %s"; break;
|
||||
case MSG_NO_SPEC_COL: p = "Pas de colonne spéciales MYSQL"; break;
|
||||
case MSG_NO_SUB_VAL: p = "Pas de sous-value d'un tableau de type %d"; break;
|
||||
case MSG_NO_TABCOL_DATA: p = "Pas de données pour la table %s colonne %s"; break;
|
||||
case MSG_NO_TABLE_DEL: p = "Delete non autorisé pour les tables %s "; break;
|
||||
case MSG_NO_TAB_DATA: p = "Pas de données pour la table %s"; break;
|
||||
case MSG_NO_VCT_DELETE: p = "Délétion Partielle non implémentée pour les fichiers VCT"; break;
|
||||
case MSG_NO_ZIP_DELETE: p = "Delete sur fichier Zip non encore implementé"; break;
|
||||
case MSG_OPENING: p = "Ouverture"; break;
|
||||
case MSG_OPEN_EMPTY_FILE: p = "Ouverture du fichier vide %s: %s"; break;
|
||||
case MSG_OPEN_ERROR: p = "Erreur d'ouverture %d en mode %d sur %s: "; break;
|
||||
case MSG_OPEN_ERROR_IS: p = "Erreur à l'ouverture de %s: %s"; break;
|
||||
case MSG_OPEN_MODE_ERROR: p = "Erreur d'ouverture(%s) %d sur %s"; break;
|
||||
case MSG_OPEN_STRERROR: p = "Erreur à l'ouverture: %s"; break;
|
||||
case MSG_OPTBLK_RD_ERR: p = "Erreur à la lecture d'un bloc optimisation: %s"; break;
|
||||
case MSG_OPTBLK_WR_ERR: p = "Erreur à l'écriture d'un bloc optimisation: %s"; break;
|
||||
case MSG_OPTIMIZING: p = "Optimisation de "; break;
|
||||
case MSG_OPT_BMAP_RD_ERR: p = "Erreur en lecture des bitmaps d'optimisation: %s"; break;
|
||||
case MSG_OPT_BMAP_WR_ERR: p = "Erreur en écriture des bitmaps d'optimisation: %s"; break;
|
||||
case MSG_OPT_CANCELLED: p = "Optimisation interrompue par l'utilisateur"; break;
|
||||
case MSG_OPT_DVAL_RD_ERR: p = "Erreur en lecture des valeurs distinctes: %s"; break;
|
||||
case MSG_OPT_DVAL_WR_ERR: p = "Erreur en écriture des valeurs distinctes: %s"; break;
|
||||
case MSG_OPT_HEAD_RD_ERR: p = "Erreur en lecture de l'entête du fichier opt: %s"; break;
|
||||
case MSG_OPT_HEAD_WR_ERR: p = "Erreur en écriture de l'entête du fichier opt: %s"; break;
|
||||
case MSG_OPT_LOGIC_ERR: p = "Erreur logique dans SetBitmap, i=%d"; break;
|
||||
case MSG_OPT_MAX_RD_ERR: p = "Erreur en lecture des valeurs maxi: %s"; break;
|
||||
case MSG_OPT_MAX_WR_ERR: p = "Erreur en écriture des valeurs maxi: %s"; break;
|
||||
case MSG_OPT_MIN_RD_ERR: p = "Erreur en lecture des valeurs mini: %s"; break;
|
||||
case MSG_OPT_MIN_WR_ERR: p = "Erreur en écriture des valeurs mini: %s"; break;
|
||||
case MSG_OPT_NOT_MATCH: p = "Le fichier opt %s n'est pas à jour"; break;
|
||||
case MSG_PAGE_ERROR: p = "Erreur de pagination"; break;
|
||||
case MSG_PARM_CNT_MISS: p = "Disparité du nombre de Paramètres"; break;
|
||||
case MSG_PREC_VBLP_NULL: p = "ARRAY SetPrecision: Vblp est NULL"; break;
|
||||
case MSG_PRIV_INSTR: p = "Instruction privilégiée"; break;
|
||||
case MSG_PROCADD_ERROR: p = "Erreur %d sur l'adresse de %s"; break;
|
||||
case MSG_QUERY_CANCELLED: p = "Requête interrompue par l'utilisateur"; break;
|
||||
case MSG_RANGE_NO_JOIN: p = "Range non compatible avec les index de jointure"; break;
|
||||
case MSG_RC_READING: p = "rc=%d en lecture de la table %s"; break;
|
||||
case MSG_READY: p = "Prêt"; break;
|
||||
case MSG_READ_ERROR: p = "Erreur en lecture sur %s: %s"; break;
|
||||
case MSG_READ_ONLY: p = "Cette table protégée en lecture seule ne peut être modifiée"; break;
|
||||
case MSG_READ_SEEK_ERROR: p = "Erreur de recherche en lecture: %s"; break;
|
||||
case MSG_REGISTER_ERR: p = "Enregistrement NS impossible, préfix='%s' et href='%s'"; break;
|
||||
case MSG_REMOVE_ERROR: p = "Erreur en supprimant %s: %s"; break;
|
||||
case MSG_RENAME_ERROR: p = "Erreur renommant %s en %s: %s"; break;
|
||||
case MSG_ROWID_NOT_IMPL: p = "RowNumber non implémenté pour les tables de type %s"; break;
|
||||
case MSG_SEC_KEY_FIRST: p = "Les sections et clés doivent être insérées en premier"; break;
|
||||
case MSG_SEC_NAME_FIRST: p = "Le nom de section doit être en tête de liste en insertion"; break;
|
||||
case MSG_SEP_IN_FIELD: p = "Le champ %d contient le caractère séparateur"; break;
|
||||
case MSG_SEQUENCE_ERROR: p = "HSTMT: Allocation hors séquence"; break;
|
||||
case MSG_SETEOF_ERROR: p = "Erreur %d dans SetEndOfFile"; break;
|
||||
case MSG_SETRECPOS_NIY: p = "SetRecpos non implémenté pour ce type de table"; break;
|
||||
case MSG_SET_STR_TRUNC: p = "SetValue: Chaîne de caractères tronquée"; break;
|
||||
case MSG_SFP_ERROR: p = "Erreur sur SetFilePointer: %s"; break;
|
||||
case MSG_SHARED_LIB_ERR: p = "Erreur au chargement de la librairie partagée %s: %s"; break;
|
||||
case MSG_SINGLE_STEP: p = "Pas à pas"; break;
|
||||
case MSG_SORTING_VAL: p = "Tri de %d valeurs"; break;
|
||||
case MSG_SPCOL_READONLY: p = "La colonne spéciale %s est en lecture seulement"; break;
|
||||
case MSG_SQL_CONF_ERROR: p = "Erreur SQL: SQL_CONFORMANCE"; break;
|
||||
case MSG_SRCH_CLOSE_ERR: p = "Erreur à la fermeture de l'Handle de recherche"; break;
|
||||
case MSG_SRC_TABLE_UNDEF: p = "La table source n'est pas définie"; break;
|
||||
case MSG_STACK_OVERFLOW: p = "Dépassement de capacité de la pile"; break;
|
||||
case MSG_TABDIR_READONLY: p = "Les tables DIR sont en lecture seulement"; break;
|
||||
case MSG_TABLE_NOT_OPT: p = "Table non optimisable"; break;
|
||||
case MSG_TABLE_NO_INDEX: p = "La table %s n'est pas indexable"; break;
|
||||
case MSG_TABLE_READ_ONLY: p = "Les tables %s sont en lecture seulement "; break;
|
||||
case MSG_TABMUL_READONLY: p = "Les tables multiples sont en lecture seulement"; break;
|
||||
case MSG_TOO_MANY_FIELDS: p = "Trop de champs ligne %d de %s"; break;
|
||||
case MSG_TOO_MANY_JUMPS: p = "Trop de niveaux de saut"; break;
|
||||
case MSG_TOO_MANY_KEYS: p = "Trop de clés (%d)"; break;
|
||||
case MSG_TO_BLK_IS_NULL: p = "To Blk est nul"; break;
|
||||
case MSG_TRUNCATE_ERROR: p = "Erreur en troncation: %s"; break;
|
||||
case MSG_TRUNC_BY_ESTIM: p = "Tronqué par l'option Estimate"; break;
|
||||
case MSG_TYPE_MISMATCH: p = "Clé et source ne sont pas du même type"; break;
|
||||
case MSG_TYPE_VALUE_ERR: p = "Colonne %s: disparité type(%s)/valeur(%s)"; break;
|
||||
case MSG_UNBALANCE_QUOTE: p = "Appostrophe en trop ligne %d"; break;
|
||||
case MSG_UNDEFINED_AM: p = "COLBLK %s: méthode d'accès indéfinie"; break;
|
||||
case MSG_UNKNOWN_EXCPT: p = "Exception non répertoriée"; break;
|
||||
case MSG_UNMATCH_FIL_ARG: p = "Argument de filtre dépareillé"; break;
|
||||
case MSG_UPDATE_ERROR: p = "Erreur en Update sur %s"; break;
|
||||
case MSG_UPD_ZIP_NOT_IMP: p = "Mise à jour des tables ZDOS non encore implementé"; break;
|
||||
case MSG_VALSTR_TOO_LONG: p = "Valeur %s trop longue pour une chaîne de longueur %d"; break;
|
||||
case MSG_VALTYPE_NOMATCH: p = "Disparité types de valeur"; break;
|
||||
case MSG_VALUE_ERROR: p = "Colonne %s: bloc valeur nul"; break;
|
||||
case MSG_VALUE_TOO_BIG: p = "Valeur %lld trop grande pour la colonne %s"; break;
|
||||
case MSG_VALUE_TOO_LONG: p = "Valeur %s trop longue pour la colonne %s de longueur %d"; break;
|
||||
case MSG_VAL_ALLOC_ERR: p = "Allocation impossible du noeud valeur"; break;
|
||||
case MSG_VIR_NO_DELETE: p = "Delete impossible sur les tables %s"; break;
|
||||
case MSG_VIR_READ_ONLY: p = "Les tables virtuelles %s sont en lecture seulement"; break;
|
||||
case MSG_VOID_FIRST_ARG: p = "Le premier argument ne doit pas être vide"; break;
|
||||
case MSG_WORK_AREA: p = "Espace de travail: %s"; break;
|
||||
case MSG_WRITE_SEEK_ERR: p = "Erreur de recherche en écriture: %s"; break;
|
||||
case MSG_WRITE_STRERROR: p = "Erreur en écriture sur %s: %s"; break;
|
||||
case MSG_WRITING: p = "Ecriture"; break;
|
||||
case MSG_WRITING_ERROR: p = "Erreur à l'écriture de %s: %s"; break;
|
||||
case MSG_WS_CONV_ERR: p = "Erreur de convertion de %s en WS"; break;
|
||||
case MSG_XCOL_MISMATCH: p = "La colonne %s ne correspond pas à l'index"; break;
|
||||
case MSG_XFILE_READERR: p = "Erreur %d en lisant le fichier index"; break;
|
||||
case MSG_XFILE_WRITERR: p = "Erreur en écrivant le fichier index: %s"; break;
|
||||
case MSG_XMLTAB_INIT_ERR: p = "Erreur d'initialisation de la table XML"; break;
|
||||
case MSG_XML_INIT_ERROR: p = "Erreur d'initialisation du nouveau fichier XML"; break;
|
||||
case MSG_XPATH_CNTX_ERR: p = "Le nouveau contexte XPath ne peut être créé"; break;
|
||||
case MSG_XPATH_EVAL_ERR: p = "Impossible d'évaluer l'emplacement xpath '%s'"; break;
|
||||
case MSG_XPATH_NOT_SUPP: p = "Xpath non supporté colonne %s"; break;
|
|
@ -1,46 +0,0 @@
|
|||
case IDS_TABLES: p = "Table Entêtes"; break;
|
||||
case IDS_TAB_01: p = "Catalogue"; break;
|
||||
case IDS_TAB_02: p = "Schéma"; break;
|
||||
case IDS_TAB_03: p = "Nom"; break;
|
||||
case IDS_TAB_04: p = "Type"; break;
|
||||
case IDS_TAB_05: p = "Remarque"; break;
|
||||
case IDS_COLUMNS: p = "Colonne Entêtes"; break;
|
||||
case IDS_COL_01: p = "Cat_Table"; break;
|
||||
case IDS_COL_02: p = "Schem_Table"; break;
|
||||
case IDS_COL_03: p = "Nom_Table"; break;
|
||||
case IDS_COL_04: p = "Nom_Colonne"; break;
|
||||
case IDS_COL_05: p = "Type_Données"; break;
|
||||
case IDS_COL_06: p = "Nom_Type"; break;
|
||||
case IDS_COL_07: p = "Précision"; break;
|
||||
case IDS_COL_08: p = "Longueur"; break;
|
||||
case IDS_COL_09: p = "Echelle"; break;
|
||||
case IDS_COL_10: p = "Base"; break;
|
||||
case IDS_COL_11: p = "Nullifiable"; break;
|
||||
case IDS_COL_12: p = "Remarques"; break;
|
||||
case IDS_PKEY: p = "Clé Entêtes"; break;
|
||||
case IDS_PKY_01: p = "Cat_Table"; break;
|
||||
case IDS_PKY_02: p = "Schem_Table"; break;
|
||||
case IDS_PKY_03: p = "Nom_Table"; break;
|
||||
case IDS_PKY_04: p = "Nom_Colonne"; break;
|
||||
case IDS_PKY_05: p = "Numéro_Clé"; break;
|
||||
case IDS_PKY_06: p = "Nom_Clé"; break;
|
||||
case IDS_STAT: p = "Stat Entêtes"; break;
|
||||
case IDS_STA_01: p = "Table_Catalog"; break;
|
||||
case IDS_STA_02: p = "Table_Schema"; break;
|
||||
case IDS_STA_03: p = "Table_Name"; break;
|
||||
case IDS_STA_04: p = "Non_Unique"; break;
|
||||
case IDS_STA_05: p = "Index_Qualifier"; break;
|
||||
case IDS_STA_06: p = "Index_Name"; break;
|
||||
case IDS_STA_07: p = "Type"; break;
|
||||
case IDS_STA_08: p = "Seq_in_Index"; break;
|
||||
case IDS_STA_09: p = "Column_Name"; break;
|
||||
case IDS_STA_10: p = "Collation"; break;
|
||||
case IDS_STA_11: p = "Cardinality"; break;
|
||||
case IDS_STA_12: p = "Pages"; break;
|
||||
case IDS_STA_13: p = "Filter_Condition"; break;
|
||||
case IDS_DRIVER: p = "Driver Entêtes"; break;
|
||||
case IDS_DRV_01: p = "Description"; break;
|
||||
case IDS_DRV_02: p = "Attributs"; break;
|
||||
case IDS_DSRC: p = "DataSrc Entêtes"; break;
|
||||
case IDS_DSC_01: p = "Nom"; break;
|
||||
case IDS_DSC_02: p = "Description"; break;
|
|
@ -1,320 +0,0 @@
|
|||
#define MSG_ACCESS_VIOLATN "Violation accès mémoire"
|
||||
#define MSG_ADD_BAD_TYPE "Ajout d'une valeur de type %s non conforme dans un tableau %s"
|
||||
#define MSG_ALLOC_ERROR "Erreur d'allocation de %s"
|
||||
#define MSG_ANSWER_TYPE "Réponse de type"
|
||||
#define MSG_API_CONF_ERROR "Erreur SQL: API_CONFORMANCE"
|
||||
#define MSG_APPL_NOT_INIT "Application non initialisée"
|
||||
#define MSG_ARRAY_BNDS_EXCD "Hors limite de tableau"
|
||||
#define MSG_BAD_ARRAY_OPER "Les tableaux doivent utiliser l'opérateur IN"
|
||||
#define MSG_BAD_ARRAY_TYPE "Type=%d invalide pour un tableau"
|
||||
#define MSG_BAD_ARRAY_VAL "Les tableaux doivent avoir le même nombre de valeurs"
|
||||
#define MSG_BAD_BIN_FMT "Format invalide %c pour la colonne BIN %s"
|
||||
#define MSG_BAD_BLK_ESTIM "Nombre de blocs supérieur à l'estimation"
|
||||
#define MSG_BAD_BLK_SIZE "Taille du bloc %d non conforme"
|
||||
#define MSG_BAD_BYTE_NUM "Le nombre d'octets écrits est faux"
|
||||
#define MSG_BAD_BYTE_READ "Le nombre d'octets lus est faux"
|
||||
#define MSG_BAD_COL_TYPE "Type invalide %s pour la colonne %s"
|
||||
#define MSG_BAD_COL_XPATH "Xpath invalide colonne %s de la table HTML %s"
|
||||
#define MSG_BAD_CONST_TYPE "Type=%d invalide pour une constante"
|
||||
#define MSG_BAD_CONV_TYPE "Convertion de type invalide %d"
|
||||
#define MSG_BAD_DATETIME "Valeur date/temps invalide"
|
||||
#define MSG_BAD_DBF_FILE "Le fichier DBF %s est altéré"
|
||||
#define MSG_BAD_DBF_REC "Fichier DBF %s altéré enregistrement %d"
|
||||
#define MSG_BAD_DBF_TYPE "Type DBF %c non supporté colonne %s"
|
||||
#define MSG_BAD_DIRECTORY "Répertoire invalide %s: %s"
|
||||
#define MSG_BAD_FIELD_RANK "Rang %d invalide pour la colonne %s"
|
||||
#define MSG_BAD_FIELD_TYPE "Mauvais type de champ %s"
|
||||
#define MSG_BAD_FILE_HANDLE "Handle de fichier invalide: %s"
|
||||
#define MSG_BAD_FILTER "Mauvais filtre: Opc=%d B_T=%d %d Type=%d %d"
|
||||
#define MSG_BAD_FILTER_CONV "Conversion filtre incorrecte, B_T=%d,%d"
|
||||
#define MSG_BAD_FILTER_OP "Opérateur de filtre invalide %d"
|
||||
#define MSG_BAD_FLD_FORMAT "Format invalide pour le champs %d de %s"
|
||||
#define MSG_BAD_FLD_LENGTH "Champs %s trop long (%s --> %d) ligne %d de %s"
|
||||
#define MSG_BAD_FREQ_SET "Spécification erronnée de Freq pour la colonne %s"
|
||||
#define MSG_BAD_FUNC_MODE "%s: mode invalide %d"
|
||||
#define MSG_BAD_HANDLE_VAL "Valeur Handle invalide"
|
||||
#define MSG_BAD_HEADER "Fichier %s: bloc en-tête altéré"
|
||||
#define MSG_BAD_HEAD_END "Lecture fin d'en-tête impossible"
|
||||
#define MSG_BAD_INDEX_FILE "Fichier index %s corrompu"
|
||||
#define MSG_BAD_LINEFLD_FMT "Format invalide ligne %d champs %d de %s"
|
||||
#define MSG_BAD_LINE_LEN "Longueur ligne non égale à Lrecl"
|
||||
#define MSG_BAD_LRECL "Disparité lrecl table/fichier (%d,%hd)"
|
||||
#define MSG_BAD_NODE_TYPE "Type noeud erroné pour la table"
|
||||
#define MSG_BAD_OFFSET_VAL "Nul offset invalide pour une table CSV"
|
||||
#define MSG_BAD_OPEN_MODE "Mode d'ouverture invalide %d"
|
||||
#define MSG_BAD_PARAM_TYPE "%.8s: Paramètre de type=%d invalide"
|
||||
#define MSG_BAD_PARM_COUNT "Nombre de paramètres incohérent"
|
||||
#define MSG_BAD_QUOTE_FIELD "Quote manquante dans %s champs %d ligne %d"
|
||||
#define MSG_BAD_READ_NUMBER "Mauvais nombre %d de valeurs lues dans %s"
|
||||
#define MSG_BAD_RECFM "Recfm type %d invalide pour DOSCOL"
|
||||
#define MSG_BAD_RECFM_VAL "Valeur invalide %d de Recfm"
|
||||
#define MSG_BAD_SET_CASE "La casse d'un tableau ne peut pas passer de non respect à respecter"
|
||||
#define MSG_BAD_SET_STRING "SetValue: appel invalide pour STRING"
|
||||
#define MSG_BAD_SPECIAL_COL "Colonne spéciale invalide %s"
|
||||
#define MSG_BAD_SPEC_COLUMN "Colonne spéciale invalide pour ce type de table"
|
||||
#define MSG_BAD_TABLE_TYPE "Type invalide %s pour la table %s"
|
||||
#define MSG_BAD_TYPE_LIKE "Type(%d)= %d invalide pour LIKE"
|
||||
#define MSG_BAD_VALBLK_INDX "Valeur hors limites de l'index du bloc de valeurs"
|
||||
#define MSG_BAD_VALBLK_TYPE "Type=%d invalide pour un bloc de valeurs"
|
||||
#define MSG_BAD_VALNODE "Type %d invalide pour le noeud valeur colonne %s"
|
||||
#define MSG_BAD_VALUE_TYPE "Type de valeur invalide %d"
|
||||
#define MSG_BAD_VAL_UPDATE "Impossible de déterminer quelle valeur %s doit être mise à jour"
|
||||
#define MSG_BAS_NS_LIST "Format invalide de la liste des espace-noms"
|
||||
#define MSG_BIN_F_TOO_LONG "Valeur trop longue pour le champ %s (%d --> %d)"
|
||||
#define MSG_BIN_MODE_FAIL "Echec mode binaire: %s"
|
||||
#define MSG_BLKTYPLEN_MISM "Disparité types/longueurs de bloc dans SetValue"
|
||||
#define MSG_BLK_IS_NULL "Blk est nul"
|
||||
#define MSG_BREAKPOINT "Point de contrôle"
|
||||
#define MSG_BUILD_INDEX "Construction index %s sur %s"
|
||||
#define MSG_CANNOT_OPEN "Ouverture impossible de %s"
|
||||
#define MSG_CHSIZE_ERROR "Erreur dans chsize: %s"
|
||||
#define MSG_COL_ALLOC_ERR "Allocation impossible du noeud colonne"
|
||||
#define MSG_COL_ISNOT_TABLE "La colonne %s n'est pas dans la table %s"
|
||||
#define MSG_COL_NOT_SORTED "La colonne %s de la table %s n'est pas triée"
|
||||
#define MSG_COL_NUM_MISM "Disparité du nombre de colonnes"
|
||||
#define MSG_COM_ERROR "Erreur Com"
|
||||
#define MSG_CONCAT_SUBNODE "Concaténation de sous-noeuds impossible"
|
||||
#define MSG_CONNECT_CANCEL "Connection interrompue par l'utilisateur"
|
||||
#define MSG_CONTROL_C_EXIT "Exit par Ctrl-C"
|
||||
#define MSG_DATABASE_LOADED "Base de données %s chargée"
|
||||
#define MSG_DATA_MISALIGN "Mauvais alignement pour ce type de données"
|
||||
#define MSG_DBASE_FILE "Fichier dBASE dbf: "
|
||||
#define MSG_DEF_ALLOC_ERROR "Erreur d'allocation de la classe DEF %s"
|
||||
#define MSG_DEL_FILE_ERR "Erreur à l'effacement de %s"
|
||||
#define MSG_DEL_READ_ERROR "Delete: erreur en lecture req=%d len=%d"
|
||||
#define MSG_DEL_WRITE_ERROR "Delete: erreur en écriture: %s"
|
||||
#define MSG_DEPREC_FLAG "Option Flag périmée, utiliser Coltype"
|
||||
#define MSG_DLL_LOAD_ERROR "Erreur %d au chargement du module %s"
|
||||
#define MSG_DOM_NOT_SUPP "MS-DOM non supporté par cette version"
|
||||
#define MSG_DVAL_NOTIN_LIST "Valeur %s non trouvée dans la liste des valeurs distinctes de la colonne %s"
|
||||
#define MSG_EMPTY_DOC "Document vide"
|
||||
#define MSG_EMPTY_FILE "%s du fichier vide %s: "
|
||||
#define MSG_EOF_AFTER_LINE "Fin de fichier après la ligne %d"
|
||||
#define MSG_EOF_INDEX_FILE "EOF lisant le fichier index"
|
||||
#define MSG_ERROR_IN_LSK "Erreur %d dans lseek64"
|
||||
#define MSG_ERROR_IN_SFP "Erreur %d dans SetFilePointer"
|
||||
#define MSG_ERR_READING_REC "Erreur lisant l'enregistrement %d de %s"
|
||||
#define MSG_FAIL_ADD_NODE "L'ajout du noeud %s dans la table a échoué"
|
||||
#define MSG_FETCH_NO_RES "Fetch: Pas de Résultats"
|
||||
#define MSG_FIELD_TOO_LONG "Valeur trop longue pour le champs %d ligne %d"
|
||||
#define MSG_FILELEN_ERROR "Erreur dans %s pour %s"
|
||||
#define MSG_FILE_IS_EMPTY "Le fichier %s est vide"
|
||||
#define MSG_FILE_MAP_ERR "Erreur de File mapping"
|
||||
#define MSG_FILE_MAP_ERROR "CreateFileMapping %s erreur rc=%d"
|
||||
#define MSG_FILE_OPEN_YET "Fichier %s déjà ouvert"
|
||||
#define MSG_FILE_UNFOUND "Fichier %s non trouvé"
|
||||
#define MSG_FLD_TOO_LNG_FOR "Champs %d trop long pour %s ligne %d de %s"
|
||||
#define MSG_FLT_BAD_RESULT "Virgule flottante: résultat inexacte"
|
||||
#define MSG_FLT_DENORMAL_OP "Opérande virgule flottante non normalisé"
|
||||
#define MSG_FLT_INVALID_OP "Opération virgule flottante invalide"
|
||||
#define MSG_FLT_OVERFLOW "Dépassement de capacité virgule flottante"
|
||||
#define MSG_FLT_STACK_CHECK "Virgule flottante: Erreur de la pile"
|
||||
#define MSG_FLT_UNDERFLOW "Sous-dépassement de capacité virgule flottante"
|
||||
#define MSG_FLT_ZERO_DIVIDE "Virgule flottante: division par zéro"
|
||||
#define MSG_FMT_WRITE_NIY "L'écriture des fichiers %s n'est pas encore implémentée"
|
||||
#define MSG_FOXPRO_FILE "Fichier FoxPro: "
|
||||
#define MSG_FPUTS_ERROR "Erreur dans fputs: %s"
|
||||
#define MSG_FSEEK_ERROR "Erreur dans fseek: %s"
|
||||
#define MSG_FSETPOS_ERROR "Erreur dans fseek pour i=%d"
|
||||
#define MSG_FTELL_ERROR "Erreur dans ftell enregistrement=%d: %s"
|
||||
#define MSG_FUNCTION_ERROR "Erreur dans %s: %d"
|
||||
#define MSG_FUNC_ERRNO "Erreur %d dans %s"
|
||||
#define MSG_FUNC_ERROR "Erreur dans %s"
|
||||
#define MSG_FUNC_ERR_S "Erreur dans %s: %s"
|
||||
#define MSG_FWRITE_ERROR "Erreur dans fwrite: %s"
|
||||
#define MSG_GET_DIST_VALS "Récupération des valeurs distinctes de "
|
||||
#define MSG_GET_FUNC_ERR "Erreur en recherche de la fonction %s: %s"
|
||||
#define MSG_GLOBAL_ERROR "Erreur d'allocation de Global (taille=%d)\n"
|
||||
#define MSG_GUARD_PAGE "Violation de page de garde"
|
||||
#define MSG_GZOPEN_ERROR "gzopen %s: erreur %d sur %s"
|
||||
#define MSG_ILLEGAL_INSTR "Instruction illégale"
|
||||
#define MSG_ILL_FILTER_CONV "Conversion implicite illégale dans un filtre"
|
||||
#define MSG_INDEX_NOT_UNIQ "L'index n'est pas Unique"
|
||||
#define MSG_INDEX_YET_ON "L'index %s existe déjà sur %s"
|
||||
#define MSG_INDX_COL_NOTIN "La colonne index %s n'existe pas dans la table %s"
|
||||
#define MSG_INDX_EXIST_YET "L'entrée index existe déjà"
|
||||
#define MSG_INIT_FAILED "L'initialisation de %s a échoué"
|
||||
#define MSG_INT_COL_ERROR "Erreur interne sur la colonne index %s"
|
||||
#define MSG_INT_OVERFLOW "Dépassement de capacité sur entier"
|
||||
#define MSG_INT_ZERO_DIVIDE "Division entière par zéro"
|
||||
#define MSG_INVALID_DISP "Disposition invalide"
|
||||
#define MSG_INVALID_FTYPE "SBV: Ftype %d invalide"
|
||||
#define MSG_INVALID_HANDLE "Poignée invalide"
|
||||
#define MSG_INVALID_OPER "Opérateur invalide %d pour %s"
|
||||
#define MSG_INV_COLUMN_TYPE "Type %d Invalide pour la colonne %s"
|
||||
#define MSG_INV_COL_TYPE "Type de colonne %s invalide"
|
||||
#define MSG_INV_DEF_READ "Lecture différée invalide rc=%d"
|
||||
#define MSG_INV_DIRCOL_OFST "Offset invalide pour une colonne DIR"
|
||||
#define MSG_INV_MAP_POS "Position mémoire invalide"
|
||||
#define MSG_INV_RAND_ACC "L'accès aléatoire d'une table non optimisée est impossible"
|
||||
#define MSG_INV_REC_POS "Position d'enregistrement invalide"
|
||||
#define MSG_INV_RESULT_TYPE "Type de résultat invalide %s"
|
||||
#define MSG_INV_UPDT_TABLE "Table %s invalide pour Update"
|
||||
#define MSG_IN_WITHOUT_SUB "IN ou EXISTS sans tableau ou subquery"
|
||||
#define MSG_KEY_ALLOC_ERR "Erreur d'allocation d'un bloc offset clé"
|
||||
#define MSG_KEY_ALLOC_ERROR "Erreur d'allocation mémoire, Klen=%d n=%d"
|
||||
#define MSG_LINE_TOO_LONG "La nouvelle ligne est trop longue"
|
||||
#define MSG_LIST "--Liste--"
|
||||
#define MSG_LOADING_FAILED "Le chargement de %s a échoué"
|
||||
#define MSG_LRECL_TOO_SMALL "Lrecl trop petit (longueur en-tête = %d)"
|
||||
#define MSG_MAKE_EMPTY_FILE "Génération du fichier vide %s: %s"
|
||||
#define MSG_MAKING "Génération"
|
||||
#define MSG_MALLOC_ERROR "Allocation mémoire impossible par %s"
|
||||
#define MSG_MAP_VIEW_ERROR "MapViewOfFile %s erreur rc=%d"
|
||||
#define MSG_MAXSIZE_ERROR "Maxsize incalculable sur table ouverte"
|
||||
#define MSG_MEM_ALLOC_ERR "Erreur d'allocation mémoire, taille %s = %d"
|
||||
#define MSG_MEM_ALLOC_ERROR "Erreur d'allocation mémoire"
|
||||
#define MSG_MISPLACED_QUOTE "Appostrophe mal placée ligne %d"
|
||||
#define MSG_MISSING_ARG "Argument manquant pour l'opérateur %d"
|
||||
#define MSG_MISSING_FIELD "Champs %d manquant dans %s ligne %d"
|
||||
#define MSG_MISSING_FNAME "Nom du fichier manquant"
|
||||
#define MSG_MISSING_NODE "Noeud %s manquant dans %s"
|
||||
#define MSG_MISSING_ROWNODE "Impossible de trouver le noeud de la ligne %d"
|
||||
#define MSG_MIS_TAG_LIST "Liste des balises colonne manquante"
|
||||
#define MSG_MUL_MAKECOL_ERR "Erreur logique dans TABMUL::MakeCol"
|
||||
#define MSG_NAME_CONV_ERR "Erreur de convertion du nom de noeud"
|
||||
#define MSG_NEW_DOC_FAILED "Impossible de créer le nouveau document"
|
||||
#define MSG_NEW_RETURN_NULL "NULL renvoyé par New dans PlugEvalLike"
|
||||
#define MSG_NEXT_FILE_ERROR "Erreur en recherche du fichier suivant. rc=%s"
|
||||
#define MSG_NONCONT_EXCEPT "Exception non-continuable"
|
||||
#define MSG_NOP_ZLIB_INDEX "L'indexage d'une table zlib non optimisée est impossible"
|
||||
#define MSG_NOT_A_DBF_FILE "Le fichier n'a pas le format dBASE dbf "
|
||||
#define MSG_NOT_FIXED_LEN "Fichier %s non fixe, len=%d lrecl=%d"
|
||||
#define MSG_NO_0DH_HEAD "0DH manquant en fin d'en-tête (dbc=%d)"
|
||||
#define MSG_NO_ACTIVE_DB "Pas de base de données active"
|
||||
#define MSG_NO_CHAR_FROM "Conversion de type %d en caractères impossible"
|
||||
#define MSG_NO_DATE_FMT "Pas de format date pour le valblock de type %d"
|
||||
#define MSG_NO_DEF_FNCCOL "Colonne fonction par défaut introuvable"
|
||||
#define MSG_NO_DEF_PIVOTCOL "Colonne pivot par défaut introuvable"
|
||||
#define MSG_NO_DIR_INDX_RD "Pas d'accès directe des tables %s"
|
||||
#define MSG_NO_FEAT_SUPPORT "%s non supporté dans cette version"
|
||||
#define MSG_NO_FLD_FORMAT "Format absent pour le champs %d de %s"
|
||||
#define MSG_NO_FORMAT_COL "Type COLUMN informattable"
|
||||
#define MSG_NO_FORMAT_TYPE "Le format ne peut pas être défini à partir du type %d"
|
||||
#define MSG_NO_INDEX_READ "Pas d'accès directe des tables multiples"
|
||||
#define MSG_NO_KEY_COL "Pas de colonne clé trouvée"
|
||||
#define MSG_NO_KEY_UPDATE "Le nom des clés ne peut pas être modifié"
|
||||
#define MSG_NO_MAP_INSERT "MAP incompatible avec Insert"
|
||||
#define MSG_NO_MATCHING_COL "Pas de colonne correspondant à %s dans %s"
|
||||
#define MSG_NO_MATCH_COL "Colonne correspondante introuvable"
|
||||
#define MSG_NO_MEMORY "Mémoire pleine"
|
||||
#define MSG_NO_MODE_PADDED "Mode non supporté pour les fichiers 'padded'"
|
||||
#define MSG_NO_MUL_VCT "Les tables VCT ne peuvent pas être multiples"
|
||||
#define MSG_NO_ODBC_DELETE "Delete ne devrait pas être appelé pour les tables ODBC"
|
||||
#define MSG_NO_ODBC_DIRECT "Accès directe des tables ODBC non encore implémenté"
|
||||
#define MSG_NO_ODBC_MUL "Multiple(2) non supporté pour les tables ODBC"
|
||||
#define MSG_NO_ODBC_SPECOL "Pas de colonne spéciale ODBC"
|
||||
#define MSG_NO_PART_DEL "Delete partiel des fichier %s impossible"
|
||||
#define MSG_NO_PART_MAP "Mapping partiel non implémenté pour cet OS"
|
||||
#define MSG_NO_PAR_BLK_INS "Insertion de bloc partiel impossible"
|
||||
#define MSG_NO_PIV_DIR_ACC "Pas d'accès directe aux tables PIVOT"
|
||||
#define MSG_NO_READ_32 "Lecture de 32 octets impossible"
|
||||
#define MSG_NO_RECOV_SPACE "Espace non recouvrable dans le fichier index"
|
||||
#define MSG_NO_ROWID_FOR_AM "Accès direct impossible de ROWID pour les tables de type %s"
|
||||
#define MSG_NO_ROW_NODE "Le nom du Rownode n'est pas défini"
|
||||
#define MSG_NO_SECTION_NAME "Nom de section manquant"
|
||||
#define MSG_NO_SEC_UPDATE "Les noms de section ne peuvent pas être modifiés"
|
||||
#define MSG_NO_SETPOS_YET "SetPos pas encore implémenté pour les fichier %s"
|
||||
#define MSG_NO_SPEC_COL "Pas de colonne spéciales MYSQL"
|
||||
#define MSG_NO_SUB_VAL "Pas de sous-value d'un tableau de type %d"
|
||||
#define MSG_NO_TABCOL_DATA "Pas de données pour la table %s colonne %s"
|
||||
#define MSG_NO_TABLE_DEL "Delete non autorisé pour les tables %s "
|
||||
#define MSG_NO_TAB_DATA "Pas de données pour la table %s"
|
||||
#define MSG_NO_VCT_DELETE "Délétion Partielle non implémentée pour les fichiers VCT"
|
||||
#define MSG_NO_ZIP_DELETE "Delete sur fichier Zip non encore implementé"
|
||||
#define MSG_OPENING "Ouverture"
|
||||
#define MSG_OPEN_EMPTY_FILE "Ouverture du fichier vide %s: %s"
|
||||
#define MSG_OPEN_ERROR "Erreur d'ouverture %d en mode %d sur %s: "
|
||||
#define MSG_OPEN_ERROR_IS "Erreur à l'ouverture de %s: %s"
|
||||
#define MSG_OPEN_MODE_ERROR "Erreur d'ouverture(%s) %d sur %s"
|
||||
#define MSG_OPEN_STRERROR "Erreur à l'ouverture: %s"
|
||||
#define MSG_OPTBLK_RD_ERR "Erreur à la lecture d'un bloc optimisation: %s"
|
||||
#define MSG_OPTBLK_WR_ERR "Erreur à l'écriture d'un bloc optimisation: %s"
|
||||
#define MSG_OPTIMIZING "Optimisation de "
|
||||
#define MSG_OPT_BMAP_RD_ERR "Erreur en lecture des bitmaps d'optimisation: %s"
|
||||
#define MSG_OPT_BMAP_WR_ERR "Erreur en écriture des bitmaps d'optimisation: %s"
|
||||
#define MSG_OPT_CANCELLED "Optimisation interrompue par l'utilisateur"
|
||||
#define MSG_OPT_DVAL_RD_ERR "Erreur en lecture des valeurs distinctes: %s"
|
||||
#define MSG_OPT_DVAL_WR_ERR "Erreur en écriture des valeurs distinctes: %s"
|
||||
#define MSG_OPT_HEAD_RD_ERR "Erreur en lecture de l'entête du fichier opt: %s"
|
||||
#define MSG_OPT_HEAD_WR_ERR "Erreur en écriture de l'entête du fichier opt: %s"
|
||||
#define MSG_OPT_LOGIC_ERR "Erreur logique dans SetBitmap, i=%d"
|
||||
#define MSG_OPT_MAX_RD_ERR "Erreur en lecture des valeurs maxi: %s"
|
||||
#define MSG_OPT_MAX_WR_ERR "Erreur en écriture des valeurs maxi: %s"
|
||||
#define MSG_OPT_MIN_RD_ERR "Erreur en lecture des valeurs mini: %s"
|
||||
#define MSG_OPT_MIN_WR_ERR "Erreur en écriture des valeurs mini: %s"
|
||||
#define MSG_OPT_NOT_MATCH "Le fichier opt %s n'est pas à jour"
|
||||
#define MSG_PAGE_ERROR "Erreur de pagination"
|
||||
#define MSG_PARM_CNT_MISS "Disparité du nombre de Paramètres"
|
||||
#define MSG_PREC_VBLP_NULL "ARRAY SetPrecision: Vblp est NULL"
|
||||
#define MSG_PRIV_INSTR "Instruction privilégiée"
|
||||
#define MSG_PROCADD_ERROR "Erreur %d sur l'adresse de %s"
|
||||
#define MSG_QUERY_CANCELLED "Requête interrompue par l'utilisateur"
|
||||
#define MSG_RANGE_NO_JOIN "Range non compatible avec les index de jointure"
|
||||
#define MSG_RC_READING "rc=%d en lecture de la table %s"
|
||||
#define MSG_READY "Prêt"
|
||||
#define MSG_READ_ERROR "Erreur en lecture sur %s: %s"
|
||||
#define MSG_READ_ONLY "Cette table protégée en lecture seule ne peut être modifiée"
|
||||
#define MSG_READ_SEEK_ERROR "Erreur de recherche en lecture: %s"
|
||||
#define MSG_REGISTER_ERR "Enregistrement NS impossible, préfix='%s' et href='%s'"
|
||||
#define MSG_REMOVE_ERROR "Erreur en supprimant %s: %s"
|
||||
#define MSG_RENAME_ERROR "Erreur renommant %s en %s: %s"
|
||||
#define MSG_ROWID_NOT_IMPL "RowNumber non implémenté pour les tables de type %s"
|
||||
#define MSG_SEC_KEY_FIRST "Les sections et clés doivent être insérées en premier"
|
||||
#define MSG_SEC_NAME_FIRST "Le nom de section doit être en tête de liste en insertion"
|
||||
#define MSG_SEP_IN_FIELD "Le champ %d contient le caractère séparateur"
|
||||
#define MSG_SEQUENCE_ERROR "HSTMT: Allocation hors séquence"
|
||||
#define MSG_SETEOF_ERROR "Erreur %d dans SetEndOfFile"
|
||||
#define MSG_SETRECPOS_NIY "SetRecpos non implémenté pour ce type de table"
|
||||
#define MSG_SET_STR_TRUNC "SetValue: Chaîne de caractères tronquée"
|
||||
#define MSG_SFP_ERROR "Erreur sur SetFilePointer: %s"
|
||||
#define MSG_SHARED_LIB_ERR "Erreur au chargement de la librairie partagée %s: %s"
|
||||
#define MSG_SINGLE_STEP "Pas à pas"
|
||||
#define MSG_SORTING_VAL "Tri de %d valeurs"
|
||||
#define MSG_SPCOL_READONLY "La colonne spéciale %s est en lecture seulement"
|
||||
#define MSG_SQL_CONF_ERROR "Erreur SQL: SQL_CONFORMANCE"
|
||||
#define MSG_SRCH_CLOSE_ERR "Erreur à la fermeture de l'Handle de recherche"
|
||||
#define MSG_SRC_TABLE_UNDEF "La table source n'est pas définie"
|
||||
#define MSG_STACK_OVERFLOW "Dépassement de capacité de la pile"
|
||||
#define MSG_TABDIR_READONLY "Les tables DIR sont en lecture seulement"
|
||||
#define MSG_TABLE_NOT_OPT "Table non optimisable"
|
||||
#define MSG_TABLE_NO_INDEX "La table %s n'est pas indexable"
|
||||
#define MSG_TABLE_READ_ONLY "Les tables %s sont en lecture seulement "
|
||||
#define MSG_TABMUL_READONLY "Les tables multiples sont en lecture seulement"
|
||||
#define MSG_TOO_MANY_FIELDS "Trop de champs ligne %d de %s"
|
||||
#define MSG_TOO_MANY_JUMPS "Trop de niveaux de saut"
|
||||
#define MSG_TOO_MANY_KEYS "Trop de clés (%d)"
|
||||
#define MSG_TO_BLK_IS_NULL "To Blk est nul"
|
||||
#define MSG_TRUNCATE_ERROR "Erreur en troncation: %s"
|
||||
#define MSG_TRUNC_BY_ESTIM "Tronqué par l'option Estimate"
|
||||
#define MSG_TYPE_MISMATCH "Clé et source ne sont pas du même type"
|
||||
#define MSG_TYPE_VALUE_ERR "Colonne %s: disparité type(%s)/valeur(%s)"
|
||||
#define MSG_UNBALANCE_QUOTE "Appostrophe en trop ligne %d"
|
||||
#define MSG_UNDEFINED_AM "COLBLK %s: méthode d'accès indéfinie"
|
||||
#define MSG_UNKNOWN_EXCPT "Exception non répertoriée"
|
||||
#define MSG_UNMATCH_FIL_ARG "Argument de filtre dépareillé"
|
||||
#define MSG_UPDATE_ERROR "Erreur en Update sur %s"
|
||||
#define MSG_UPD_ZIP_NOT_IMP "Mise à jour des tables ZDOS non encore implementé"
|
||||
#define MSG_VALSTR_TOO_LONG "Valeur %s trop longue pour une chaîne de longueur %d"
|
||||
#define MSG_VALTYPE_NOMATCH "Disparité types de valeur"
|
||||
#define MSG_VALUE_ERROR "Colonne %s: bloc valeur nul"
|
||||
#define MSG_VALUE_TOO_BIG "Valeur %lld trop grande pour la colonne %s"
|
||||
#define MSG_VALUE_TOO_LONG "Valeur %s trop longue pour la colonne %s de longueur %d"
|
||||
#define MSG_VAL_ALLOC_ERR "Allocation impossible du noeud valeur"
|
||||
#define MSG_VIR_NO_DELETE "Delete impossible sur les tables %s"
|
||||
#define MSG_VIR_READ_ONLY "Les tables virtuelles %s sont en lecture seulement"
|
||||
#define MSG_VOID_FIRST_ARG "Le premier argument ne doit pas être vide"
|
||||
#define MSG_WORK_AREA "Espace de travail: %s"
|
||||
#define MSG_WRITE_SEEK_ERR "Erreur de recherche en écriture: %s"
|
||||
#define MSG_WRITE_STRERROR "Erreur en écriture sur %s: %s"
|
||||
#define MSG_WRITING "Ecriture"
|
||||
#define MSG_WRITING_ERROR "Erreur à l'écriture de %s: %s"
|
||||
#define MSG_WS_CONV_ERR "Erreur de convertion de %s en WS"
|
||||
#define MSG_XCOL_MISMATCH "La colonne %s ne correspond pas à l'index"
|
||||
#define MSG_XFILE_READERR "Erreur %d en lisant le fichier index"
|
||||
#define MSG_XFILE_WRITERR "Erreur en écrivant le fichier index: %s"
|
||||
#define MSG_XMLTAB_INIT_ERR "Erreur d'initialisation de la table XML"
|
||||
#define MSG_XML_INIT_ERROR "Erreur d'initialisation du nouveau fichier XML"
|
||||
#define MSG_XPATH_CNTX_ERR "Le nouveau contexte XPath ne peut être créé"
|
||||
#define MSG_XPATH_EVAL_ERR "Impossible d'évaluer l'emplacement xpath '%s'"
|
||||
#define MSG_XPATH_NOT_SUPP "Xpath non supporté colonne %s"
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -540,11 +540,7 @@ extern "C" const char *msglang(void)
|
|||
#else // !XMSG && !NEWMSG
|
||||
extern "C" const char *msglang(void)
|
||||
{
|
||||
#if defined(FRENCH)
|
||||
return "french";
|
||||
#else // DEFAULT
|
||||
return "english";
|
||||
#endif // DEFAULT
|
||||
} // end of msglang
|
||||
#endif // !XMSG && !NEWMSG
|
||||
|
||||
|
|
|
@ -1,13 +1,5 @@
|
|||
/**************************************************************************/
|
||||
/* NLS messsages definition. */
|
||||
/**************************************************************************/
|
||||
#if defined(FRENCH)
|
||||
#if defined(CPX)
|
||||
#include "frmsg1.h"
|
||||
#else /* not CPX */
|
||||
#include "frmsg2.h"
|
||||
#endif /* CPX */
|
||||
#else /* not FRENCH */
|
||||
#include "engmsg.h"
|
||||
#endif /* FRENCH */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
|
|
@ -14,11 +14,7 @@
|
|||
/***********************************************************************/
|
||||
/* DB Constant definitions. */
|
||||
/***********************************************************************/
|
||||
#if defined(FRENCH)
|
||||
#define DEFAULT_LOCALE "French"
|
||||
#else // !FRENCH
|
||||
#define DEFAULT_LOCALE "English"
|
||||
#endif // !FRENCH
|
||||
|
||||
#define DOS_MAX_PATH 144 /* Must be the same across systems */
|
||||
#define DOS_BUFF_LEN 100 /* Number of lines in binary file buffer */
|
||||
|
|
|
@ -32,17 +32,6 @@ const char *GetMsgid(int id)
|
|||
const char *p = NULL;
|
||||
|
||||
// This conditional until a real fix is found for MDEV-7304
|
||||
#if defined(FRENCH)
|
||||
if (!stricmp(msglang(), "french"))
|
||||
switch (id) {
|
||||
#include "frids.h"
|
||||
#if defined(NEWMSG)
|
||||
#include "frcas.h"
|
||||
#endif // NEWMSG
|
||||
} // endswitch(id)
|
||||
|
||||
else // English
|
||||
#endif // FRENCH
|
||||
switch (id) {
|
||||
#include "enids.h"
|
||||
#if defined(NEWMSG)
|
||||
|
|
|
@ -4882,6 +4882,7 @@ corrupted:
|
|||
loop:
|
||||
if (!block) {
|
||||
invalid_page:
|
||||
mtr.commit();
|
||||
func_exit:
|
||||
mem_heap_free(heap);
|
||||
return err;
|
||||
|
|
|
@ -2117,7 +2117,7 @@ void buf_page_free(fil_space_t *space, uint32_t page, mtr_t *mtr)
|
|||
btr_search_drop_page_hash_index(block);
|
||||
#endif /* BTR_CUR_HASH_ADAPT */
|
||||
block->page.set_freed(block->page.state());
|
||||
mtr->memo_push(block, MTR_MEMO_PAGE_X_FIX);
|
||||
mtr->memo_push(block, MTR_MEMO_PAGE_X_MODIFY);
|
||||
}
|
||||
|
||||
/** Get read access to a compressed page (usually of type
|
||||
|
@ -2518,6 +2518,9 @@ ignore_block:
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
if (UNIV_UNLIKELY(!block->page.frame)) {
|
||||
goto wait_for_unzip;
|
||||
}
|
||||
/* A read-fix is released after block->page.lock
|
||||
in buf_page_t::read_complete() or
|
||||
buf_pool_t::corrupted_evict(), or
|
||||
|
@ -2548,7 +2551,7 @@ ignore_block:
|
|||
mysql_mutex_lock(&buf_pool.mutex);
|
||||
block->unfix();
|
||||
|
||||
if (!buf_LRU_free_page(&block->page, true)) {
|
||||
if (!buf_LRU_free_page(&block->page, true)) {
|
||||
ut_ad(0);
|
||||
}
|
||||
|
||||
|
@ -2566,6 +2569,7 @@ ignore_block:
|
|||
|
||||
if (UNIV_UNLIKELY(!block->page.frame)) {
|
||||
if (!block->page.lock.x_lock_try()) {
|
||||
wait_for_unzip:
|
||||
/* The page is being read or written, or
|
||||
another thread is executing buf_zip_decompress()
|
||||
in buf_page_get_low() on it. */
|
||||
|
|
|
@ -37,7 +37,6 @@ Created Apr 25, 2012 Vasil Dimov
|
|||
# include "mysql/service_wsrep.h"
|
||||
# include "wsrep.h"
|
||||
# include "log.h"
|
||||
# include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
#include <vector>
|
||||
|
|
|
@ -2590,7 +2590,6 @@ corrupted:
|
|||
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
|
||||
return err;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
mtr->free(*space, static_cast<uint32_t>(offset));
|
||||
|
|
|
@ -565,9 +565,6 @@ bool thd_is_strict_mode(const MYSQL_THD thd);
|
|||
extern void mysql_bin_log_commit_pos(THD *thd, ulonglong *out_pos, const char **out_file);
|
||||
|
||||
struct trx_t;
|
||||
#ifdef WITH_WSREP
|
||||
#include <mysql/service_wsrep.h>
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
extern const struct _ft_vft ft_vft_result;
|
||||
|
||||
|
|
|
@ -1444,9 +1444,13 @@ struct ha_innobase_inplace_ctx : public inplace_alter_handler_ctx
|
|||
for (unsigned i= 0, j= 0; i < index->n_fields; i++)
|
||||
{
|
||||
const dict_col_t *col= index->fields[i].col;
|
||||
if (change_col_collate.find(col->ind) == collate_end)
|
||||
auto it= change_col_collate.find(col->ind);
|
||||
if (it != collate_end)
|
||||
{
|
||||
ut_ad(it->second == col);
|
||||
index->fields[i].col=
|
||||
index->change_col_info->add(index->heap, *col, j++);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,12 +48,13 @@ mtr_t::memo_push(void* object, mtr_memo_type_t type)
|
|||
ut_ad(type <= MTR_MEMO_SPACE_S_LOCK);
|
||||
ut_ad(type == MTR_MEMO_PAGE_X_MODIFY || ut_is_2pow(type));
|
||||
|
||||
/* If this mtr has x-fixed a clean page then we set
|
||||
the made_dirty flag. This tells mtr_t::commit()
|
||||
to hold log_sys.latch longer. */
|
||||
/* If this mtr has U or X latched a clean page then we set
|
||||
the m_made_dirty flag. This tells us if we need to
|
||||
grab log_sys.flush_order_mutex at mtr_t::commit() so that we
|
||||
can insert the dirtied page into the buf_pool.flush_list. */
|
||||
|
||||
if (!m_made_dirty
|
||||
&& (type == MTR_MEMO_PAGE_X_FIX || type == MTR_MEMO_PAGE_SX_FIX)) {
|
||||
&& (type & (MTR_MEMO_PAGE_X_FIX | MTR_MEMO_PAGE_SX_FIX))) {
|
||||
|
||||
m_made_dirty = is_block_dirtied(
|
||||
reinterpret_cast<const buf_block_t*>(object));
|
||||
|
|
|
@ -217,7 +217,9 @@ public:
|
|||
/** The page was modified, affecting the encryption parameters */
|
||||
APPLIED_TO_ENCRYPTION,
|
||||
/** The page was modified, affecting the tablespace header */
|
||||
APPLIED_TO_FSP_HEADER
|
||||
APPLIED_TO_FSP_HEADER,
|
||||
/** The page was found to be corrupted */
|
||||
APPLIED_CORRUPTED,
|
||||
};
|
||||
|
||||
/** Apply log to a page frame.
|
||||
|
@ -299,12 +301,10 @@ public:
|
|||
ut_ad(*l == OPT_PAGE_CHECKSUM);
|
||||
if (page_checksum(block, l + 1))
|
||||
{
|
||||
applied= APPLIED_YES;
|
||||
page_corrupted:
|
||||
sql_print_error("InnoDB: Set innodb_force_recovery=1"
|
||||
" to ignore corruption.");
|
||||
recv_sys.set_corrupt_log();
|
||||
return applied;
|
||||
return APPLIED_CORRUPTED;
|
||||
}
|
||||
goto next_after_applying;
|
||||
}
|
||||
|
@ -3007,6 +3007,7 @@ static buf_block_t *recv_recover_page(buf_block_t *block, mtr_t &mtr,
|
|||
start_lsn = 0;
|
||||
continue;
|
||||
case log_phys_t::APPLIED_YES:
|
||||
case log_phys_t::APPLIED_CORRUPTED:
|
||||
goto set_start_lsn;
|
||||
case log_phys_t::APPLIED_TO_FSP_HEADER:
|
||||
case log_phys_t::APPLIED_TO_ENCRYPTION:
|
||||
|
@ -3060,7 +3061,8 @@ static buf_block_t *recv_recover_page(buf_block_t *block, mtr_t &mtr,
|
|||
}
|
||||
|
||||
set_start_lsn:
|
||||
if (recv_sys.is_corrupt_log() && !srv_force_recovery) {
|
||||
if ((a == log_phys_t::APPLIED_CORRUPTED
|
||||
|| recv_sys.is_corrupt_log()) && !srv_force_recovery) {
|
||||
if (init) {
|
||||
init->created = false;
|
||||
if (space || block->page.id().page_no()) {
|
||||
|
@ -3157,7 +3159,13 @@ ATTRIBUTE_COLD void recv_sys_t::free_corrupted_page(page_id_t page_id)
|
|||
p->second.log.clear();
|
||||
pages.erase(p);
|
||||
if (!srv_force_recovery)
|
||||
{
|
||||
set_corrupt_fs();
|
||||
ib::error() << "Unable to apply log to corrupted page " << page_id
|
||||
<< "; set innodb_force_recovery to ignore";
|
||||
}
|
||||
else
|
||||
ib::warn() << "Discarding log for corrupted page " << page_id;
|
||||
}
|
||||
|
||||
if (pages.empty())
|
||||
|
|
|
@ -1649,7 +1649,7 @@ inc_dir:
|
|||
{
|
||||
const byte *r= rec;
|
||||
const byte *c= cur->rec;
|
||||
const byte *c_end= cur->rec + data_size;
|
||||
const byte *c_end= c + (page_rec_is_infimum(c) ? 8 : data_size);
|
||||
static_assert(REC_N_OLD_EXTRA_BYTES == REC_N_NEW_EXTRA_BYTES + 1, "");
|
||||
if (c <= insert_buf && c_end > insert_buf)
|
||||
c_end= insert_buf;
|
||||
|
|
|
@ -47,7 +47,8 @@ Created 4/20/1996 Heikki Tuuri
|
|||
# include "btr0sea.h"
|
||||
#endif
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#include <wsrep.h>
|
||||
#include <mysql/service_wsrep.h>
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
/*************************************************************************
|
||||
|
|
|
@ -66,11 +66,6 @@ Created 9/17/2000 Heikki Tuuri
|
|||
#include <vector>
|
||||
#include <thread>
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
#include "mysql/service_wsrep.h"
|
||||
#include "wsrep.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
/*******************************************************************//**
|
||||
Delays an INSERT, DELETE or UPDATE operation if the purge is lagging. */
|
||||
|
|
Loading…
Add table
Reference in a new issue