summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/os/WindowsCache.cmake5
-rw-r--r--config.h.cmake6
-rw-r--r--include/wsrep.h74
-rw-r--r--mysql-test/suite/encryption/r/innodb-redo-badkey.result1
-rw-r--r--mysql-test/suite/encryption/t/corrupted_during_recovery.test1
-rw-r--r--mysql-test/suite/encryption/t/innodb-redo-badkey.test1
-rw-r--r--mysql-test/suite/innodb/r/change_column_collation.result41
-rw-r--r--mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result4
-rw-r--r--mysql-test/suite/innodb/t/change_column_collation.test22
-rw-r--r--mysql-test/suite/innodb/t/corrupted_during_recovery.test1
-rw-r--r--mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test3
-rw-r--r--mysys/my_gethwaddr.c2
-rw-r--r--plugin/disks/CMakeLists.txt21
-rw-r--r--plugin/disks/information_schema_disks.cc230
-rw-r--r--plugin/disks/mysql-test/disks/disks.result4
-rw-r--r--plugin/disks/mysql-test/disks/disks.test1
-rw-r--r--sql/backup.cc3
-rw-r--r--sql/event_data_objects.cc1
-rw-r--r--sql/events.cc1
-rw-r--r--sql/item_func.cc3
-rw-r--r--sql/item_strfunc.cc2
-rw-r--r--sql/lock.cc3
-rw-r--r--sql/log.h1
-rw-r--r--sql/log_event.cc3
-rw-r--r--sql/mdl.cc3
-rw-r--r--sql/mysqld.cc1
-rw-r--r--sql/sp_head.cc1
-rw-r--r--sql/sql_acl.cc1
-rw-r--r--sql/sql_cache.cc3
-rw-r--r--sql/sql_class.cc1
-rw-r--r--sql/sql_class.h12
-rw-r--r--sql/sql_lex.cc3
-rw-r--r--sql/sql_partition_admin.cc1
-rw-r--r--sql/sql_plugin.cc1
-rw-r--r--sql/sql_reload.cc3
-rw-r--r--sql/sql_rename.cc3
-rw-r--r--sql/sql_sequence.cc3
-rw-r--r--sql/sql_table.cc1
-rw-r--r--sql/sql_trigger.cc1
-rw-r--r--sql/sys_vars.cc3
-rw-r--r--sql/wsrep_binlog.cc2
-rw-r--r--sql/wsrep_check_opts.cc1
-rw-r--r--sql/wsrep_client_service.cc4
-rw-r--r--sql/wsrep_high_priority_service.cc1
-rw-r--r--sql/wsrep_mysqld.h124
-rw-r--r--sql/wsrep_on.h63
-rw-r--r--sql/wsrep_priv.h10
-rw-r--r--sql/wsrep_schema.cc1
-rw-r--r--sql/wsrep_sst.cc2
-rw-r--r--sql/wsrep_thd.cc1
-rw-r--r--sql/wsrep_var.cc1
-rw-r--r--storage/connect/frcas.h320
-rw-r--r--storage/connect/frids.h46
-rw-r--r--storage/connect/frmsg.h320
-rw-r--r--storage/connect/frmsg1.h1013
-rw-r--r--storage/connect/frmsg2.h1013
-rw-r--r--storage/connect/ha_connect.cc4
-rw-r--r--storage/connect/messages.h8
-rw-r--r--storage/connect/plgdbsem.h4
-rw-r--r--storage/connect/rcmsg.c11
-rw-r--r--storage/innobase/btr/btr0btr.cc1
-rw-r--r--storage/innobase/buf/buf0buf.cc8
-rw-r--r--storage/innobase/dict/dict0stats_bg.cc1
-rw-r--r--storage/innobase/fsp/fsp0fsp.cc1
-rw-r--r--storage/innobase/handler/ha_innodb.h3
-rw-r--r--storage/innobase/handler/handler0alter.cc6
-rw-r--r--storage/innobase/include/mtr0mtr.inl9
-rw-r--r--storage/innobase/log/log0recv.cc18
-rw-r--r--storage/innobase/page/page0cur.cc2
-rw-r--r--storage/innobase/row/row0ins.cc3
-rw-r--r--storage/innobase/row/row0mysql.cc5
71 files changed, 514 insertions, 2967 deletions
diff --git a/cmake/os/WindowsCache.cmake b/cmake/os/WindowsCache.cmake
index a5f808c8d2c..6cd19262a3c 100644
--- a/cmake/os/WindowsCache.cmake
+++ b/cmake/os/WindowsCache.cmake
@@ -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 "")
diff --git a/config.h.cmake b/config.h.cmake
index cdacac164af..f5a0d7e2396 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -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
diff --git a/include/wsrep.h b/include/wsrep.h
index e68b14f4a17..e4535deabfe 100644
--- a/include/wsrep.h
+++ b/include/wsrep.h
@@ -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"
-
-#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_to_isolation_begin(thd, db_, table_, \
- table_list_, alter_info_, \
- fk_tables_, create_info_))
-
-/*
- 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;
+extern ulong wsrep_debug; // wsrep_mysqld.cc
+extern void WSREP_LOG(void (*fun)(const char* fmt, ...), const char* fmt, ...);
+
+#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_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_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_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 */
diff --git a/mysql-test/suite/encryption/r/innodb-redo-badkey.result b/mysql-test/suite/encryption/r/innodb-redo-badkey.result
index 9d583b32101..34fd043a7bd 100644
--- a/mysql-test/suite/encryption/r/innodb-redo-badkey.result
+++ b/mysql-test/suite/encryption/r/innodb-redo-badkey.result
@@ -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=");
diff --git a/mysql-test/suite/encryption/t/corrupted_during_recovery.test b/mysql-test/suite/encryption/t/corrupted_during_recovery.test
index f838ea04c28..e4a31a0b478 100644
--- a/mysql-test/suite/encryption/t/corrupted_during_recovery.test
+++ b/mysql-test/suite/encryption/t/corrupted_during_recovery.test
@@ -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`;
diff --git a/mysql-test/suite/encryption/t/innodb-redo-badkey.test b/mysql-test/suite/encryption/t/innodb-redo-badkey.test
index fba342aad04..393ca4ad375 100644
--- a/mysql-test/suite/encryption/t/innodb-redo-badkey.test
+++ b/mysql-test/suite/encryption/t/innodb-redo-badkey.test
@@ -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
diff --git a/mysql-test/suite/innodb/r/change_column_collation.result b/mysql-test/suite/innodb/r/change_column_collation.result
index 94dfa77bbd0..9456fdcfd27 100644
--- a/mysql-test/suite/innodb/r/change_column_collation.result
+++ b/mysql-test/suite/innodb/r/change_column_collation.result
@@ -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,
diff --git a/mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result b/mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result
index 37ddb0a9348..ca010d663fa 100644
--- a/mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result
+++ b/mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result
@@ -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;
diff --git a/mysql-test/suite/innodb/t/change_column_collation.test b/mysql-test/suite/innodb/t/change_column_collation.test
index 9b811830d3f..b70925cf411 100644
--- a/mysql-test/suite/innodb/t/change_column_collation.test
+++ b/mysql-test/suite/innodb/t/change_column_collation.test
@@ -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
diff --git a/mysql-test/suite/innodb/t/corrupted_during_recovery.test b/mysql-test/suite/innodb/t/corrupted_during_recovery.test
index 6e0c5610ba1..f383d9ab9b8 100644
--- a/mysql-test/suite/innodb/t/corrupted_during_recovery.test
+++ b/mysql-test/suite/innodb/t/corrupted_during_recovery.test
@@ -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");
diff --git a/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test b/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test
index d4391f89ec1..ddf0090c9e2 100644
--- a/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test
+++ b/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test
@@ -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=;
diff --git a/mysys/my_gethwaddr.c b/mysys/my_gethwaddr.c
index 0fa4fb2f995..6bba553a549 100644
--- a/mysys/my_gethwaddr.c
+++ b/mysys/my_gethwaddr.c
@@ -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
diff --git a/plugin/disks/CMakeLists.txt b/plugin/disks/CMakeLists.txt
index d0f34b04027..4e40842cad0 100644
--- a/plugin/disks/CMakeLists.txt
+++ b/plugin/disks/CMakeLists.txt
@@ -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()
diff --git a/plugin/disks/information_schema_disks.cc b/plugin/disks/information_schema_disks.cc
index 042cfaffaa4..174264c3269 100644
--- a/plugin/disks/information_schema_disks.cc
+++ b/plugin/disks/information_schema_disks.cc
@@ -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;
+
+#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;
+
+ while (count && rv == 0)
+ {
+ 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;
- FILE* pFile = setmntent("/etc/mtab", "r");
+/* 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 (pFile)
+ 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
+ )
{
- 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);
+ 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;
diff --git a/plugin/disks/mysql-test/disks/disks.result b/plugin/disks/mysql-test/disks/disks.result
index eb78d4073df..38dfcf351a5 100644
--- a/plugin/disks/mysql-test/disks/disks.result
+++ b/plugin/disks/mysql-test/disks/disks.result
@@ -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
diff --git a/plugin/disks/mysql-test/disks/disks.test b/plugin/disks/mysql-test/disks/disks.test
index 13a0762ae01..7189c548342 100644
--- a/plugin/disks/mysql-test/disks/disks.test
+++ b/plugin/disks/mysql-test/disks/disks.test
@@ -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;
diff --git a/sql/backup.cc b/sql/backup.cc
index 0e50d12550f..e38e5995845 100644
--- a/sql/backup.cc
+++ b/sql/backup.cc
@@ -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};
diff --git a/sql/event_data_objects.cc b/sql/event_data_objects.cc
index 247df87235d..3980f248327 100644
--- a/sql/event_data_objects.cc
+++ b/sql/event_data_objects.cc
@@ -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 */
diff --git a/sql/events.cc b/sql/events.cc
index 1c185a8d489..f06068e84e8 100644
--- a/sql/events.cc
+++ b/sql/events.cc
@@ -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
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 0174569b554..76096dd73f3 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -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) {}
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index 11520c7336e..5e9b5a85275 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -5727,8 +5727,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
diff --git a/sql/lock.cc b/sql/lock.cc
index ef8e93cdfcc..0767b787bec 100644
--- a/sql/lock.cc
+++ b/sql/lock.cc
@@ -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
diff --git a/sql/log.h b/sql/log.h
index edb6e4617ac..f5a87d8a6f7 100644
--- a/sql/log.h
+++ b/sql/log.h
@@ -18,7 +18,6 @@
#define LOG_H
#include "handler.h" /* my_xid */
-#include "wsrep_mysqld.h"
#include "rpl_constants.h"
class Relay_log_info;
diff --git a/sql/log_event.cc b/sql/log_event.cc
index e8e854fba31..68b78e9353a 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -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 */
diff --git a/sql/mdl.cc b/sql/mdl.cc
index 13b01da36d1..2c6c49ab615 100644
--- a/sql/mdl.cc
+++ b/sql/mdl.cc
@@ -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;
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 62790dfa218..696740109da 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -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"
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index 7f33ad5145a..37e7fffcdf7 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -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 */
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index f75905f07e1..6e26ec996e7 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -56,6 +56,7 @@
#include "password.h"
#include "sql_plugin_compat.h"
+#include "wsrep_mysqld.h"
#define MAX_SCRAMBLE_LENGTH 1024
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc
index 56a443bacc4..9e8f0a8fe68 100644
--- a/sql/sql_cache.cc
+++ b/sql/sql_cache.cc
@@ -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;
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 167ae6857a0..bf45d15c304 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -67,6 +67,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 */
diff --git a/sql/sql_class.h b/sql/sql_class.h
index 0f28084624f..efed7b9bad2 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -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;
@@ -7856,7 +7862,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.
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index c9264916de1..d8a4cf9de5f 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -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)
{
diff --git a/sql/sql_partition_admin.cc b/sql/sql_partition_admin.cc
index a2d2a833285..fcc08b69af4 100644
--- a/sql/sql_partition_admin.cc
+++ b/sql/sql_partition_admin.cc
@@ -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
diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc
index 901aee0b0c1..a47fefc13f6 100644
--- a/sql/sql_plugin.cc
+++ b/sql/sql_plugin.cc
@@ -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;
diff --git a/sql/sql_reload.cc b/sql/sql_reload.cc
index 1490ad554d7..8f0f15a982a 100644
--- a/sql/sql_reload.cc
+++ b/sql/sql_reload.cc
@@ -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);
diff --git a/sql/sql_rename.cc b/sql/sql_rename.cc
index 094578874a8..5948b8ebc3d 100644
--- a/sql/sql_rename.cc
+++ b/sql/sql_rename.cc
@@ -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 */
diff --git a/sql/sql_sequence.cc b/sql/sql_sequence.cc
index 11b5109c349..60da595afd0 100644
--- a/sql/sql_sequence.cc
+++ b/sql/sql_sequence.cc
@@ -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
{
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index b5314fcf0b1..9127e68e7dc 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -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"
diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc
index 6685b91b02e..911c4e7349c 100644
--- a/sql/sql_trigger.cc
+++ b/sql/sql_trigger.cc
@@ -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"
/*************************************************************************/
diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc
index b2f5d492aaf..448cd44a75d 100644
--- a/sql/sys_vars.cc
+++ b/sql/sys_vars.cc
@@ -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 */
diff --git a/sql/wsrep_binlog.cc b/sql/wsrep_binlog.cc
index bcc5d2fe46d..5e1fa137fed 100644
--- a/sql/wsrep_binlog.cc
+++ b/sql/wsrep_binlog.cc
@@ -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"
diff --git a/sql/wsrep_check_opts.cc b/sql/wsrep_check_opts.cc
index e5a0dcb2ede..b17a5f164a4 100644
--- a/sql/wsrep_check_opts.cc
+++ b/sql/wsrep_check_opts.cc
@@ -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;
diff --git a/sql/wsrep_client_service.cc b/sql/wsrep_client_service.cc
index fee9fefdd44..7ab5ba0c1e2 100644
--- a/sql/wsrep_client_service.cc
+++ b/sql/wsrep_client_service.cc
@@ -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 */
diff --git a/sql/wsrep_high_priority_service.cc b/sql/wsrep_high_priority_service.cc
index db6ba43edec..e165a204f56 100644
--- a/sql/wsrep_high_priority_service.cc
+++ b/sql/wsrep_high_priority_service.cc
@@ -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"
diff --git a/sql/wsrep_mysqld.h b/sql/wsrep_mysqld.h
index 88c0e84a1ee..5ba466a03d3 100644
--- a/sql/wsrep_mysqld.h
+++ b/sql/wsrep_mysqld.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
@@ -81,7 +69,6 @@ extern ulong wsrep_max_ws_rows;
extern const char* wsrep_notify_cmd;
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;
@@ -100,7 +87,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 {
@@ -112,7 +99,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 {
@@ -235,68 +222,46 @@ extern bool wsrep_reload_ssl();
/* 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)
+/* 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(thd) \
- (thd && WSREP_NNULL(thd))
+#define WSREP_SYNC_WAIT(thd_, before_) \
+ { if (WSREP_CLIENT(thd_) && \
+ wsrep_sync_wait(thd_, before_)) goto wsrep_error_label; }
-#define WSREP_CLIENT_NNULL(thd) \
- (WSREP_NNULL(thd) && thd->wsrep_client_thread)
+#define WSREP_MYSQL_DB (char *)"mysql"
-#define WSREP_CLIENT(thd) \
- (WSREP(thd) && thd->wsrep_client_thread)
+#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_EMULATE_BINLOG_NNULL(thd) \
- (WSREP_NNULL(thd) && wsrep_emulate_bin_log)
+#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_EMULATE_BINLOG(thd) \
- (WSREP(thd) && wsrep_emulate_bin_log)
+#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_BINLOG_FORMAT(my_format) \
- ((wsrep_forced_binlog_format != BINLOG_FORMAT_UNSPEC) ? \
- wsrep_forced_binlog_format : my_format)
+#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);
-/* 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, ...);
+/*
+ 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_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_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_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_)
@@ -310,9 +275,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;
@@ -336,8 +298,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
@@ -381,8 +345,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,
@@ -636,12 +598,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)
@@ -654,6 +610,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 */
diff --git a/sql/wsrep_on.h b/sql/wsrep_on.h
new file mode 100644
index 00000000000..f85fe3d5d0d
--- /dev/null
+++ b/sql/wsrep_on.h
@@ -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
diff --git a/sql/wsrep_priv.h b/sql/wsrep_priv.h
index fb8467adc9d..e88d3c862a0 100644
--- a/sql/wsrep_priv.h
+++ b/sql/wsrep_priv.h
@@ -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,
diff --git a/sql/wsrep_schema.cc b/sql/wsrep_schema.cc
index 3d90f425ec8..1cfdae2890b 100644
--- a/sql/wsrep_schema.cc
+++ b/sql/wsrep_schema.cc
@@ -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>
diff --git a/sql/wsrep_sst.cc b/sql/wsrep_sst.cc
index ca40bc79386..10212ee8da7 100644
--- a/sql/wsrep_sst.cc
+++ b/sql/wsrep_sst.cc
@@ -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>
diff --git a/sql/wsrep_thd.cc b/sql/wsrep_thd.cc
index bccd1a4f8b3..a615b7f609b 100644
--- a/sql/wsrep_thd.cc
+++ b/sql/wsrep_thd.cc
@@ -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"
diff --git a/sql/wsrep_var.cc b/sql/wsrep_var.cc
index 178ec603e72..ea5ba6c1aca 100644
--- a/sql/wsrep_var.cc
+++ b/sql/wsrep_var.cc
@@ -26,6 +26,7 @@
#include <cstdio>
#include <cstdlib>
#include "wsrep_trans_observer.h"
+#include "wsrep_server_state.h"
ulong wsrep_reject_queries;
diff --git a/storage/connect/frcas.h b/storage/connect/frcas.h
deleted file mode 100644
index e9401d475ae..00000000000
--- a/storage/connect/frcas.h
+++ /dev/null
@@ -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;
diff --git a/storage/connect/frids.h b/storage/connect/frids.h
deleted file mode 100644
index 561dbb68837..00000000000
--- a/storage/connect/frids.h
+++ /dev/null
@@ -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;
diff --git a/storage/connect/frmsg.h b/storage/connect/frmsg.h
deleted file mode 100644
index d58779b948f..00000000000
--- a/storage/connect/frmsg.h
+++ /dev/null
@@ -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"
diff --git a/storage/connect/frmsg1.h b/storage/connect/frmsg1.h
deleted file mode 100644
index e88440a3a9c..00000000000
--- a/storage/connect/frmsg1.h
+++ /dev/null
@@ -1,1013 +0,0 @@
-#define MSG_ACCESS_VIOLATN "Violation accès mémoire"
-#define MSG_ACT_ALLOC_FAIL "PlugInitLang: Erreur d'allocation du bloc Activity"
-#define MSG_ADDVAL_ERROR "Erreur %d dans AddValue"
-#define MSG_ADD_BAD_TYPE "Ajout d'une valeur de type %s non conforme dans un tableau %s"
-#define MSG_ADD_NULL_DOM "Ajout de la chaîne %s à un domaine nul"
-#define MSG_ADPOS_IN_DICTP "ADPOS au travail dans User_Dictp"
-#define MSG_AFTER " après: "
-#define MSG_ALG_CHOICE_AUTO "Le choix du meilleur algorithme est automatique"
-#define MSG_ALG_CHOICE_BAD "Choix d'algorithme invalide, remis à AUTO"
-#define MSG_ALG_CHOICE_QRY "Utilise l'algorithme 'Query'"
-#define MSG_ALG_CURLY_BRK "Le choix de l'algorithme dépend des accolades externes"
-#define MSG_ALLOC_ERROR "Erreur d'allocation de %s"
-#define MSG_ALL_DELETED "Toutes les lignes enlevées en %.2lf sec"
-#define MSG_ALTER_DB_ERR "Impossible de déterminer la base de données à modifier"
-#define MSG_AMBIG_COL_QUAL "Qualificateur ambigu %s pour la colonne %s"
-#define MSG_AMBIG_CORREL "Select %s.* corrélation ambigue"
-#define MSG_AMBIG_SPEC_COL "Colonne spéciale ambiguë %s"
-#define MSG_ANSWER_TYPE "Réponse de type"
-#define MSG_API_CONF_ERROR "Erreur SQL: API_CONFORMANCE"
-#define MSG_APPL_ACCESSIBLE "Application %s accessible"
-#define MSG_APPL_ACTIVE "Application %s encore active"
-#define MSG_APPL_BAD_SAVE "Application %s partiellement sauvegardée"
-#define MSG_APPL_CREATED "Application %s crée"
-#define MSG_APPL_IS_ACTIVE "Application déjà active"
-#define MSG_APPL_NOT_INIT "Application non initialisée"
-#define MSG_APPL_NOT_LOADED "Application non chargée"
-#define MSG_APPL_QUIT "Fin de l'application %s"
-#define MSG_APPL_SAVED "Application %s sauvegardée"
-#define MSG_APP_STILL_ACTIV "Application du langage %s encore active (non libérable)"
-#define MSG_AREAFILE_NOTFND "Fichier Area introuvable"
-#define MSG_ARGS_SYNTAX_ERR "?SetArgs erreur de syntaxe: %s inattendu après %s"
-#define MSG_ARG_ALREADY_SET "Argument %d déjà alloué"
-#define MSG_ARG_NOT_AN_ATTR "L'argument n'est pas un attribut (type %d erroné)"
-#define MSG_ARG_OUT_CONTEXT "Argument de type @ utilisé hors contexte"
-#define MSG_ARG_OUT_RANGE "Argument de phrase valant %d hors limite"
-#define MSG_ARG_PTR_NOSEM "Argument valant %d pointe sur un noeud sans Sem"
-#define MSG_ARG_PTR_NOSEMS "Argument valant %d pointe sur un noeud sans sémantique"
-#define MSG_ARG_REF_LOOP "?Bouclage entre références croisées des arguments"
-#define MSG_ARG_TWO_CONST "Le 2ème argument de %s doit être constant"
-#define MSG_ARRAY_ALLOC_ERR "Erreur d'allocation mémoire dans ARRAY"
-#define MSG_ARRAY_BNDS_EXCD "Hors limite de tableau"
-#define MSG_ARRAY_ERROR "Erreur de fonctionnement k=%d n=%d"
-#define MSG_ATTRIBUTE_ERROR "Erreur règle %u attribut %s: "
-#define MSG_ATT_NOT_CASE "Mauvaise valeur %d pour attribut (pas une CaseValue)"
-#define MSG_ATT_POSCODE_BIG "Code attribut %d trop grand (max=%d)"
-#define MSG_AVGLEN_ERROR "avglen doit être entre %d et %d"
-#define MSG_BAD_AGGREG_FUNC "Fonction aggrégée %d non supportée"
-#define MSG_BAD_ARGTYPES "Argument de type invalide pour %s"
-#define MSG_BAD_ARGUMENTS "Argument not attachés pour %s"
-#define MSG_BAD_ARG_NUM "Nombre d'arguments invalide %d"
-#define MSG_BAD_ARG_TYPE "Type d'argument %d invalide"
-#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_CARDINALITY "Appel invalide de Cardinality pour une table multiple"
-#define MSG_BAD_CASE_SPEC "Min/Maj: spécification %c incorrecte, recommencez: "
-#define MSG_BAD_CHAR_SPEC "Spécification '%s' invalide pour caractère"
-#define MSG_BAD_CHECK_TYPE "Sous-type %d invalide pour CheckColumn"
-#define MSG_BAD_CHECK_VAL "Valeur pour Check invalide '%s'"
-#define MSG_BAD_COLCRT_ARG "COLCRT: Arg invalide (type=%hd, domain=%hd)"
-#define MSG_BAD_COLDEF_TYPE "Coldefs: type illégal %d"
-#define MSG_BAD_COLIST_ITEM "Elément invalide dans une Colist"
-#define MSG_BAD_COLIST_TYPE "Mauvais type=%d pour une Colist"
-#define MSG_BAD_COLSIZE "Colsize %d trop petit pour cette base de données"
-#define MSG_BAD_COL_ENTRY "Entrée invalide pour la colonne %s"
-#define MSG_BAD_COL_FORMAT "Type de formattage %d invalide pour une colonne"
-#define MSG_BAD_COL_IN_FILT "Colonne incorrecte dans un filtre"
-#define MSG_BAD_COL_QUALIF "Qualificateur invalide %s pour la colonne %s"
-#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_COMPARE_OP "Opérateur de comparaison %d invalide"
-#define MSG_BAD_CONST_TYPE "Type=%d invalide pour une constante"
-#define MSG_BAD_CONV_TYPE "Convertion de type invalide %d"
-#define MSG_BAD_CORREL "Select %s.* corrélation absente"
-#define MSG_BAD_DATETIME "Valeur date/temps invalide"
-#define MSG_BAD_DATE_OPER "Opérateur de date inattendu %d"
-#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é"
-#define MSG_BAD_DEF_ARG "Argument invalide pour INDEXDEF (type=%hd, domain=%hd)"
-#define MSG_BAD_DEF_READ "EOF inattendue en lecture différée"
-#define MSG_BAD_DEF_TYPE "Type de colonne invalide"
-#define MSG_BAD_DIRECTORY "Répertoire invalide %s: %s"
-#define MSG_BAD_DIST_JN_FIL "Filtre de jointure distincte invalide"
-#define MSG_BAD_DIST_JOIN "Spécification invalide de jointure distincte"
-#define MSG_BAD_DOM_COL_DEF "Définition de colonnes invalide pour un domaine"
-#define MSG_BAD_DOM_VALUE "La valeur %d n'appartient pas au domaine"
-#define MSG_BAD_EDIT_INIT "Coparm: édition %s initialisée improprement"
-#define MSG_BAD_EVAL_TYPE "Fonction scalaire de type=%d invalide"
-#define MSG_BAD_EXEC_MODE "Mode d'exécution invalide '%s'"
-#define MSG_BAD_EXP_ARGTYPE "Argument de type %d invalide pour une expression"
-#define MSG_BAD_EXP_OPER "Opérateur=%d invalide pour expression"
-#define MSG_BAD_FETCH_RC "Code retour inattendu de Fetch %d"
-#define MSG_BAD_FIELD_FMT "Format de champ invalide %c pour %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_FILE_LIST "La section liste de fichiers est erronée"
-#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_LINK "Opérateur de chaînage illégal %d"
-#define MSG_BAD_FILTER_OP "Opérateur de filtre invalide %d"
-#define MSG_BAD_FILTEST_OP "Opérateur invalide %d %d pour FilTest"
-#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_FLOAT_CONV "Convertion invalide d'un tableau flottant"
-#define MSG_BAD_FPARM_NEXT "Coparm: FPARM avec Next non nul"
-#define MSG_BAD_FREQ_SET "Spécification erronnée de Freq pour la colonne %s"
-#define MSG_BAD_FUNC_ARG "Funcarg de type %d non implémenté"
-#define MSG_BAD_FUNC_ARGTYP "Mauvais type d'argument=%d pour une fonction"
-#define MSG_BAD_FUNC_MODE "%s: mode invalide %d"
-#define MSG_BAD_GENRE "Genre est invalide"
-#define MSG_BAD_GETVIEW_RET "GetView: type de retour %d invalide"
-#define MSG_BAD_HANDLE_VAL "Valeur Handle invalide"
-#define MSG_BAD_HAV_FILTER "Filtre Having sur une requête non groupée"
-#define MSG_BAD_HAV_FILTYPE "Filtre invalide pour clause Having"
-#define MSG_BAD_HEADER "Fichier %s: bloc en-tête altéré"
-#define MSG_BAD_HEADER_VAL "Valeur invalide pour Header"
-#define MSG_BAD_HEAD_END "Lecture fin d'en-tête impossible"
-#define MSG_BAD_INDEX_COL "Colonne %s invalide pour index %s"
-#define MSG_BAD_INDEX_DEF "Définition invalide pour index %s"
-#define MSG_BAD_INDEX_FILE "Fichier index %s corrompu"
-#define MSG_BAD_INDEX_PART "Définition colonne invalide pour index %s"
-#define MSG_BAD_INPUT "Entrée incorrecte"
-#define MSG_BAD_IN_ARGTYPE "Argument de type invalide pour l'opérateur IN"
-#define MSG_BAD_IN_ENDING "Erreur: fin de chaîne IN invalide"
-#define MSG_BAD_IN_STRING "La chaîne IN commence ou finie par des caractères invalides %c ... %c"
-#define MSG_BAD_JCOL_TYPE "Erreur logique JCT: disparité des types colonnes"
-#define MSG_BAD_JOIN_EXP "Expression invalide pour une jointure"
-#define MSG_BAD_JOIN_FILTER "Filtre de jointure invalide"
-#define MSG_BAD_JOIN_OP "Opérateur de joint invalide %d"
-#define MSG_BAD_LANG_SIZE "Le fichier langage a une mauvaise taille %d"
-#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_LIST_TYPE "Type de liste invalide %d"
-#define MSG_BAD_LOCALE "Locale invalide %s"
-#define MSG_BAD_LOCDFON_ARG "Mauvais paramètre pour LOCDFON"
-#define MSG_BAD_LOCNODE_USE "Usage inattendu de LOCNODE"
-#define MSG_BAD_LRECL "Disparité lrecl table/fichier (%d,%hd)"
-#define MSG_BAD_MAX_HAVING "MAXTMP trop petit pour Having"
-#define MSG_BAD_MAX_NREC "MaxRec=%d ne correspond pas à MaxBlk=%d Nrec=%d"
-#define MSG_BAD_MAX_PARAM "Mauvais paramètres pour spécifier une valeur maximum"
-#define MSG_BAD_MAX_SETTING "Mauvaise valeur '%c' pour max"
-#define MSG_BAD_MERGE_TYPE "Le type %d ne pas être intercallé"
-#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_OPERATOR "Opérateur invalide %s"
-#define MSG_BAD_ORDER_MODE "Mode de tri %c invalide"
-#define MSG_BAD_ORDER_TYPE "Tri sur objet de type=%d invalide"
-#define MSG_BAD_OUTER_JOIN "Jointure externe invalide sur table enfant"
-#define MSG_BAD_PAD_ARGTYP "Argument de type invalide pour Pad ou Justify"
-#define MSG_BAD_PARAMETERS "%.8s: Mauvais paramètres"
-#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_PHASE_NUM "Numéro de phrase %d hors limite"
-#define MSG_BAD_PHRASE_NB "numéro de phrase hors limite %d rc=%d\n"
-#define MSG_BAD_POS_CODE "POS_code invalide %d"
-#define MSG_BAD_POS_TYPE "Type de POS_code invalide %d"
-#define MSG_BAD_PROJNUM "Mauvais projnum %d pour la colonne %s"
-#define MSG_BAD_QUERY_OPEN "Mode invalide %d pour l'ouverture d'une requête"
-#define MSG_BAD_QUERY_TYPE "Type de requête %d invalide pour %s"
-#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_RESULT_TYPE "Mauvais type de résultat %d pour %s"
-#define MSG_BAD_RETURN_TYPE "Type de retour %d incorrect"
-#define MSG_BAD_ROW_VALIST "Liste de valeurs invalide pour ROW"
-#define MSG_BAD_ROW_VALNB "Nombre de valeurs inégal dans la liste"
-#define MSG_BAD_SCF_ARGTYPE "Argument %d de type=%s invalide pour %s"
-#define MSG_BAD_SEM_DOMAIN "Domain .%d invalide"
-#define MSG_BAD_SETTINGS "Certaines spécifications sont incompatibles avec le type de la table"
-#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_SET_TYPE "Set type %hd invalide"
-#define MSG_BAD_SPECIAL_CMD "Commande spéciale invalide"
-#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_SQL_PARAM "Paramètre SQL invalide pour FindColblk"
-#define MSG_BAD_SUBLST_TYPE "Coparm: type %d de sous-liste invalide"
-#define MSG_BAD_SUBSEL_IN_X "Sub-select invalide pour une expression"
-#define MSG_BAD_SUBSEL_TYPE "Type %d invalide retourné de Sub-Select"
-#define MSG_BAD_SUB_RESULT "Résultat indéfini de fonction Sub-Select"
-#define MSG_BAD_SUB_SELECT "Sub-select invalide comme argument de fonction"
-#define MSG_BAD_TABLE_LINE "Ligne '%s' illégale ou tronquée dans la section Tables"
-#define MSG_BAD_TABLE_LIST "Table %s absente de la liste des tables"
-#define MSG_BAD_TABLE_TYPE "Type invalide %s pour la table %s"
-#define MSG_BAD_TEST_TYPE "BlockTest sur tableau: types dépareillés %s %s"
-#define MSG_BAD_TRIM_ARGTYP "Argument de type invalide pour Trim"
-#define MSG_BAD_TYPE_FOR_IN "Types d'argument incompatibles pour la fonction IN"
-#define MSG_BAD_TYPE_FOR_S "Type incorrecte %d pour %s(%d)"
-#define MSG_BAD_TYPE_LIKE "Type(%d)= %d invalide pour LIKE"
-#define MSG_BAD_UPD_COR "Le qualificateur %s de la colonne %s ne se refère pas à la table mise à jour %s"
-#define MSG_BAD_USERBLK_LEN "Mauvaise longueur à l'écriture du bloc utilisateur"
-#define MSG_BAD_USETEMP "Usetemp invalide '%s'"
-#define MSG_BAD_USETEMP_VAL "Valeur pour Usetemp invalide %d"
-#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_BAD_VIEW_OPEN "Mode invalide %d pour l'ouverture d'une View"
-#define MSG_BAD_XMODE_VAL "Mode d'exécution %d invalide"
-#define MSG_BAD_XOBJ_TYPE "Mauvais type de Xobject %d"
-#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_BLOCK_NO_MATCH "Bloc non correspondant"
-#define MSG_BREAKPOINT "Point de contrôle"
-#define MSG_BUFF_TOO_SMALL "GetColData: Buffer trop petit"
-#define MSG_BUFSIZE_ERROR "Erreur en recherchant la taille du buffer"
-#define MSG_BUILDING_GROUPS "Formation des groupes"
-#define MSG_BUILD_DIST_GRPS "Formation des groupes distinctes"
-#define MSG_BUILD_INDEX "Construction index %s sur %s"
-#define MSG_BXP_NULL "Bxp nul dans PUTFON"
-#define MSG_CANNOT_OPEN "Ouverture impossible de %s"
-#define MSG_CD_ONE_STEP "Count Distinct doit être exécuté en une seule étape"
-#define MSG_CD_ORDER_ERROR "Erreur de tri dans Count Distinct"
-#define MSG_CHECKING_ROWS "Test des lignes à mettre à jour"
-#define MSG_CHECK_LEVEL "Niveau de vérification fixé à %u"
-#define MSG_CHSIZE_ERROR "Erreur dans chsize: %s"
-#define MSG_CLN_NOT_IN_JOIN "La colonne C%d n'est pas dans le join"
-#define MSG_CNTDIS_COL_LOST "Colonne du Count Distinct perdue"
-#define MSG_COLIST_BAD_TYPE "Type=%d invalide pour Colist"
-#define MSG_COLNAM_TOO_LONG "Nom de colonne trop long"
-#define MSG_COLSEC_TOO_BIG "Section colonne trop grande, table %s (%d)"
-#define MSG_COLS_REDUCED " (réduit par Maxcol)"
-#define MSG_COLUMN_ERROR "Erreur de colonne"
-#define MSG_COLUMN_MISMATCH "Colonne %s dépareillée"
-#define MSG_COLUMN_NOT_KEY "La colonne jointe R%d.%s n'est pas une clé"
-#define MSG_COL_ALLOC_ERR "Allocation impossible du noeud colonne"
-#define MSG_COL_ALLOC_ERROR "Erreur d'allocation mémoire pour la colonne %d"
-#define MSG_COL_HAS_NO_DEF "La colonne %s n'est pas définie"
-#define MSG_COL_INVAL_TABLE "La colonne %s.%s n'existe pas dans la table %s alias %s"
-#define MSG_COL_ISNOT_TABLE "La colonne %s n'est pas dans la table %s"
-#define MSG_COL_NB_MISM "Le nombre de colonnes ne correspond pas"
-#define MSG_COL_NOTIN_GRPBY "La colonne %s n'est pas dans la liste de Group By"
-#define MSG_COL_NOTIN_TABLE "La colonne %s n'est dans aucune table"
-#define MSG_COL_NOTIN_UPDT "%s n'appartient pas à la table mise à jour %s"
-#define MSG_COL_NOT_CODED "La colonne %s n'est pas codifiée"
-#define MSG_COL_NOT_EXIST "La colonne %s n'existe pas dans %s"
-#define MSG_COL_NOT_FOUND "La colonne %s n'est pas dans la table %s"
-#define MSG_COL_NOT_IN_DB "La colonne %s de la table %s n'est pas dans la base de données"
-#define MSG_COL_NOT_IN_JOIN "La colonne %s n'est pas dans le join"
-#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_COL_USED_TWICE "Colonne %s utilisée deux fois ???"
-#define MSG_COMPUTE_ERROR "Erreur dans Compute, op=%d"
-#define MSG_COMPUTE_NIY "Compute non implémenté pour TOKEN"
-#define MSG_COMPUTING "Calculs en cours"
-#define MSG_COMPUTING_DIST "Comptage des valeurs distinctes"
-#define MSG_COMPUTING_FUNC "Calcul de(s) fonction(s)"
-#define MSG_COM_ERROR "Erreur Com"
-#define MSG_CONCAT_SUBNODE "Concaténation de sous-noeuds impossible"
-#define MSG_CONNECTED "Connecté"
-#define MSG_CONNECT_CANCEL "Connection interrompue par l'utilisateur"
-#define MSG_CONNECT_ERROR "Erreur %d se connectant à %s"
-#define MSG_CONN_CLOSED "%s(%d) fermée"
-#define MSG_CONN_CREATED "Connexion %s crée"
-#define MSG_CONN_DROPPED "Connexion %s supprimée"
-#define MSG_CONN_OPEN "%s(%d) ouverte (%s)"
-#define MSG_CONN_SUC_OPEN "%s(%d) ouverte avec succès"
-#define MSG_CONTROL_C_EXIT "Exit par Ctrl-C"
-#define MSG_COPY_BAD_PHASE "Copie de liste invalide en phase %d"
-#define MSG_COPY_INV_TYPE "Coparm: type non supporté %d"
-#define MSG_CORREL_NO_QRY "Les sous-requêtes corrélées ne peuvent pas être de type QRY"
-#define MSG_CREATED_PLUGDB " Créé par PlugDB %s "
-#define MSG_CURSOR_SET "Curseur remis à %d"
-#define MSG_DATABASE_ACTIVE "Base de données %s activée"
-#define MSG_DATABASE_LOADED "Base de données %s chargée"
-#define MSG_DATA_IS_NULL "ExecSpecialCmd: data est NULL"
-#define MSG_DATA_MISALIGN "Mauvais alignement pour ce type de données"
-#define MSG_DBASE_FILE "Fichier dBASE dbf: "
-#define MSG_DB_ALREADY_DEF "Base de données %s déjà définie"
-#define MSG_DB_ALTERED "Base de données modifiée"
-#define MSG_DB_CREATED "Base de données %s créée"
-#define MSG_DB_NOT_SPEC "Base de données non spécifiée"
-#define MSG_DB_REMOVED "Base de données %s retirée de la liste"
-#define MSG_DB_SORT_ERROR "Erreur de tri DB"
-#define MSG_DB_STOPPED "Arrêt de la base de données %s"
-#define MSG_DEBUG_NOT_ACTIV "Mode Debug inactif"
-#define MSG_DEBUG_SET_INV "Invalide pour Debug: %c"
-#define MSG_DEF_ALLOC_ERROR "Erreur d'allocation de la classe DEF %s"
-#define MSG_DELETING_ROWS "Suppression des lignes"
-#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_DICTIONARY "Dictionnaire "
-#define MSG_DIRECT_VARTOK "Accès direct aux règles du Variable Token non implémenté"
-#define MSG_DISCONNECTED "Déconnecté"
-#define MSG_DISTINCT_ERROR "Plus d'un élément fonctionel DISTINCT"
-#define MSG_DISTINCT_ROWS "Sélection des lignes distinctes"
-#define MSG_DISTINCT_VALUES "Extraction des valeurs distinctes"
-#define MSG_DIS_NOHEAD_JOIN "Jointure distincte sur une table non en tête"
-#define MSG_DLL_LOAD_ERROR "Erreur %d au chargement du module %s"
-#define MSG_DOMAIN_EMPTY "Le domaine %s est vide"
-#define MSG_DOMAIN_ERROR "Colonne %s: disparité domaine(%s)/valeur(%s)"
-#define MSG_DOMAIN_FULL "Le domaine %s est plein (max=%d)"
-#define MSG_DOM_FILE_ERROR "Fichier domain %s introuvable"
-#define MSG_DOM_NOT_SUPP "MS-DOM non supporté par cette version"
-#define MSG_DOM_OPEN_ERROR "Erreur d'ouverture du domaine: %s"
-#define MSG_DOM_READ_ERROR "Erreur %d en lecture de domaine: %s"
-#define MSG_DOM_READ_ONLY "La table domaine %s est en lecture seulement"
-#define MSG_DOM_WRITE_ERROR "Erreur %d en écriture de domaine: %s"
-#define MSG_DONE "Effectué, rc=%d"
-#define MSG_DOSALMEM_NOMEM "Erreur d'allocation, pas assez de mémoire"
-#define MSG_DROP_DB_ERR "Echec du Drop sur le base de données %s"
-#define MSG_DSORT_LOG_ERROR "Kindex: Erreur logique de tri distincte"
-#define MSG_DUMMY_NO_COLS "Les tables DUMMY ne peuvent pas avoir de colonne"
-#define MSG_DUPLICAT_COUNT "Count sur plus d'une colonne"
-#define MSG_DUP_COL_NAME "La colonne %s existe en double"
-#define MSG_DUP_PROJNUM "Non unique projnum %d pour la colonne %s"
-#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_ENDSTR_MISMATCH "Fins de chaîne et de noeud ne correspondent pas"
-#define MSG_END_OF_DELETE "%d ligne(s) enlevée(s) en %.2lf sec"
-#define MSG_END_OF_INSERT "%d ligne(s) insérée(s) en %.2lf sec"
-#define MSG_END_OF_QUERY "%d ligne(s) extraite(s) en %.2lf sec"
-#define MSG_END_OF_UPDATE "%d ligne(s) modifiée(s) en %.2lf sec"
-#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_ERASED " et effacée"
-#define MSG_ERASE_FAILED " (échec de l'effacement)"
-#define MSG_ERROR "Erreur"
-#define MSG_ERROR_IN_LSK "Erreur %d dans lseek64"
-#define MSG_ERROR_IN_SFP "Erreur %d dans SetFilePointer"
-#define MSG_ERROR_NO_PARM "Paramètre absent (valide seulement pour %.8s.1 et %.8s.5)"
-#define MSG_ERROR_OPENING "Erreur à l'ouverture de : "
-#define MSG_ERR_NUM_GT_MAX "Erreur: Numval (%d) plus grand que Maxnum (%d)"
-#define MSG_ERR_READING_REC "Erreur lisant l'enregistrement %d de %s"
-#define MSG_ERR_RET_RULE "Retour erreur, règle=%u"
-#define MSG_ERR_RET_TYPE "Retour erreur, type=%d"
-#define MSG_EVAL_EXPIRED "Cette version d'évaluation est expirée"
-#define MSG_EVAL_ONLY "L'utilisation de cette Dll est pour évaluation seulement"
-#define MSG_EXECUTING "Exécution"
-#define MSG_EXECUTION_ERROR "Erreur d'exécution"
-#define MSG_EXEC_MODE_IS "Le mode d'exécution est %s"
-#define MSG_EXEC_MODE_RESET ". Mode remis à Execute"
-#define MSG_EXEC_MODE_SET "Mode d'exécution fixé à %s"
-#define MSG_EXIT_EVAL_ERR "Erreur pendant l'évaluation de Exit"
-#define MSG_EXIT_FROM_LANG "Fin du langage %s version %d.%d"
-#define MSG_FAIL_ADD_NODE "L'ajout du noeud %s dans la table a échoué"
-#define MSG_FETCHING_DATA "Recherche des données"
-#define MSG_FETCHING_ROWS "Recherche des lignes"
-#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_CLOSE_ERR "Erreur %d à la fermeture du fichier"
-#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_NOT_FOUND "Fichier %s introuvable"
-#define MSG_FILE_OPEN_YET "Fichier %s déjà ouvert"
-#define MSG_FILE_UNFOUND "Fichier %s non trouvé"
-#define MSG_FILGRP_NO_TABLE "Table %d manquante pour groupe filtre"
-#define MSG_FILTER_ATTACH "Filtre passé à Attach"
-#define MSG_FILTER_NO_TABLE "Filtre: première table manquante"
-#define MSG_FIND_BAD_TYPE "Recherche dans un tableau: type non conforme %s %s"
-#define MSG_FIX_OVFLW_ADD "Dépassement de capacité en addition"
-#define MSG_FIX_OVFLW_TIMES "Dépassement de capacité en mutiplication"
-#define MSG_FIX_UNFLW_ADD "Sous dépassement de capacité en addition"
-#define MSG_FIX_UNFLW_TIMES "Sous dépassement de capacité en multiplication"
-#define MSG_FLD_TOO_LNG_FOR "Champs %d trop long pour %s ligne %d de %s"
-#define MSG_FLTST_NO_CORREL "FilTest ne devrait être appelé que pour les sous-requêtes corrélées"
-#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_FNC_NOTIN_SLIST "Fonction de tri absente de la liste de sélection"
-#define MSG_FORMAT_ERROR "Erreur de formattage"
-#define MSG_FOXPRO_FILE "Fichier FoxPro: "
-#define MSG_FPUTS_ERROR "Erreur dans fputs: %s"
-#define MSG_FSBPARP_NULL "PUTFON: fsbparp est nul"
-#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_FUNC_REF_DEL "Référence à une fonction définie (règle %d) qui a été supprimée"
-#define MSG_FWRITE_ERROR "Erreur dans fwrite: %s"
-#define MSG_GETCWD_ERR_NO "?getcwd %s errno=%d"
-#define MSG_GETFILESIZE_ERR "Erreur %d dans GetFileSize"
-#define MSG_GET_DIST_VALS "Récupération des valeurs distinctes de "
-#define MSG_GET_ERROR "Erreur dans %s (colonne %d)"
-#define MSG_GET_FUNC_ERR "Erreur en recherche de la fonction %s: %s"
-#define MSG_GET_NAME_ERR "Erreur en retrouvant le nom d'une table SYS"
-#define MSG_GLOBAL_ERROR "Erreur d'allocation de Global (taille=%d)\n"
-#define MSG_GRAM_ALLOC_ERR "Erreur d'allocation dans Grammar Up"
-#define MSG_GRAM_MISMATCH "Avertissement: version de GRAMMAR perimée (sauvé sous GRAMMAR v%u)"
-#define MSG_GRAM_SUBSET_ERR "Erreur d'initialisation du dictionnaire de la grammaire"
-#define MSG_GRBY_TAB_NOTIMP "Group by avec tables jointes non implémenté"
-#define MSG_GROUPBY_NOT_ALL "Group By doit inclure toutes les sélections non-fonctionnelles"
-#define MSG_GROUP_ON_FUNC "Group by invalide sur colonne fonctionnelle"
-#define MSG_GRP_COL_MISM "Disparité colonne des groupes"
-#define MSG_GRP_LIST_MISMAT "Le groupement ne couvre pas la liste de sélection"
-#define MSG_GUARD_PAGE "Violation de page de garde"
-#define MSG_GZOPEN_ERROR "gzopen %s: erreur %d sur %s"
-#define MSG_GZPUTS_ERROR "Erreur dans gzputs: %s"
-#define MSG_HANDLE_IS_NULL "%s est NULL: erreur code: %d"
-#define MSG_HARRY_COMP_NIY "Compute non implémenté pour les chaînes codées"
-#define MSG_HAVING_FILTER "Traitement du Filtre Having"
-#define MSG_HBUF_TOO_SMALL "Buffer(%d) trop petit pour entête(%d)"
-#define MSG_HEAD_OPEN_ERROR "Erreur à l'ouverture du fichier header"
-#define MSG_HEAD_READ_ERROR "Erreur en lecture du fichier header %s"
-#define MSG_HEAD_WRITE_ERR "Erreur en écriture du fichier header"
-#define MSG_HI_OFFSET_ERR "Offset supérieur non nul"
-#define MSG_HUGE_DEFAULT "Huge est %d par défault"
-#define MSG_HUGE_WARNING_1 "Mémoire Huge non compatible 16-bit pour %d\n"
-#define MSG_HUGE_WARNING_2 "Résultats imprévisibles possibles\n"
-#define MSG_IDLE "Au repos"
-#define MSG_ILLEGAL_INSTR "Instruction illégale"
-#define MSG_ILL_FILTER_CONV "Conversion implicite illégale dans un filtre"
-#define MSG_INDEX_CREATED "Index %s créé sur %s"
-#define MSG_INDEX_DEF_ERR "Erreur sauvegardant l'index définition pour %s"
-#define MSG_INDEX_DROPPED "Index %s supprimé de %s"
-#define MSG_INDEX_INIT_ERR "Echec de l'initialisation de l'index %s"
-#define MSG_INDEX_NOT_DEF "Index %s non défini"
-#define MSG_INDEX_NOT_UNIQ "L'index n'est pas Unique"
-#define MSG_INDEX_ONE_SAVE "Les index sont sauvegardés dans un fichier unique"
-#define MSG_INDEX_SEP_SAVE "Les index sont sauvegardés dans des fichiers séparés"
-#define MSG_INDEX_YET_ON "L'index %s existe déjà sur %s"
-#define MSG_INDX_ALL_DROP "Tous les index de %s supprimé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_ERROR "Erreur à l'initialisation de %s"
-#define MSG_INIT_FAILED "L'initialisation de %s a échoué"
-#define MSG_INPUT "Entrée: "
-#define MSG_INPUT_KEYBD_YET "L'entrée est déjà au clavier"
-#define MSG_INSERTING "Insertion: "
-#define MSG_INSERT_ERROR "Insert erreur: usage multiple du fichier %s"
-#define MSG_INSERT_MISMATCH "Les listes colonne et valeur ne correspondent pas"
-#define MSG_INTERNAL "interne"
-#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_BIP "Bip invalide .%d"
-#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_INVALID_OPTION "Option invalide %s"
-#define MSG_INV_COLUMN_TYPE "Type %d Invalide pour la colonne %s"
-#define MSG_INV_COL_DATATYP "Type de données %d invalide pour la colonne %d"
-#define MSG_INV_COL_NUM "Colonne invalide %d"
-#define MSG_INV_COL_TYPE "Type de colonne %s invalide"
-#define MSG_INV_CONC_BIP "Bip invalide (seuls valides: %.8s.0 .1 and .5)"
-#define MSG_INV_DATA_PATH "Chemin vers les données 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_DOMAIN_TYPE "Type invalide %d"
-#define MSG_INV_FILTER "Filtre résiduel dans %s"
-#define MSG_INV_FNC_BUFTYPE "FNC: Type %d de l'argument invalide pour %s"
-#define MSG_INV_INFO_TYPE "Type d'info catalog invalide %d"
-#define MSG_INV_INIPATH "Inipath invalide "
-#define MSG_INV_MAP_POS "Position mémoire invalide"
-#define MSG_INV_OPERATOR "opérateur invalide %d\n"
-#define MSG_INV_PARAMETER "Paramètre invalide %s"
-#define MSG_INV_PARM_TYPE "Type de paramètre invalide"
-#define MSG_INV_QUALIFIER "Qalificateur '%s' invalide"
-#define MSG_INV_QUERY_TYPE "Type de requête %d 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_SET_SUBTYPE "Type de formattage %d invalide"
-#define MSG_INV_SPECIAL_CMD "%s: Commande spéciale invalide"
-#define MSG_INV_SUBTYPE "Sous type invalide %s"
-#define MSG_INV_TOK_DOMAIN "Le domaine %s n'existe pas"
-#define MSG_INV_TOPSEM_CMD "Commande TopSem invalide %c"
-#define MSG_INV_TRANSF_USE "Usage invalide en règle transformationnelle"
-#define MSG_INV_TYPE_SPEC "Spécification de type invalide (%.8s.%d)"
-#define MSG_INV_UPDT_TABLE "Table %s invalide pour Update"
-#define MSG_INV_VALUE_LIST "Liste de valeurs invalide pour Insert"
-#define MSG_INV_WHERE_JOIN "Clause Where invalide dans une requête de jointure"
-#define MSG_INV_WORK_PATH "Chemin de travail invalide"
-#define MSG_IN_ARGTYPE_MISM "Arguments de types incompatibles pour une expression IN"
-#define MSG_IN_USE " et en activité"
-#define MSG_IN_WITHOUT_SUB "IN ou EXISTS sans tableau ou subquery"
-#define MSG_IS_NOT_CONN "%s n'est pas une connexion définie"
-#define MSG_JCT_MISS_COLS "Colonnes manquantes pour une table JCT"
-#define MSG_JCT_MISS_TABLE "Table jointe manquante pour JCT"
-#define MSG_JCT_NO_FILTER "Filtrage impossible des tables virtuelles JCT"
-#define MSG_JCT_NO_KEY "Erreur logique JCT: clé manquante"
-#define MSG_JOIN_KEY_NO_COL "La clé de jointure n'est pas une colonne"
-#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_LANGUAGE_QUIT "%s libéré"
-#define MSG_LANG_ACTIVE "Langage %s actif"
-#define MSG_LANG_ALLOC_FAIL "PlugInitLang: Erreur d'allocation du bloc Lang"
-#define MSG_LANG_ALREADY_UP "Langage déjà en édition"
-#define MSG_LANG_BAD_SAVE "Langage %s peut-être incorrectement sauvegardé"
-#define MSG_LANG_NOT_FREED "Langage %s non libérable (pas dans la chaîne principale)"
-#define MSG_LANG_SAVED "Langage %s sauvegardé"
-#define MSG_LANG_WR_LEN_ERR "Erreur de longueur à l'écriture du bloc Lang"
-#define MSG_LDF_ALLOC_ERROR "Erreur d'allocation d'un LdfBlock"
-#define MSG_LDF_RN_MISMATCH "LDF: décalage des numéros de règle"
-#define MSG_LDF_WLEN_ERROR "Erreur de longueur en écrivant LdfData"
-#define MSG_LDF_W_LEN_ERROR "Erreur de longueur pour LdfData en écriture"
-#define MSG_LIC_NO_MYSQL "Votre licence actuelle ne permet pas l'utilisation du type MYSQL"
-#define MSG_LINEAR_ERROR "Erreur de linéarisation"
-#define MSG_LINE_LENGTH "Largeur d'impression fixée à %d"
-#define MSG_LINE_MAXLIN "Nombre de lignes de travail plafonné à %d"
-#define MSG_LINE_MAXRES "Nombre de lignes de résultat plafonné à %d"
-#define MSG_LINE_MAXTMP "Nombre de lignes intermédiaires plafonné à %d"
-#define MSG_LINE_TOO_LONG "La nouvelle ligne est trop longue"
-#define MSG_LINJOINDB_ERROR "Erreur système: appel incorrecte à LinJoinDB"
-#define MSG_LIST "--Liste--"
-#define MSG_LNG_NOT_IN_LIST "Le langage %s n'est pas dans la liste"
-#define MSG_LOADING_DB "Chargement description de la BD"
-#define MSG_LOADING_FAILED "Le chargement de %s a échoué"
-#define MSG_LOAD_CDLL_ERROR "Erreur au chargement de ConnDll: rc=%d"
-#define MSG_LOCSTRG_TOO_BIG "LOCSTRG: n trop grand ? (%d)\n"
-#define MSG_LOGICAL_ERROR "%s: Erreur logique"
-#define MSG_LRECL_TOO_SMALL "Lrecl trop petit (longueur en-tête = %d)"
-#define MSG_MAC_NO_DELETE "Pas de suppression de lignes pour les tables MAC"
-#define MSG_MAC_NO_INDEX "Pas d'accès direct aux tables MAC"
-#define MSG_MAC_READ_ONLY "Les tables MAC sont en lecture seulement"
-#define MSG_MAC_WIN_ONLY "Les tables MAC sont seulement sous Windows"
-#define MSG_MAKE_EMPTY_FILE "Génération du fichier vide %s: %s"
-#define MSG_MAKING "Génération"
-#define MSG_MAKING_DISTINCT "Regroupement des valeures distinctes"
-#define MSG_MALLOC_ERROR "Allocation mémoire impossible par %s"
-#define MSG_MALLOC_NULL "malloc retourne Null"
-#define MSG_MAP_NO_MORE "Le type %s n'est plus supporté"
-#define MSG_MAP_OBJ_ERR "Erreur %d à la fermeture du map objet"
-#define MSG_MAP_VEC_ONLY "MAP Insert permis seulement pour les tables VEC Estimate"
-#define MSG_MAP_VIEW_ERROR "MapViewOfFile %s erreur rc=%d"
-#define MSG_MAXSIZE_ERROR "Maxsize incalculable sur table ouverte"
-#define MSG_MAXTMP_TRUNCATE "Résultats intermédiaires tronqués par maxtmp=%d"
-#define MSG_MAX_BITMAP "Taille maxi des bitmaps d'optimisation fixée à %d"
-#define MSG_MEMSIZE_TOO_BIG "Erreur: memsize (%d) trop grand pour Length (%d)"
-#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_MEM_ALLOC_YET "Mémoire déjà allouée"
-#define MSG_METAFILE_NOTFND "Fichier Meta introuvable"
-#define MSG_MISPLACED_QUOTE "Appostrophe mal placée ligne %d"
-#define MSG_MISSING "Manquant: Value=%p Argval=%p Builtin=%d"
-#define MSG_MISSING_ARG "Argument manquant pour l'opérateur %d"
-#define MSG_MISSING_COL_DEF "Définition des colonnes manquante"
-#define MSG_MISSING_CONNECT "Connection #1 manquante"
-#define MSG_MISSING_EOL "Fin de ligne manquante dans %s"
-#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_POS "POS code manquant"
-#define MSG_MISSING_ROWNODE "Impossible de trouver le noeud de la ligne %d"
-#define MSG_MISSING_SERV_DB "Indication serveur et/ou base de données manquante"
-#define MSG_MISS_LEAD_COL "Colonne majeure %s manquante"
-#define MSG_MISS_NAME_LRECL "Nom du fichier et/ou LRECL manquant"
-#define MSG_MISS_TABLE_LIST "Liste des tables manquante"
-#define MSG_MISS_VCT_ELMT "Taille de bloc vectoriel manquante (Elements)"
-#define MSG_MIS_TAG_LIST "Liste des balises colonne manquante"
-#define MSG_MKEMPTY_NIY "MakeEmptyFile: pas encore implementé pour Huge et Unix"
-#define MSG_MOVE_INV_TYPE "MOVPARM: paramètre de type invalide %d"
-#define MSG_MULT_DISTINCT "Distinct utilisé plus d'une fois"
-#define MSG_MULT_KEY_ERROR "Erreur sur clé multiple k=%d n=%d"
-#define MSG_MUL_MAKECOL_ERR "Erreur logique dans TABMUL::MakeCol"
-#define MSG_MYSQL_CNC_OFF "La connexion à MySQL est fermée"
-#define MSG_MYSQL_CNC_ON "La connexion à MySQL est établie"
-#define MSG_MYSQL_NOT_SUP "Pas de support de MySQL dans cette version"
-#define MSG_MY_CNC_ALREADY "La connexion à MySQL est déjà active"
-#define MSG_NAME_CONV_ERR "Erreur de convertion du nom de noeud"
-#define MSG_NAME_IS_USED "Le nom %s est déjà utilisé"
-#define MSG_NCOL_GT_MAXCOL "Trop de colonnes (%d > %d max)"
-#define MSG_NEW_CHAR_NULL "new char(%d) retourne Null"
-#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_NEW_TABLE_ERR "La nouvelle table %s ne peut pas être chargée"
-#define MSG_NEXT_FILE_ERROR "Erreur en recherche du fichier suivant. rc=%s"
-#define MSG_NODEF_FROM_VIEW "Pas de définition de table depuis une view"
-#define MSG_NODE_FOR_CHAR "Noeud %s trouvé au lieu d'un caractère"
-#define MSG_NODE_SUBSET_ERR "Erreur d'initialisation de la zone Noeud %d"
-#define MSG_NONCONT_EXCEPT "Exception non-continuable"
-#define MSG_NON_DUP_HAVING "Clause Having dans une requête non fonctionelle"
-#define MSG_NON_EVAL_SEM "Sem non évaluée: p_no=%d"
-#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_ENOUGH_COLS "Pas assez de colonnes dans %s"
-#define MSG_NOT_ENOUGH_MEM "Mémoire insuffisante pour cette opération"
-#define MSG_NOT_FIXED_LEN "Fichier %s non fixe, len=%d lrecl=%d"
-#define MSG_NOT_IMPLEMENTED "Non implementé: %.8s"
-#define MSG_NOT_IMPL_JOIN "Pas implémenté pour les jointures"
-#define MSG_NOT_IMPL_SET "Pas implémenté pour les opérateurs d'ensembles"
-#define MSG_NOT_IMPL_YET "Pas encore implementé"
-#define MSG_NOT_LINEARIZED "Arborescence des tables non linéarisée"
-#define MSG_NOT_MODIFIABLE " (non modifiable)"
-#define MSG_NO_0DH_HEAD "0DH manquant en fin d'en-tête (dbc=%d)"
-#define MSG_NO_ACTIVE_APPL "Pas d'application active"
-#define MSG_NO_ACTIVE_DB "Pas de base de données active"
-#define MSG_NO_ACTIVE_UDIC "Pas de dictionaire utilisateur actif"
-#define MSG_NO_AGGR_FUNC "Fonction aggrégée %d illégale à cet endroit"
-#define MSG_NO_AREA_FILE "Fichier Area introuvable"
-#define MSG_NO_AVAIL_RESULT "Pas de résultat disponible"
-#define MSG_NO_BIG_DELETE "Délétion Partielle non implémentée pour les fichiers HUGE"
-#define MSG_NO_CHAR_FROM "Conversion de type %d en caractères impossible"
-#define MSG_NO_CLUSTER_COL "Pas de colonne optimisable"
-#define MSG_NO_COL_ADDING "Ajouter des colonnes dans une définition existante est impossible"
-#define MSG_NO_COL_DEF_AS "La définitions des colonnes est incompatible avec AS Select"
-#define MSG_NO_COL_FOUND "La section colonne %s est vide"
-#define MSG_NO_COL_IN_TABLE "La colonne %d n'est pas dans la table %s"
-#define MSG_NO_COL_SECTION "Section colonne manquante pour la table %s"
-#define MSG_NO_CONNECT_ADDR "Adresse de connection non spécifiée"
-#define MSG_NO_CONST_FILTER "Filtres constants non implementés"
-#define MSG_NO_CURLY_BRKT "Pas d'accolade de fermeture"
-#define MSG_NO_DATABASE "Base de données %s introuvable"
-#define MSG_NO_DATE_FMT "Pas de format date pour le valblock de type %d"
-#define MSG_NO_DBF_INSERT "Insert pas encore implémenté pour les fichier DBF"
-#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_DMY_DIR_ACC "Pas d'accès direct aux tables virtuelles DUMMY"
-#define MSG_NO_DOM_DELETE "Délétion Partielle non implémentée pour les domaines"
-#define MSG_NO_DOM_MATCH "Chaîne %.8s... non touvée dans le domaine %s"
-#define MSG_NO_EDITED_LANG "Coparm: Pas de langage en édition"
-#define MSG_NO_EXP_LINK "Liaison par expression invalide pour une table JCT"
-#define MSG_NO_EXT_FILTER "Le filtrage ne peut se référer à une autre table"
-#define MSG_NO_EXT_UPDATE "Pas de mise à jour en référence à une autre table"
-#define MSG_NO_FEAT_SUPPORT "%s non supporté dans cette version"
-#define MSG_NO_FILE_LIST "La table %s n'a pas de liste de fichiers"
-#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_FULL_JOIN "Jointures autorisées seulement à égalité sur clé(s)"
-#define MSG_NO_FUL_OUT_JOIN "Jointures externes complètes non supportées"
-#define MSG_NO_FUNC_ORDER "Tri non supporté sur élément fonctionnel"
-#define MSG_NO_HEAD_JOIN "Jointure sur une table non en tête"
-#define MSG_NO_HQL_CONV "Conversion en HQL non disponible"
-#define MSG_NO_INDEX "La table %s n'a pas d'index"
-#define MSG_NO_INDEX_GBX "Pas ou mauvais index pour SQLGBX"
-#define MSG_NO_INDEX_IN "Pas d'index dans %s"
-#define MSG_NO_INDEX_READ "Pas d'accès directe des tables multiples"
-#define MSG_NO_INIT_LANG "Pas de langage initial"
-#define MSG_NO_JOIN_TO_EXP "Jointure vers une expression impossible"
-#define MSG_NO_JOIN_UPDEL "Pas de jointure avec Update/Delete"
-#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_LANGUAGE "Pas de langage opérationnel\n"
-#define MSG_NO_LANG_TO_QUIT "Pas de langage à quitter"
-#define MSG_NO_LISTVAL_HERE "LSTBLK: Liste de valeurs utilisée hors contexte"
-#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_MEM_CORR_SUB "Subquery corrélée en mémoire non encore implémentée"
-#define MSG_NO_MODE_PADDED "Mode non supporté pour les fichiers 'padded'"
-#define MSG_NO_MORE_COL "La colonne %s n'est plus dans la table pivot"
-#define MSG_NO_MORE_LANG "Plus de langage, exit de %s\n"
-#define MSG_NO_MORE_VAR "Les fichiers VAR ne sont plus supportés"
-#define MSG_NO_MULCOL_JOIN "Jointure vers un index multi-colonne pas encore possible"
-#define MSG_NO_MULT_HAVING "Clauses Having multiples non implémentées"
-#define MSG_NO_MUL_DIR_ACC "Accès direct des tables multiples pas encore implémenté"
-#define MSG_NO_MUL_VCT "Les tables VCT ne peuvent pas être multiples"
-#define MSG_NO_MYSQL_CONN "Aucune connexion MySQL ouverte"
-#define MSG_NO_MYSQL_DELETE "Pas de Delete pour les tables MySQL"
-#define MSG_NO_NBCOL "Pas de NBcol"
-#define MSG_NO_NBLIN "Pas de NBlin, MaxSize ou Continued"
-#define MSG_NO_NBLIN_CONT "Fetch: Pas de NBlin ou Continued"
-#define MSG_NO_NULL_CONST "Les constantes <null> ne sont pas prises en charge"
-#define MSG_NO_ODBC_COL "Colonnes ODBC automatiques non supportées par cette version"
-#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_OPT_COLUMN "Pas optimisable ou pas de colonne optimisées"
-#define MSG_NO_OP_MODIF "Les modificateurs ne s'appliquent pas à %s"
-#define MSG_NO_PARAMETER "Pas de paramètre"
-#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_POS_ADDED "Pos_code non ajouté"
-#define MSG_NO_PROMPTING "Relance impossible pour les tables distribuées"
-#define MSG_NO_QRY_DELETE "Delete n'est pas utilisable pour les views QRY"
-#define MSG_NO_QUERY_ARRAY "Tableaux avec QUERY non encore implémentés"
-#define MSG_NO_RCUR_DSK_YET "Usage recursif de DISK non encore implementé"
-#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_REF_DELETE "Pas de suppression en référence à une autre table"
-#define MSG_NO_REF_UPDATE "Pas de mise à jour en référence à une autre table"
-#define MSG_NO_REMOTE_FNC "Certaines fonctions ne peuvent pas être exécutées à distance"
-#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_SELECTED_DB "Aucune base de données sélectée"
-#define MSG_NO_SELF_PIVOT "Une table ne peut se pivoter elle-même !"
-#define MSG_NO_SERVER_FOUND "Serveur introuvable"
-#define MSG_NO_SETPOS_YET "SetPos pas encore implémenté pour les fichier %s"
-#define MSG_NO_SFEXIT_UNIX "Fonction %s non disponible sur Unix"
-#define MSG_NO_SOURCE " (pas de source)"
-#define MSG_NO_SPEC_COL "Pas de colonne spéciales MYSQL"
-#define MSG_NO_SQL_DELETE "Delete n'est pas utilisable actuellement pour les views SQL"
-#define MSG_NO_SUB_VAL "Pas de sous-value d'un tableau de type %d"
-#define MSG_NO_SUCH_INDEX "La table %s n'a pas l'index %s"
-#define MSG_NO_SUCH_SERVER "Serveur %s introuvable"
-#define MSG_NO_SUCH_TABLE "Table %s pas dans la base de données"
-#define MSG_NO_TABCOL_DATA "Pas de données pour la table %s colonne %s"
-#define MSG_NO_TABLE_COL "Aucune colonne trouvée pour %s"
-#define MSG_NO_TABLE_DEL "Delete non autorisé pour les tables %s "
-#define MSG_NO_TABLE_DESC "Pas de bloc descriptif de table"
-#define MSG_NO_TABLE_INDEX "La table %s n'a pas d'index"
-#define MSG_NO_TABLE_LIST "Pas de liste de tables"
-#define MSG_NO_TAB_DATA "Pas de données pour la table %s"
-#define MSG_NO_TERM_IN_TOK "Les non-terminaux ne sont pas utilisables dans les règles de Token"
-#define MSG_NO_TOKEN_DB "DB introuvable pour la colonne TOKEN %s"
-#define MSG_NO_UNIX_CATINFO "Pas d'info catalogue sous Unix"
-#define MSG_NO_UPDEL_JOIN "Pas de jointure de tables ODBC pour Update/Delete"
-#define MSG_NO_VCT_DELETE "Délétion Partielle non implémentée pour les fichiers VCT"
-#define MSG_NO_VIEW_COLDEF "Colonne définition impossible pour les views"
-#define MSG_NO_VIEW_SORT "La View fonctionnelle %s ne peut pas être triée ou jointe"
-#define MSG_NO_ZIP_DELETE "Delete sur fichier Zip non encore implementé"
-#define MSG_NO_ZIP_DIR_ACC "Accès directe des tables ZDOS non encore implementé"
-#define MSG_NULL_COL_VALUE "La colonne n'a pas de valeur"
-#define MSG_NULL_ENTRY "InitLang, entrée nulle %d %s"
-#define MSG_NULL_QUERY "Requête vide"
-#define MSG_NUMVAL_NOMATCH "Disparité de Numval pour %s"
-#define MSG_N_FULL_PARSES "%d significations"
-#define MSG_ODBC_READ_ONLY "ODBC est actuellement en lecture seulement"
-#define MSG_OFFSET_NOT_SUPP "Offset non supporté pour ce type de sous requête"
-#define MSG_ONE_LANG_YET "Un langage est déjà en édition"
-#define MSG_ONE_PARAM_ONLY "Un seul paramètre autorisé"
-#define MSG_ONLY_LOG10_IMPL "Seul Log10 est implementé"
-#define MSG_ON_LANGUAGE "Langage %.8s version %d niveau %d éditable"
-#define MSG_OPENING "Ouverture"
-#define MSG_OPENING_QUERY "Ouverture de la requête"
-#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_ERROR_ON "Erreur d'ouverture sur %s"
-#define MSG_OPEN_MODE_ERROR "Erreur d'ouverture(%s) %d sur %s"
-#define MSG_OPEN_SORT_ERROR "Erreur logique de tri dans QUERY Open"
-#define MSG_OPEN_STRERROR "Erreur à l'ouverture: %s"
-#define MSG_OPEN_W_ERROR "Erreur à l'ouverture de %s en écriture"
-#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_INIT "Optimisation initialisée"
-#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_OP_RES_TOO_LONG "Résultat trop long pour l'opérateur=%d"
-#define MSG_ORDER_OUT_RANGE "Tri: Order %d hors limite"
-#define MSG_ORDER_TWICE "Un même élément est trié deux fois"
-#define MSG_PAGE_ERROR "Erreur de pagination"
-#define MSG_PARM_CNT_MISS "Disparité du nombre de Paramètres"
-#define MSG_PARSE_NULL_SEM "Sémantique nulle"
-#define MSG_PARSING_QUERY "Analyse de la requête"
-#define MSG_PIX_ERROR "Pix %s erreur règle no=%u\n"
-#define MSG_PIX_TEST_ERROR "Règle=%u: pix-TEST pas dans le premier noeud\n"
-#define MSG_PLG_READ_ONLY "PLG est actuellement en lecture seulement"
-#define MSG_PLM_NULL_SFP "TABPLM ReadDB: Sfp est NULL"
-#define MSG_PLUG_NOT_INIT "Plug n'est pas initialisé\n"
-#define MSG_PLUG_NOT_RUN "Plug n'est pas en marche"
-#define MSG_PNODE_RULE "(Noeud %d règle %d) "
-#define MSG_POS_TOO_LONG "%s trop long (>%d)"
-#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_PROCESS_SUBQRY "Sub-Query en cours de traitement"
-#define MSG_PROC_WOULD_LOOP "Bouclage du traitement (maxres=%d maxlin=%d)"
-#define MSG_PROGRESS_INFO "Informations sur le traitement en cours"
-#define MSG_PROMPT_CANCEL "Relance annulée"
-#define MSG_PROMPT_NIY "Prompt non implémenté pour cette configuration"
-#define MSG_PTR_NOT_FOUND "Pointeur introuvable Num=%d ti1=%d"
-#define MSG_PXDEF_IS_NULL "Pxdef est NULL"
-#define MSG_QRY_READ_ONLY "Les views QRY sont en lecture seulement"
-#define MSG_QUERY_CANCELLED "Requête interrompue par l'utilisateur"
-#define MSG_QUERY_NOT_EXEC "Requête non exécutée"
-#define MSG_QUERY_SAVED "Requête %s sauvegardée"
-#define MSG_QUOTE_IN_QUOTE "Appostrophe dans un champ entre appostrophe ligne %d"
-#define MSG_RANGE_NIY "Range pas encore implémenté pour %s"
-#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_READB_BAD_INIT "%s ReadDB appelé avec Init=0"
-#define MSG_READCOL_ERROR "SQLCOL: erreur dans ReadColumn"
-#define MSG_READING "Lecture"
-#define MSG_READING_FROM "Lecture de %s"
-#define MSG_READING_RECORD "Erreur en lecture de l'enregistrement %d de %s"
-#define MSG_READY "Prêt"
-#define MSG_READ_ERROR "Erreur en lecture sur %s: %s"
-#define MSG_READ_ERROR_RC "Erreur en lecture, rc=%d"
-#define MSG_READ_MEM_ERROR "Lecture mémoire %d: taille=%d"
-#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_READ_SEG_ERROR "Lecture segment %d: taille=%d"
-#define MSG_RECEIVED "Reçu %c\n"
-#define MSG_RECORD_ERROR "Erreur à la lecture de l'enregistrement %d de %s"
-#define MSG_RECORD_NO_SEP "Enregistrement sans séparateur"
-#define MSG_REC_SKIPPED " (%d lignes erronnées sautées par l'option MaxErr)"
-#define MSG_REDUCE_INDEX "Réduction de l'index"
-#define MSG_REGISTER_ERR "Enregistrement NS impossible, préfix='%s' et href='%s'"
-#define MSG_REMOTE_CONN_ERR "La connection éloignée a échoué"
-#define MSG_REMOVE_ERROR "Erreur en supprimant %s: %s"
-#define MSG_REMOVE_NOT_IMPL "Remove non implémenté pour TDB non Table"
-#define MSG_RENAME_ERROR "Erreur renommant %s en %s: %s"
-#define MSG_RENUM_RULES "Renumérotez les règles et réentrez ADD (règle sauvegardée dans la zone tampon)"
-#define MSG_REORDER_INDEX "Reclassement de l'index"
-#define MSG_REQU_ARG_NUM "La fonction %s doit avoir %d arguments"
-#define MSG_RESET_TO "%s remis à %d"
-#define MSG_RES_NOT_UNIQUE "Le résultat n'est pas unique"
-#define MSG_RET_FROM_LANG "Retour au language %s version %d.%d du language %s version %d.%d"
-#define MSG_ROWID_NOT_IMPL "RowNumber non implémenté pour les tables de type %s"
-#define MSG_ROWS_SELECTED "%d lignes sélectionnées en %.2lf sec"
-#define MSG_ROWS_TRUNCATED " (tronqué par MAXRES, LIMIT, FREQ ou AreaSize)"
-#define MSG_ROW_ARGNB_ERR "ROW: disparité du nombre d'arguments (%d,%d)"
-#define MSG_RPC_SERVER_ERR "Erreur logique dans TABMUL::MakeCol"
-#define MSG_RSC_ALLOC_ERROR "Erreur d'allocation mémoire dans Rescol %s"
-#define MSG_RULE_ENTERED "Règle %d entrée"
-#define MSG_RULE_SUBSET_ERR "Erreur d'initialisation de la zone Règles"
-#define MSG_SAVING_INDEX "Sauvegarde du fichier index"
-#define MSG_SCAN_NOT_IMP "Scan non implémenté"
-#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_SEC_NOT_FOUND "Section %s absente de %s"
-#define MSG_SEEK_ERROR "Seek erreur dans CopyHeader"
-#define MSG_SEMANTIC_TREE "Arbre sémantique"
-#define MSG_SEM_BAD_REF "Sem @%d référence un argument de type non 0 ou 1"
-#define MSG_SEM_UNKNOWN "inconnue, rc=%d"
-#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_LOCALE "Locale fixée à %s"
-#define MSG_SET_NULL_DOM "Valeur %d donnée à un domaine nul"
-#define MSG_SET_OP_NOT_IMPL "Opérateurs ensemblistes non implementés"
-#define MSG_SET_STR_TRUNC "SetValue: Chaîne de caractères tronquée"
-#define MSG_SEVERAL_TREES "Jointure non spécifiée pour certaines tables"
-#define MSG_SFP_ERROR "Erreur sur SetFilePointer: %s"
-#define MSG_SFUNC_NOT_IMPL "Fonction scalaire %s non implémentée"
-#define MSG_SHARED_LIB_ERR "Erreur au chargement de la librairie partagée %s: %s"
-#define MSG_SINGLE_STEP "Pas à pas"
-#define MSG_SLEEP "J'ai dormi %d milliseconds"
-#define MSG_SMART_SORTING "Récupération des lignes triées (passage %d de %d)"
-#define MSG_SMART_SORT_ERR "Erreur logique 1 dans Smart Sort"
-#define MSG_SORTING "Tri en cours"
-#define MSG_SORTING_INDEX "Tri de l'index"
-#define MSG_SORTING_VAL "Tri de %d valeurs"
-#define MSG_SORT_JOIN_INDEX "Tri de l'index de jointure"
-#define MSG_SPCOL_READONLY "La colonne spéciale %s est en lecture seulement"
-#define MSG_SPEC_CMD_SEP "Les commandes spéciales doivent être exécutées séparément"
-#define MSG_SQL_BAD_TYPE "RephraseSQL: type %d non supporté"
-#define MSG_SQL_BLOCK_MISM "CheckColumn: bloc SQL courant non correspondant"
-#define MSG_SQL_CONF_ERROR "Erreur SQL: SQL_CONFORMANCE"
-#define MSG_SQL_READ_ONLY "Les views SQL sont actuellement en lecture seulement"
-#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_ERROR "Erreur sur la pile, i=%d\n"
-#define MSG_STACK_OVERFLOW "Parser: Débordement de la pile\n"
-#define MSG_STRG_NOT_FOUND "Chaîne introuvable"
-#define MSG_STRING_INV_LIST "Liste invalide pour SemString"
-#define MSG_STRING_TOO_BIG "Chaîne trop grande pour le domaine %s"
-#define MSG_SUBALLOC_ERROR "Pas assez de mémoire en zone %p pour allouer %d (utilisé=%d libre=%d)"
-#define MSG_SUBAL_HUGE_ERR "Pas assez de mémoire en zone huge %p pour allouer %d"
-#define MSG_SUBARG_NOSEM "Argument @ ou sous-phrase de niveau %d pointe sur un noeud sans Sem"
-#define MSG_SUBARG_OUTRANGE "Argument @ ou sous-phrase de niveau %d hors limite"
-#define MSG_SUBQRY_ONEITEM "Une Sub-Query ne doit avoir qu'une sélection"
-#define MSG_SUBSET_ERROR "SubSet erreur dans LoadDB"
-#define MSG_SUB_OPEN_YET "Subquery déjà ouverte"
-#define MSG_SUB_RES_TOO_LNG "Résultat trop long pour SUBSTR"
-#define MSG_SYNTAX_ERROR "Erreur de syntaxe"
-#define MSG_SYSTEM_ERROR "Erreur système %d"
-#define MSG_S_ACCESS_DENIED "%s: accès non autorisé"
-#define MSG_S_ERROR "%s erreur"
-#define MSG_S_ERROR_NUM "%s: erreur=%d"
-#define MSG_S_INTRUPT_ERROR "%s: erreur interruption"
-#define MSG_S_INVALID_PARM "%s: paramètre invalide"
-#define MSG_S_INV_ADDRESS "%s: adresse invalide"
-#define MSG_S_UNKNOWN_ERROR "%s: erreur de code %u inconnu"
-#define MSG_TABDIR_READONLY "Les tables DIR sont en lecture seulement"
-#define MSG_TABLE_ALREADY "La table %s existe déjà"
-#define MSG_TABLE_ALTERED "Table %s %s altérée"
-#define MSG_TABLE_CREATED "%s table %s créée"
-#define MSG_TABLE_DROPPED "Table %s supprimée"
-#define MSG_TABLE_MULT_JOIN "Utilisation multiple de la table %s pour jointure"
-#define MSG_TABLE_NOT_IN_DB "La table %s n'existe pas dans %s"
-#define MSG_TABLE_NOT_OPT "Table non optimisable"
-#define MSG_TABLE_NO_INDEX "La table %s n'est pas indexable"
-#define MSG_TABLE_NO_OPT "La table %s n'existe pas ou de type non optimisable"
-#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_TAB_NOT_LOADED " (certaines tables n'ont put être chargées)"
-#define MSG_TAB_NOT_SPEC "Table non specifiée"
-#define MSG_TB_VW_NOTIN_DB "Table ou view %s pas dans la base de données"
-#define MSG_TDB_NXT_NOT_NUL "Tdb.Next non NULL"
-#define MSG_TDB_USE_ERROR "Erreur, Tdbp->Use=%d"
-#define MSG_TOO_MANY_COLS "Trop de colonnes"
-#define MSG_TOO_MANY_COLTAB "Trop de colonnes dans %s (%d)"
-#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_TOO_MANY_POS "Trop de pos_codes"
-#define MSG_TOO_MANY_TABLES "Trop de tables (%d)"
-#define MSG_TOPSEM_ERROR "Erreur inconnue dans TopSem"
-#define MSG_TO_BLK_IS_NULL "To Blk est nul"
-#define MSG_TO_FTR_NOT_NULL "Set.To_Ftr n'est pas nul"
-#define MSG_TO_PIX_NOT_NULL "Set.To_Pix n'est pas nul"
-#define MSG_TO_SEM_NOT_NULL "Set.To_Sem n'est pas nul"
-#define MSG_TRUNCATE_ERROR "Erreur en troncation: %s"
-#define MSG_TRUNC_BY_ESTIM "Tronqué par l'option Estimate"
-#define MSG_TYPES_ERROR "Erreur sur Types(%d)"
-#define MSG_TYPE_CONV_ERROR "Type non convertible dans une expression"
-#define MSG_TYPE_DEF_MISM "Disparité entre type et définition"
-#define MSG_TYPE_MISMATCH "Clé et source ne sont pas du même type"
-#define MSG_TYPE_RECFM_MISM "Disparité entre Type et Recfm"
-#define MSG_TYPE_TO_VERIFY "Type à vérifier: %d"
-#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_UNDEFINED_PATH "Chemin d'accès indéfini pour Plgcnx.ini"
-#define MSG_UNDEF_COL_COUNT "Count sur colonne non définie"
-#define MSG_UNKNOWN_DOMAIN "Domaine inconnu %s"
-#define MSG_UNKNOWN_ERROR "Erreur inconnue"
-#define MSG_UNKNOWN_EXCPT "Exception non répertoriée"
-#define MSG_UNKNOWN_NAME "Nom inconnu: %.8s"
-#define MSG_UNKNOWN_PATH "Chemin d'accès inconnu pour Plgcnx.ini"
-#define MSG_UNKNOWN_POS "Nom pos_code inconnu: %s"
-#define MSG_UNKNOWN_SEM "Sem %.8s inconnue, rc=%d"
-#define MSG_UNKNOWN_SYNONYM "Synonyme inconnu"
-#define MSG_UNKNW_QRY_TYPE "ReadDB: type de requête inconnu"
-#define MSG_UNKN_ERR_CODE "Erreur de code %d inconnu"
-#define MSG_UNLOADABLE " inchargeable: "
-#define MSG_UNLOADABLE_PRM "%s inchargeable: %s"
-#define MSG_UNMATCH_FIL_ARG "Argument de filtre dépareillé"
-#define MSG_UNQ_COL_SEV_TAB "La colonne %s non qualifiée est dans plusieurs tables"
-#define MSG_UNRESOLVED_ARG "?Argument manquant: %s non résolu en %d ligne %d"
-#define MSG_UPDATE_ERROR "Erreur en Update sur %s"
-#define MSG_UPDATING_ROWS "Mise à jour des lignes"
-#define MSG_UPD_ZIP_NOT_IMP "Mise à jour des tables ZDOS non encore implementé"
-#define MSG_UP_LANGUAGE "Bloc langage %.8s version %d niveau %d chargé"
-#define MSG_USED_FREE_MEM "Sarea: utilisé %d, libre %d"
-#define MSG_USETEMP_IS "Usetemp est : %s"
-#define MSG_USETEMP_RESET ". Usetemp remis à Auto"
-#define MSG_USETEMP_SET "Usetemp fixé à %s"
-#define MSG_USE_NO_MATCH "Use non correspondant : Use=%d, ti2=%d, ti3=%d"
-#define MSG_USING_INDEX " (Indexé par"
-#define MSG_VALIST_MISMATCH "Disparité des listes de valeurs"
-#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_NOT_ALLOC "Valeur non allouée pour la colonne R%d %s"
-#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_VAL_TOO_LONG "Valeur %s trop longue pour le champ %s"
-#define MSG_VIEW_ALREADY "La VIEW %s existe déjà"
-#define MSG_VIEW_CREATED "%s view %s créée"
-#define MSG_VIEW_DROPPED "View %s supprimée"
-#define MSG_VIEW_NOT_IN_DB "%s n'est pas une View de %s"
-#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_VM_LANG "Langage au format VM, non supporté"
-#define MSG_VOID_FIRST_ARG "Le premier argument ne doit pas être vide"
-#define MSG_VOID_IN_STRING "Erreur: chaîne IN vide"
-#define MSG_VOID_ORDER_LIST "Liste de tri vide, erreur système ?"
-#define MSG_VOID_POS_DICT "Dictionnaire interne du langage vide"
-#define MSG_VOID_QUERY "Requête vide %s"
-#define MSG_WORK_AREA "Espace de travail: %s"
-#define MSG_WORK_TOO_SMALL "Zone de travail trop petite, accroître AreaSize"
-#define MSG_WRITE_ERROR "Erreur à l'écriture de %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_WRITING_QUERY "Erreur à l'écriture de la requête: "
-#define MSG_WRONG_ARG_NUM "La fonction %s ne prend pas %d arguments"
-#define MSG_WRONG_COL_NUM "Numéro de colonne %d trop grand pour %s"
-#define MSG_WRONG_DB_LIST "Liste des bases de données incorrecte ou vide"
-#define MSG_WRONG_FUNCTION "Mauvaise fonction %d"
-#define MSG_WRONG_OP_PARM "Mauvais opérateur ou paramètres pour %s"
-#define MSG_WRONG_PARMS "Mauvais paramètres pour %s"
-#define MSG_WRONG_PASSWORD "Mot de passe illégal pour %s"
-#define MSG_WRONG_TYPE "type non supporté"
-#define MSG_WRONG_USERFILE "La Userfile a une mauvaise taille %d"
-#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_XDB_DEL_ERROR "Erreur en supprimant des entrées du fichier XDB"
-#define MSG_XFILE_READERR "Erreur %d en lisant le fichier index"
-#define MSG_XFILE_TOO_SMALL "Le fichier index est plus petit que la taille de l'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"
-#define MSG_X_ARG_ADDED "%d arguments ajoutés"
-#define MSG_X_ARG_SET "%d arguments ont été initialisés"
-#define MSG_X_ON_TAB " %s sur %s("
-#define MSG_ZERO_DIVIDE "Division par zéro dans une expression"
diff --git a/storage/connect/frmsg2.h b/storage/connect/frmsg2.h
deleted file mode 100644
index 487db3395fb..00000000000
--- a/storage/connect/frmsg2.h
+++ /dev/null
@@ -1,1013 +0,0 @@
-#define MSG_ACCESS_VIOLATN "Violation accŠs m‚moire"
-#define MSG_ACT_ALLOC_FAIL "PlugInitLang: Erreur d'allocation du bloc Activity"
-#define MSG_ADDVAL_ERROR "Erreur %d dans AddValue"
-#define MSG_ADD_BAD_TYPE "Ajout d'une valeur de type %s non conforme dans un tableau %s"
-#define MSG_ADD_NULL_DOM "Ajout de la chaŒne %s … un domaine nul"
-#define MSG_ADPOS_IN_DICTP "ADPOS au travail dans User_Dictp"
-#define MSG_AFTER " aprŠs: "
-#define MSG_ALG_CHOICE_AUTO "Le choix du meilleur algorithme est automatique"
-#define MSG_ALG_CHOICE_BAD "Choix d'algorithme invalide, remis … AUTO"
-#define MSG_ALG_CHOICE_QRY "Utilise l'algorithme 'Query'"
-#define MSG_ALG_CURLY_BRK "Le choix de l'algorithme d‚pend des accolades externes"
-#define MSG_ALLOC_ERROR "Erreur d'allocation de %s"
-#define MSG_ALL_DELETED "Toutes les lignes enlev‚es en %.2lf sec"
-#define MSG_ALTER_DB_ERR "Impossible de d‚terminer la base de donn‚es … modifier"
-#define MSG_AMBIG_COL_QUAL "Qualificateur ambigu %s pour la colonne %s"
-#define MSG_AMBIG_CORREL "Select %s.* corr‚lation ambigue"
-#define MSG_AMBIG_SPEC_COL "Colonne sp‚ciale ambigue %s"
-#define MSG_ANSWER_TYPE "R‚ponse de type"
-#define MSG_API_CONF_ERROR "Erreur SQL: API_CONFORMANCE"
-#define MSG_APPL_ACCESSIBLE "Application %s accessible"
-#define MSG_APPL_ACTIVE "Application %s encore active"
-#define MSG_APPL_BAD_SAVE "Application %s partiellement sauvegard‚e"
-#define MSG_APPL_CREATED "Application %s cr‚‚"
-#define MSG_APPL_IS_ACTIVE "Application d‚j… active"
-#define MSG_APPL_NOT_INIT "Application non initialis‚e"
-#define MSG_APPL_NOT_LOADED "Application non charg‚e"
-#define MSG_APPL_QUIT "Fin de l'application %s"
-#define MSG_APPL_SAVED "Application %s sauvegard‚e"
-#define MSG_APP_STILL_ACTIV "Application du langage %s encore active (non lib‚rable)"
-#define MSG_AREAFILE_NOTFND "Fichier Area introuvable"
-#define MSG_ARGS_SYNTAX_ERR "?SetArgs erreur de syntaxe: %s inattendu aprŠs %s"
-#define MSG_ARG_ALREADY_SET "Argument %d d‚j… allou‚"
-#define MSG_ARG_NOT_AN_ATTR "L'argument n'est pas un attribut (type %d erron‚)"
-#define MSG_ARG_OUT_CONTEXT "Argument de type @ utilis‚ hors contexte"
-#define MSG_ARG_OUT_RANGE "Argument de phrase valant %d hors limite"
-#define MSG_ARG_PTR_NOSEM "Argument valant %d pointe sur un noeud sans Sem"
-#define MSG_ARG_PTR_NOSEMS "Argument valant %d pointe sur un noeud sans s‚mantique"
-#define MSG_ARG_REF_LOOP "?Bouclage entre r‚f‚rences crois‚es des arguments"
-#define MSG_ARG_TWO_CONST "Le 2Šme argument de %s doit ˆtre constant"
-#define MSG_ARRAY_ALLOC_ERR "Erreur d'allocation m‚moire dans ARRAY"
-#define MSG_ARRAY_BNDS_EXCD "Hors limite de tableau"
-#define MSG_ARRAY_ERROR "Erreur de fonctionnement k=%d n=%d"
-#define MSG_ATTRIBUTE_ERROR "Erreur rŠgle %u attribut %s: "
-#define MSG_ATT_NOT_CASE "Mauvaise valeur %d pour attribut (pas une CaseValue)"
-#define MSG_ATT_POSCODE_BIG "Code attribut %d trop grand (max=%d)"
-#define MSG_AVGLEN_ERROR "avglen doit ˆtre entre %d et %d"
-#define MSG_BAD_AGGREG_FUNC "Fonction aggr‚g‚e %d non support‚e"
-#define MSG_BAD_ARGTYPES "Argument de type invalide pour %s"
-#define MSG_BAD_ARGUMENTS "Argument non attach‚s pour %s"
-#define MSG_BAD_ARG_NUM "Nombre d'arguments invalide %d"
-#define MSG_BAD_ARG_TYPE "Type d'argument %d invalide"
-#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_CARDINALITY "Appel invalide de Cardinality pour une table multiple"
-#define MSG_BAD_CASE_SPEC "Min/Maj: sp‚cification %c incorrecte, recommencez: "
-#define MSG_BAD_CHAR_SPEC "Sp‚cification '%s' invalide pour caractŠre"
-#define MSG_BAD_CHECK_TYPE "Sous-type %d invalide pour CheckColumn"
-#define MSG_BAD_CHECK_VAL "Valeur pour Check invalide '%s'"
-#define MSG_BAD_COLCRT_ARG "COLCRT: Arg invalide (type=%hd, domain=%hd)"
-#define MSG_BAD_COLDEF_TYPE "Coldefs: type ill‚gal %d"
-#define MSG_BAD_COLIST_ITEM "El‚ment invalide dans une Colist"
-#define MSG_BAD_COLIST_TYPE "Mauvais type=%d pour une Colist"
-#define MSG_BAD_COLSIZE "Colsize %d trop petit pour cette base de donn‚es"
-#define MSG_BAD_COL_ENTRY "Entr‚e invalide pour la colonne %s"
-#define MSG_BAD_COL_FORMAT "Type de formattage %d invalide pour une colonne"
-#define MSG_BAD_COL_IN_FILT "Colonne incorrecte dans un filtre"
-#define MSG_BAD_COL_QUALIF "Qualificateur invalide %s pour la colonne %s"
-#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_COMPARE_OP "Op‚rateur de comparaison %d invalide"
-#define MSG_BAD_CONST_TYPE "Type=%d invalide pour une constante"
-#define MSG_BAD_CONV_TYPE "Convertion de type invalide %d"
-#define MSG_BAD_CORREL "Select %s.* corr‚lation absente"
-#define MSG_BAD_DATETIME "Valeur date/temps invalide"
-#define MSG_BAD_DATE_OPER "Op‚rateur de date inattendu %d"
-#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‚"
-#define MSG_BAD_DEF_ARG "Argument invalide pour INDEXDEF (type=%hd, domain=%hd)"
-#define MSG_BAD_DEF_READ "EOF inattendue en lecture diff‚r‚e"
-#define MSG_BAD_DEF_TYPE "Type de colonne invalide"
-#define MSG_BAD_DIRECTORY "R‚pertoire invalide %s: %s"
-#define MSG_BAD_DIST_JN_FIL "Filtre de jointure distincte invalide"
-#define MSG_BAD_DIST_JOIN "Sp‚cification invalide de jointure distincte"
-#define MSG_BAD_DOM_COL_DEF "D‚finition de colonnes invalide pour un domaine"
-#define MSG_BAD_DOM_VALUE "La valeur %d n'appartient pas au domaine"
-#define MSG_BAD_EDIT_INIT "Coparm: ‚dition %s initialis‚e improprement"
-#define MSG_BAD_EVAL_TYPE "Fonction scalaire de type=%d invalide"
-#define MSG_BAD_EXEC_MODE "Mode d'ex‚cution invalide '%s'"
-#define MSG_BAD_EXP_ARGTYPE "Argument de type %d invalide pour une expression"
-#define MSG_BAD_EXP_OPER "Op‚rateur=%d invalide pour expression"
-#define MSG_BAD_FETCH_RC "Code retour inattendu de Fetch %d"
-#define MSG_BAD_FIELD_FMT "Format de champ invalide %c pour %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_FILE_LIST "La section liste de fichiers est erron‚e"
-#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_LINK "Op‚rateur de chaŒnage ill‚gal %d"
-#define MSG_BAD_FILTER_OP "Op‚rateur de filtre invalide %d"
-#define MSG_BAD_FILTEST_OP "Op‚rateur invalide %d %d pour FilTest"
-#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_FLOAT_CONV "Convertion invalide d'un tableau flottant"
-#define MSG_BAD_FPARM_NEXT "Coparm: FPARM avec Next non nul"
-#define MSG_BAD_FREQ_SET "Sp‚cification erronn‚e de Freq pour la colonne %s"
-#define MSG_BAD_FUNC_ARG "Funcarg de type %d non impl‚ment‚"
-#define MSG_BAD_FUNC_ARGTYP "Mauvais type d'argument=%d pour une fonction"
-#define MSG_BAD_FUNC_MODE "%s: mode invalide %d"
-#define MSG_BAD_GENRE "Genre est invalide"
-#define MSG_BAD_GETVIEW_RET "GetView: type de retour %d invalide"
-#define MSG_BAD_HANDLE_VAL "Valeur Handle invalide"
-#define MSG_BAD_HAV_FILTER "Filtre Having sur une requˆte non group‚e"
-#define MSG_BAD_HAV_FILTYPE "Filtre invalide pour clause Having"
-#define MSG_BAD_HEADER "Fichier %s: bloc en-tˆte alt‚r‚"
-#define MSG_BAD_HEADER_VAL "Valeur invalide pour Header"
-#define MSG_BAD_HEAD_END "Lecture fin d'en-tˆte impossible"
-#define MSG_BAD_INDEX_COL "Colonne %s invalide pour index %s"
-#define MSG_BAD_INDEX_DEF "D‚finition invalide pour index %s"
-#define MSG_BAD_INDEX_FILE "Fichier index %s corrompu"
-#define MSG_BAD_INDEX_PART "D‚finition colonne invalide pour index %s"
-#define MSG_BAD_INPUT "Entr‚e incorrecte"
-#define MSG_BAD_IN_ARGTYPE "Argument de type invalide pour l'op‚rateur IN"
-#define MSG_BAD_IN_ENDING "Erreur: fin de chaŒne IN invalide"
-#define MSG_BAD_IN_STRING "La chaŒne IN commence ou finie par des caractŠres invalides %c ... %c"
-#define MSG_BAD_JCOL_TYPE "Erreur logique JCT: disparit‚ des types colonnes"
-#define MSG_BAD_JOIN_EXP "Expression invalide pour une jointure"
-#define MSG_BAD_JOIN_FILTER "Filtre de jointure invalide"
-#define MSG_BAD_JOIN_OP "Op‚rateur de joint invalide %d"
-#define MSG_BAD_LANG_SIZE "Le fichier langage a une mauvaise taille %d"
-#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_LIST_TYPE "Type de liste invalide %d"
-#define MSG_BAD_LOCALE "Locale invalide %s"
-#define MSG_BAD_LOCDFON_ARG "Mauvais paramŠtre pour LOCDFON"
-#define MSG_BAD_LOCNODE_USE "Usage inattendu de LOCNODE"
-#define MSG_BAD_LRECL "Disparit‚ lrecl table/fichier (%d,%hd)"
-#define MSG_BAD_MAX_HAVING "MAXTMP trop petit pour Having"
-#define MSG_BAD_MAX_NREC "MaxRec=%d ne correspond pas … MaxBlk=%d Nrec=%d"
-#define MSG_BAD_MAX_PARAM "Mauvais paramŠtres pour sp‚cifier une valeur maximum"
-#define MSG_BAD_MAX_SETTING "Mauvaise valeur '%c' pour max"
-#define MSG_BAD_MERGE_TYPE "Le type %d ne pas ˆtre intercall‚"
-#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_OPERATOR "Op‚rateur invalide %s"
-#define MSG_BAD_ORDER_MODE "Mode de tri %c invalide"
-#define MSG_BAD_ORDER_TYPE "Tri sur objet de type=%d invalide"
-#define MSG_BAD_OUTER_JOIN "Jointure externe invalide sur table enfant"
-#define MSG_BAD_PAD_ARGTYP "Argument de type invalide pour Pad ou Justify"
-#define MSG_BAD_PARAMETERS "%.8s: Mauvais paramŠtres"
-#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_PHASE_NUM "Num‚ro de phrase %d hors limite"
-#define MSG_BAD_PHRASE_NB "num‚ro de phrase hors limite %d rc=%d\n"
-#define MSG_BAD_POS_CODE "POS_code invalide %d"
-#define MSG_BAD_POS_TYPE "Type de POS_code invalide %d"
-#define MSG_BAD_PROJNUM "Mauvais projnum %d pour la colonne %s"
-#define MSG_BAD_QUERY_OPEN "Mode invalide %d pour l'ouverture d'une requˆte"
-#define MSG_BAD_QUERY_TYPE "Type de requˆte %d invalide pour %s"
-#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_RESULT_TYPE "Mauvais type de r‚sultat %d pour %s"
-#define MSG_BAD_RETURN_TYPE "Type de retour %d incorrect"
-#define MSG_BAD_ROW_VALIST "Liste de valeurs invalide pour ROW"
-#define MSG_BAD_ROW_VALNB "Nombre de valeurs in‚gal dans la liste"
-#define MSG_BAD_SCF_ARGTYPE "Argument %d de type=%s invalide pour %s"
-#define MSG_BAD_SEM_DOMAIN "Domain .%d invalide"
-#define MSG_BAD_SETTINGS "Certaines sp‚cifications sont incompatibles avec le type de la table"
-#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_SET_TYPE "Set type %hd invalide"
-#define MSG_BAD_SPECIAL_CMD "Commande sp‚ciale invalide"
-#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_SQL_PARAM "ParamŠtre SQL invalide pour FindColblk"
-#define MSG_BAD_SUBLST_TYPE "Coparm: type %d de sous-liste invalide"
-#define MSG_BAD_SUBSEL_IN_X "Sub-select invalide pour une expression"
-#define MSG_BAD_SUBSEL_TYPE "Type %d invalide retourn‚ de Sub-Select"
-#define MSG_BAD_SUB_RESULT "R‚sultat ind‚fini de fonction Sub-Select"
-#define MSG_BAD_SUB_SELECT "Sub-select invalide comme argument de fonction"
-#define MSG_BAD_TABLE_LINE "Ligne '%s' ill‚gale ou tronqu‚e dans la section Tables"
-#define MSG_BAD_TABLE_LIST "Table %s absente de la liste des tables"
-#define MSG_BAD_TABLE_TYPE "Type invalide %s pour la table %s"
-#define MSG_BAD_TEST_TYPE "BlockTest sur tableau: types d‚pareill‚s %s %s"
-#define MSG_BAD_TRIM_ARGTYP "Argument de type invalide pour Trim"
-#define MSG_BAD_TYPE_FOR_IN "Types d'argument incompatibles pour la fonction IN"
-#define MSG_BAD_TYPE_FOR_S "Type incorrecte %d pour %s(%d)"
-#define MSG_BAD_TYPE_LIKE "Type(%d)= %d invalide pour LIKE"
-#define MSG_BAD_UPD_COR "Le qualificateur %s de la colonne %s ne se refŠre pas … la table mise … jour %s"
-#define MSG_BAD_USERBLK_LEN "Mauvaise longueur … l'‚criture du bloc utilisateur"
-#define MSG_BAD_USETEMP "Usetemp invalide '%s'"
-#define MSG_BAD_USETEMP_VAL "Valeur pour Usetemp invalide %d"
-#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_BAD_VIEW_OPEN "Mode invalide %d pour l'ouverture d'une View"
-#define MSG_BAD_XMODE_VAL "Mode d'ex‚cution %d invalide"
-#define MSG_BAD_XOBJ_TYPE "Mauvais type de Xobject %d"
-#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_BLOCK_NO_MATCH "Bloc non correspondant"
-#define MSG_BREAKPOINT "Point de controle"
-#define MSG_BUFF_TOO_SMALL "GetColData: Buffer trop petit"
-#define MSG_BUFSIZE_ERROR "Erreur en recherchant la taille du buffer"
-#define MSG_BUILDING_GROUPS "Formation des groupes"
-#define MSG_BUILD_DIST_GRPS "Formation des groupes distinctes"
-#define MSG_BUILD_INDEX "Construction index %s sur %s"
-#define MSG_BXP_NULL "Bxp nul dans PUTFON"
-#define MSG_CANNOT_OPEN "Ouverture impossible de %s"
-#define MSG_CD_ONE_STEP "Count Distinct doit ˆtre ex‚cut‚ en une seule ‚tape"
-#define MSG_CD_ORDER_ERROR "Erreur de tri dans Count Distinct"
-#define MSG_CHECKING_ROWS "Test des lignes … mettre … jour"
-#define MSG_CHECK_LEVEL "Niveau de v‚rification fix‚ … %u"
-#define MSG_CHSIZE_ERROR "Erreur dans chsize: %s"
-#define MSG_CLN_NOT_IN_JOIN "La colonne C%d n'est pas dans le join"
-#define MSG_CNTDIS_COL_LOST "Colonne du Count Distinct perdue"
-#define MSG_COLIST_BAD_TYPE "Type=%d invalide pour Colist"
-#define MSG_COLNAM_TOO_LONG "Nom de colonne trop long"
-#define MSG_COLSEC_TOO_BIG "Section colonne trop grande, table %s (%d)"
-#define MSG_COLS_REDUCED " (r‚duit par Maxcol)"
-#define MSG_COLUMN_ERROR "Erreur de colonne"
-#define MSG_COLUMN_MISMATCH "Colonne %s d‚pareill‚e"
-#define MSG_COLUMN_NOT_KEY "La colonne jointe R%d.%s n'est pas une cl‚"
-#define MSG_COL_ALLOC_ERR "Allocation impossible du noeud colonne"
-#define MSG_COL_ALLOC_ERROR "Erreur d'allocation m‚moire pour la colonne %d"
-#define MSG_COL_HAS_NO_DEF "La colonne %s n'est pas d‚finie"
-#define MSG_COL_INVAL_TABLE "La colonne %s.%s n'existe pas dans la table %s alias %s"
-#define MSG_COL_ISNOT_TABLE "La colonne %s n'est pas dans la table %s"
-#define MSG_COL_NB_MISM "Le nombre de colonnes ne correspond pas"
-#define MSG_COL_NOTIN_GRPBY "La colonne %s n'est pas dans la liste de Group By"
-#define MSG_COL_NOTIN_TABLE "La colonne %s n'est dans aucune table"
-#define MSG_COL_NOTIN_UPDT "%s n'appartient pas … la table mise … jour %s"
-#define MSG_COL_NOT_CODED "La colonne %s n'est pas codifi‚e"
-#define MSG_COL_NOT_EXIST "La colonne %s n'existe pas dans %s"
-#define MSG_COL_NOT_FOUND "La colonne %s n'est pas dans la table %s"
-#define MSG_COL_NOT_IN_DB "La colonne %s de la table %s n'est pas dans la base de donn‚es"
-#define MSG_COL_NOT_IN_JOIN "La colonne %s n'est pas dans le join"
-#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_COL_USED_TWICE "Colonne %s utilis‚e deux fois ???"
-#define MSG_COMPUTE_ERROR "Erreur dans Compute, op=%d"
-#define MSG_COMPUTE_NIY "Compute non impl‚ment‚ pour TOKEN"
-#define MSG_COMPUTING "Calculs en cours"
-#define MSG_COMPUTING_DIST "Comptage des valeurs distinctes"
-#define MSG_COMPUTING_FUNC "Calcul de(s) fonction(s)"
-#define MSG_COM_ERROR "Erreur Com"
-#define MSG_CONCAT_SUBNODE "Concat‚nation de sous-noeuds impossible"
-#define MSG_CONNECTED "Connect‚e"
-#define MSG_CONNECT_CANCEL "Connection interrompue par l'utilisateur"
-#define MSG_CONNECT_ERROR "Erreur %d se connectant à %s"
-#define MSG_CONN_CLOSED "%s(%d) ferm‚e"
-#define MSG_CONN_CREATED "Connexion %s cr‚e"
-#define MSG_CONN_DROPPED "Connexion %s supprim‚e"
-#define MSG_CONN_OPEN "%s(%d) ouverte (%s)"
-#define MSG_CONN_SUC_OPEN "%s(%d) ouverte avec succŠs"
-#define MSG_CONTROL_C_EXIT "Exit par Ctrl-C"
-#define MSG_COPY_BAD_PHASE "Copie de liste invalide en phase %d"
-#define MSG_COPY_INV_TYPE "Coparm: type non support‚ %d"
-#define MSG_CORREL_NO_QRY "Les sous-requˆtes corr‚l‚es ne peuvent pas ˆtre de type QRY"
-#define MSG_CREATED_PLUGDB " Cr‚‚ par PlugDB %s "
-#define MSG_CURSOR_SET "Curseur remis … %d"
-#define MSG_DATABASE_ACTIVE "Base de donn‚es %s activ‚e"
-#define MSG_DATABASE_LOADED "Base de donn‚es %s charg‚e"
-#define MSG_DATA_IS_NULL "ExecSpecialCmd: data est NULL"
-#define MSG_DATA_MISALIGN "Mauvais alignement pour ce type de donn‚es"
-#define MSG_DBASE_FILE "Fichier dBASE dbf: "
-#define MSG_DB_ALREADY_DEF "Base de donn‚es %s d‚j… d‚finie"
-#define MSG_DB_ALTERED "Base de donn‚es modifi‚e"
-#define MSG_DB_CREATED "Base de donn‚es %s cr‚‚e"
-#define MSG_DB_NOT_SPEC "Base de donn‚es non sp‚cifi‚e"
-#define MSG_DB_REMOVED "Base de donn‚es %s retir‚e de la liste"
-#define MSG_DB_SORT_ERROR "Erreur de tri DB"
-#define MSG_DB_STOPPED "Arrˆt de la base de donn‚es %s"
-#define MSG_DEBUG_NOT_ACTIV "Mode Debug inactif"
-#define MSG_DEBUG_SET_INV "Invalide pour Debug: %c"
-#define MSG_DEF_ALLOC_ERROR "Erreur d'allocation de la classe DEF %s"
-#define MSG_DELETING_ROWS "Suppression des lignes"
-#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_DICTIONARY "Dictionnaire "
-#define MSG_DIRECT_VARTOK "AccŠs direct aux rŠgles du Variable Token non impl‚ment‚"
-#define MSG_DISCONNECTED "D‚connect‚"
-#define MSG_DISTINCT_ERROR "Plus d'un ‚l‚ment fonctionel DISTINCT"
-#define MSG_DISTINCT_ROWS "S‚lection des lignes distinctes"
-#define MSG_DISTINCT_VALUES "Extraction des valeurs distinctes"
-#define MSG_DIS_NOHEAD_JOIN "Jointure distincte sur une table non en tˆte"
-#define MSG_DLL_LOAD_ERROR "Erreur %d au chargement du module %s"
-#define MSG_DOMAIN_EMPTY "Le domaine %s est vide"
-#define MSG_DOMAIN_ERROR "Colonne %s: disparit‚ domaine(%s)/valeur(%s)"
-#define MSG_DOMAIN_FULL "Le domaine %s est plein (max=%d)"
-#define MSG_DOM_FILE_ERROR "Fichier domain %s introuvable"
-#define MSG_DOM_NOT_SUPP "MS-DOM non support‚ par cette version"
-#define MSG_DOM_OPEN_ERROR "Erreur d'ouverture du domaine: %s"
-#define MSG_DOM_READ_ERROR "Erreur %d en lecture de domaine: %s"
-#define MSG_DOM_READ_ONLY "La table domaine %s est en lecture seulement"
-#define MSG_DOM_WRITE_ERROR "Erreur %d en ‚criture de domaine: %s"
-#define MSG_DONE "Effectu‚, rc=%d"
-#define MSG_DOSALMEM_NOMEM "Erreur d'allocation, pas assez de m‚moire"
-#define MSG_DROP_DB_ERR "Echec du Drop sur le base de donn‚es %s"
-#define MSG_DSORT_LOG_ERROR "Kindex: Erreur logique de tri distincte"
-#define MSG_DUMMY_NO_COLS "Les tables DUMMY ne peuvent pas avoir de colonne"
-#define MSG_DUPLICAT_COUNT "Count sur plus d'une colonne"
-#define MSG_DUP_COL_NAME "La colonne %s existe en double"
-#define MSG_DUP_PROJNUM "Non unique projnum %d pour la colonne %s"
-#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_ENDSTR_MISMATCH "Fins de chaŒne et de noeud ne correspondent pas"
-#define MSG_END_OF_DELETE "%d ligne(s) enlev‚e(s) en %.2lf sec"
-#define MSG_END_OF_INSERT "%d ligne(s) ins‚r‚e(s) en %.2lf sec"
-#define MSG_END_OF_QUERY "%d ligne(s) extraite(s) en %.2lf sec"
-#define MSG_END_OF_UPDATE "%d ligne(s) modifi‚e(s) en %.2lf sec"
-#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_ERASED " et effac‚e"
-#define MSG_ERASE_FAILED " (‚chec de l'effacement)"
-#define MSG_ERROR "Erreur"
-#define MSG_ERROR_IN_LSK "Erreur %d dans lseek64"
-#define MSG_ERROR_IN_SFP "Erreur %d dans SetFilePointer"
-#define MSG_ERROR_NO_PARM "ParamŠtre absent (valide seulement pour %.8s.1 et %.8s.5)"
-#define MSG_ERROR_OPENING "Erreur … l'ouverture de : "
-#define MSG_ERR_NUM_GT_MAX "Erreur: Numval (%d) plus grand que Maxnum (%d)"
-#define MSG_ERR_READING_REC "Erreur lisant l'enregistrement %d de %s"
-#define MSG_ERR_RET_RULE "Retour erreur, rŠgle=%u"
-#define MSG_ERR_RET_TYPE "Retour erreur, type=%d"
-#define MSG_EVAL_EXPIRED "Cette version d'évaluation est expir‚e"
-#define MSG_EVAL_ONLY "L'utilisation de cette Dll est pour ‚valuation seulement"
-#define MSG_EXECUTING "Ex‚cution"
-#define MSG_EXECUTION_ERROR "Erreur d'ex‚cution"
-#define MSG_EXEC_MODE_IS "Le mode d'ex‚cution est %s"
-#define MSG_EXEC_MODE_RESET ". Mode remis … Execute"
-#define MSG_EXEC_MODE_SET "Mode d'ex‚cution fix‚ … %s"
-#define MSG_EXIT_EVAL_ERR "Erreur pendant l'‚valuation de Exit"
-#define MSG_EXIT_FROM_LANG "Fin du langage %s version %d.%d"
-#define MSG_FAIL_ADD_NODE "L'ajout du noeud %s dans la table a ‚chou‚"
-#define MSG_FETCHING_DATA "Recherche des donn‚es"
-#define MSG_FETCHING_ROWS "Recherche des lignes"
-#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_CLOSE_ERR "Erreur %d … la fermeture du fichier"
-#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_NOT_FOUND "Fichier %s introuvable"
-#define MSG_FILE_OPEN_YET "Fichier %s d‚j… ouvert"
-#define MSG_FILE_UNFOUND "Fichier %s non trouv‚"
-#define MSG_FILGRP_NO_TABLE "Table %d manquante pour groupe filtre"
-#define MSG_FILTER_ATTACH "Filtre pass‚ … Attach"
-#define MSG_FILTER_NO_TABLE "Filtre: premiŠre table manquante"
-#define MSG_FIND_BAD_TYPE "Recherche dans un tableau: type non conforme %s %s"
-#define MSG_FIX_OVFLW_ADD "D‚passement de capacit‚ en addition"
-#define MSG_FIX_OVFLW_TIMES "D‚passement de capacit‚ en mutiplication"
-#define MSG_FIX_UNFLW_ADD "Sous d‚passement de capacit‚ en addition"
-#define MSG_FIX_UNFLW_TIMES "Sous d‚passement de capacit‚ en multiplication"
-#define MSG_FLD_TOO_LNG_FOR "Champs %d trop long pour %s ligne %d de %s"
-#define MSG_FLTST_NO_CORREL "FilTest ne devrait ˆtre appel‚ que pour les sous-requˆtes corr‚l‚es"
-#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_FNC_NOTIN_SLIST "Fonction de tri absente de la liste de s‚lection"
-#define MSG_FORMAT_ERROR "Erreur de formattage"
-#define MSG_FOXPRO_FILE "Fichier FoxPro: "
-#define MSG_FPUTS_ERROR "Erreur dans fputs: %s"
-#define MSG_FSBPARP_NULL "PUTFON: fsbparp est nul"
-#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_FUNC_REF_DEL "R‚f‚rence … une fonction d‚finie (rŠgle %d) qui a ‚t‚ supprim‚e"
-#define MSG_FWRITE_ERROR "Erreur dans fwrite: %s"
-#define MSG_GETCWD_ERR_NO "?getcwd %s errno=%d"
-#define MSG_GETFILESIZE_ERR "Erreur %d dans GetFileSize"
-#define MSG_GET_DIST_VALS "R‚cup‚ration des valeurs distinctes de "
-#define MSG_GET_ERROR "Erreur dans %s (colonne %d)"
-#define MSG_GET_FUNC_ERR "Erreur en recherche de la fonction %s: %s"
-#define MSG_GET_NAME_ERR "Erreur en retrouvant le nom d'une table SYS"
-#define MSG_GLOBAL_ERROR "Erreur d'allocation de Global (taille=%d)\n"
-#define MSG_GRAM_ALLOC_ERR "Erreur d'allocation dans Grammar Up"
-#define MSG_GRAM_MISMATCH "Avertissement: version de GRAMMAR p‚rim‚e (sauv‚ sous GRAMMAR v%u)"
-#define MSG_GRAM_SUBSET_ERR "Erreur d'initialisation du dictionnaire de la grammaire"
-#define MSG_GRBY_TAB_NOTIMP "Group by avec tables jointes non impl‚ment‚"
-#define MSG_GROUPBY_NOT_ALL "Group By doit inclure toutes les s‚lections non-fonctionnelles"
-#define MSG_GROUP_ON_FUNC "Group by invalide sur colonne fonctionnelle"
-#define MSG_GRP_COL_MISM "Disparit‚ colonne des groupes"
-#define MSG_GRP_LIST_MISMAT "Le groupement ne couvre pas la liste de s‚lection"
-#define MSG_GUARD_PAGE "Violation de page de garde"
-#define MSG_GZOPEN_ERROR "gzopen %s: erreur %d sur %s"
-#define MSG_GZPUTS_ERROR "Erreur dans gzputs: %s"
-#define MSG_HANDLE_IS_NULL "%s est NULL: erreur code: %d"
-#define MSG_HARRY_COMP_NIY "Compute non impl‚ment‚ pour les chaŒnes cod‚es"
-#define MSG_HAVING_FILTER "Traitement du Filtre Having"
-#define MSG_HBUF_TOO_SMALL "Buffer(%d) trop petit pour entˆte(%d)"
-#define MSG_HEAD_OPEN_ERROR "Erreur … l'ouverture du fichier header"
-#define MSG_HEAD_READ_ERROR "Erreur en lecture du fichier header %s"
-#define MSG_HEAD_WRITE_ERR "Erreur en ‚criture du fichier header"
-#define MSG_HI_OFFSET_ERR "Offset sup‚rieur non nul"
-#define MSG_HUGE_DEFAULT "Huge est %d par d‚fault"
-#define MSG_HUGE_WARNING_1 "M‚moire Huge non compatible 16-bit pour %d\n"
-#define MSG_HUGE_WARNING_2 "R‚sultats impr‚visibles possibles\n"
-#define MSG_IDLE "Au repos"
-#define MSG_ILLEGAL_INSTR "Instruction ill‚gale"
-#define MSG_ILL_FILTER_CONV "Conversion implicite ill‚gale dans un filtre"
-#define MSG_INDEX_CREATED "Index %s cr‚‚ sur %s"
-#define MSG_INDEX_DEF_ERR "Erreur sauvegardant l'index d‚finition pour %s"
-#define MSG_INDEX_DROPPED "Index %s supprim‚ de %s"
-#define MSG_INDEX_INIT_ERR "Echec de l'initialisation de l'index %s"
-#define MSG_INDEX_NOT_DEF "Index %s non d‚fini"
-#define MSG_INDEX_NOT_UNIQ "L'index n'est pas Unique"
-#define MSG_INDEX_ONE_SAVE "Les index sont sauvegard‚s dans un fichier unique"
-#define MSG_INDEX_SEP_SAVE "Les index sont sauvegard‚s dans des fichiers s‚par‚s"
-#define MSG_INDEX_YET_ON "L'index %s existe d‚j… sur %s"
-#define MSG_INDX_ALL_DROP "Tous les index de %s supprim‚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_ERROR "Erreur à l'initialisation de %s"
-#define MSG_INIT_FAILED "L'initialisation de %s a ‚chou‚"
-#define MSG_INPUT "Entr‚e: "
-#define MSG_INPUT_KEYBD_YET "L'entr‚e est d‚j… au clavier"
-#define MSG_INSERTING "Insertion: "
-#define MSG_INSERT_ERROR "Insert erreur: usage multiple du fichier %s"
-#define MSG_INSERT_MISMATCH "Les listes colonne et valeur ne correspondent pas"
-#define MSG_INTERNAL "interne"
-#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_BIP "Bip invalide .%d"
-#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_INVALID_OPTION "Option invalide %s"
-#define MSG_INV_COLUMN_TYPE "Type %d Invalide pour la colonne %s"
-#define MSG_INV_COL_DATATYP "Type de donn‚es %d invalide pour la colonne %d"
-#define MSG_INV_COL_NUM "Colonne invalide %d"
-#define MSG_INV_COL_TYPE "Type de colonne %s invalide"
-#define MSG_INV_CONC_BIP "Bip invalide (seuls valides: %.8s.0 .1 and .5)"
-#define MSG_INV_DATA_PATH "Chemin vers les donn‚es 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_DOMAIN_TYPE "Type invalide %d"
-#define MSG_INV_FILTER "Filtre r‚siduel dans %s"
-#define MSG_INV_FNC_BUFTYPE "FNC: Type %d de l'argument invalide pour %s"
-#define MSG_INV_INFO_TYPE "Type d'info catalog invalide %d"
-#define MSG_INV_INIPATH "Inipath invalide "
-#define MSG_INV_MAP_POS "Position m‚moire invalide"
-#define MSG_INV_OPERATOR "op‚rateur invalide %d\n"
-#define MSG_INV_PARAMETER "ParamŠtre invalide %s"
-#define MSG_INV_PARM_TYPE "Type de paramŠtre invalide"
-#define MSG_INV_QUALIFIER "Qalificateur '%s' invalide"
-#define MSG_INV_QUERY_TYPE "Type de requˆte %d 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_SET_SUBTYPE "Type de formattage %d invalide"
-#define MSG_INV_SPECIAL_CMD "%s: Commande sp‚ciale invalide"
-#define MSG_INV_SUBTYPE "Sous type invalide %s"
-#define MSG_INV_TOK_DOMAIN "Le domaine %s n'existe pas"
-#define MSG_INV_TOPSEM_CMD "Commande TopSem invalide %c"
-#define MSG_INV_TRANSF_USE "Usage invalide en rŠgle transformationnelle"
-#define MSG_INV_TYPE_SPEC "Sp‚cification de type invalide (%.8s.%d)"
-#define MSG_INV_UPDT_TABLE "Table %s invalide pour Update"
-#define MSG_INV_VALUE_LIST "Liste de valeurs invalide pour Insert"
-#define MSG_INV_WHERE_JOIN "Clause Where invalide dans une requˆte de jointure"
-#define MSG_INV_WORK_PATH "Chemin de travail invalide"
-#define MSG_IN_ARGTYPE_MISM "Arguments de types incompatibles pour une expression IN"
-#define MSG_IN_USE " et en activit‚"
-#define MSG_IN_WITHOUT_SUB "IN ou EXISTS sans tableau ou subquery"
-#define MSG_IS_NOT_CONN "%s n'est pas une connexion d‚finie"
-#define MSG_JCT_MISS_COLS "Colonnes manquantes pour une table JCT"
-#define MSG_JCT_MISS_TABLE "Table jointe manquante pour JCT"
-#define MSG_JCT_NO_FILTER "Filtrage impossible des tables virtuelles JCT"
-#define MSG_JCT_NO_KEY "Erreur logique JCT: cl‚ manquante"
-#define MSG_JOIN_KEY_NO_COL "La cl‚ de jointure n'est pas une colonne"
-#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_LANGUAGE_QUIT "%s lib‚r‚"
-#define MSG_LANG_ACTIVE "Langage %s actif"
-#define MSG_LANG_ALLOC_FAIL "PlugInitLang: Erreur d'allocation du bloc Lang"
-#define MSG_LANG_ALREADY_UP "Langage d‚j… en ‚dition"
-#define MSG_LANG_BAD_SAVE "Langage %s peut-ˆtre incorrectement sauvegard‚"
-#define MSG_LANG_NOT_FREED "Langage %s non lib‚rable (pas dans la chaŒne principale)"
-#define MSG_LANG_SAVED "Langage %s sauvegard‚"
-#define MSG_LANG_WR_LEN_ERR "Erreur de longueur … l'‚criture du bloc Lang"
-#define MSG_LDF_ALLOC_ERROR "Erreur d'allocation d'un LdfBlock"
-#define MSG_LDF_RN_MISMATCH "LDF: d‚calage des num‚ros de rŠgle"
-#define MSG_LDF_WLEN_ERROR "Erreur de longueur en ‚crivant LdfData"
-#define MSG_LDF_W_LEN_ERROR "Erreur de longueur pour LdfData en ‚criture"
-#define MSG_LIC_NO_MYSQL "Votre licence actuelle ne permet pas l'utilisation du type MYSQL"
-#define MSG_LINEAR_ERROR "Erreur de lin‚arisation"
-#define MSG_LINE_LENGTH "Largeur d'impression fix‚e … %d"
-#define MSG_LINE_MAXLIN "Nombre de lignes de travail plafonn‚ … %d"
-#define MSG_LINE_MAXRES "Nombre de lignes de r‚sultat plafonn‚ … %d"
-#define MSG_LINE_MAXTMP "Nombre de lignes interm‚diaires plafonn‚ … %d"
-#define MSG_LINE_TOO_LONG "La nouvelle ligne est trop longue"
-#define MSG_LINJOINDB_ERROR "Erreur systŠme: appel incorrecte … LinJoinDB"
-#define MSG_LIST "--Liste--"
-#define MSG_LNG_NOT_IN_LIST "Le langage %s n'est pas dans la liste"
-#define MSG_LOADING_DB "Chargement description de la BD"
-#define MSG_LOADING_FAILED "Le chargement de %s a ‚chou‚"
-#define MSG_LOAD_CDLL_ERROR "Erreur au chargement de ConnDll: rc=%d"
-#define MSG_LOCSTRG_TOO_BIG "LOCSTRG: n trop grand ? (%d)\n"
-#define MSG_LOGICAL_ERROR "%s: Erreur logique"
-#define MSG_LRECL_TOO_SMALL "Lrecl trop petit (longueur en-tˆte = %d)"
-#define MSG_MAC_NO_DELETE "Pas de suppression de lignes pour les tables MAC"
-#define MSG_MAC_NO_INDEX "Pas d'accŠs direct aux tables MAC"
-#define MSG_MAC_READ_ONLY "Les tables MAC sont en lecture seulement"
-#define MSG_MAC_WIN_ONLY "Les tables MAC sont seulement sous Windows"
-#define MSG_MAKE_EMPTY_FILE "G‚n‚ration du fichier vide %s: %s"
-#define MSG_MAKING "G‚n‚ration"
-#define MSG_MAKING_DISTINCT "Regroupement des valeures distinctes"
-#define MSG_MALLOC_ERROR "Allocation m‚moire impossible par %s"
-#define MSG_MALLOC_NULL "malloc retourne Null"
-#define MSG_MAP_NO_MORE "Le type %s n'est plus support‚"
-#define MSG_MAP_OBJ_ERR "Erreur %d … la fermeture du map objet"
-#define MSG_MAP_VEC_ONLY "MAP Insert permis seulement pour les tables VEC Estimate"
-#define MSG_MAP_VIEW_ERROR "MapViewOfFile %s erreur rc=%d"
-#define MSG_MAXSIZE_ERROR "Maxsize incalculable sur table ouverte"
-#define MSG_MAXTMP_TRUNCATE "R‚sultats interm‚diaires tronqu‚s par maxtmp=%d"
-#define MSG_MAX_BITMAP "Taille maxi des bitmaps d'optimisation fix‚e … %d"
-#define MSG_MEMSIZE_TOO_BIG "Erreur: memsize (%d) trop grand pour Length (%d)"
-#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_MEM_ALLOC_YET "M‚moire d‚j… allou‚e"
-#define MSG_METAFILE_NOTFND "Fichier Meta introuvable"
-#define MSG_MISPLACED_QUOTE "Appostrophe mal plac‚e ligne %d"
-#define MSG_MISSING "Manquant: Value=%p Argval=%p Builtin=%d"
-#define MSG_MISSING_ARG "Argument manquant pour l'op‚rateur %d"
-#define MSG_MISSING_COL_DEF "D‚finition des colonnes manquante"
-#define MSG_MISSING_CONNECT "Connection #1 manquante"
-#define MSG_MISSING_EOL "Fin de ligne manquante dans %s"
-#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_POS "POS code manquant"
-#define MSG_MISSING_ROWNODE "Impossible de trouver le noeud de la ligne %d"
-#define MSG_MISSING_SERV_DB "Indication serveur et/ou base de donn‚es manquante"
-#define MSG_MISS_LEAD_COL "Colonne majeure %s manquante"
-#define MSG_MISS_NAME_LRECL "Nom du fichier et/ou LRECL manquant"
-#define MSG_MISS_TABLE_LIST "Liste des tables manquante"
-#define MSG_MISS_VCT_ELMT "Taille de bloc vectoriel manquante (Elements)"
-#define MSG_MIS_TAG_LIST "Liste des balises colonne manquante"
-#define MSG_MKEMPTY_NIY "MakeEmptyFile: pas encore implement‚ pour Huge et Unix"
-#define MSG_MOVE_INV_TYPE "MOVPARM: paramŠtre de type invalide %d"
-#define MSG_MULT_DISTINCT "Distinct utilis‚ plus d'une fois"
-#define MSG_MULT_KEY_ERROR "Erreur sur cl‚ multiple k=%d n=%d"
-#define MSG_MUL_MAKECOL_ERR "Erreur logique dans TABMUL::MakeCol"
-#define MSG_MYSQL_CNC_OFF "La connexion … MySQL est ferm‚e"
-#define MSG_MYSQL_CNC_ON "La connexion … MySQL est ‚tablie"
-#define MSG_MYSQL_NOT_SUP "Pas de support de MySQL dans cette version"
-#define MSG_MY_CNC_ALREADY "La connexion … MySQL est d‚j… active"
-#define MSG_NAME_CONV_ERR "Erreur de convertion du nom de noeud"
-#define MSG_NAME_IS_USED "Le nom %s est d‚j… utilis‚"
-#define MSG_NCOL_GT_MAXCOL "Trop de colonnes (%d > %d max)"
-#define MSG_NEW_CHAR_NULL "new char(%d) retourne Null"
-#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_NEW_TABLE_ERR "La nouvelle table %s ne peut pas ˆtre charg‚e"
-#define MSG_NEXT_FILE_ERROR "Erreur en recherche du fichier suivant. rc=%s"
-#define MSG_NODEF_FROM_VIEW "Pas de d‚finition de table depuis une view"
-#define MSG_NODE_FOR_CHAR "Noeud %s trouve au lieu d'un caractŠre"
-#define MSG_NODE_SUBSET_ERR "Erreur d'initialisation de la zone Noeud %d"
-#define MSG_NONCONT_EXCEPT "Exception non-continuable"
-#define MSG_NON_DUP_HAVING "Clause Having dans une requˆte non fonctionelle"
-#define MSG_NON_EVAL_SEM "Sem non ‚valu‚e: p_no=%d"
-#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_ENOUGH_COLS "Pas assez de colonnes dans %s"
-#define MSG_NOT_ENOUGH_MEM "M‚moire insuffisante pour cette op‚ration"
-#define MSG_NOT_FIXED_LEN "Fichier %s non fixe, len=%d lrecl=%d"
-#define MSG_NOT_IMPLEMENTED "Non implement‚: %.8s"
-#define MSG_NOT_IMPL_JOIN "Pas impl‚ment‚ pour les jointures"
-#define MSG_NOT_IMPL_SET "Pas impl‚ment‚ pour les op‚rateurs d'ensembles"
-#define MSG_NOT_IMPL_YET "Pas encore implement‚"
-#define MSG_NOT_LINEARIZED "Arborescence des tables non lin‚aris‚e"
-#define MSG_NOT_MODIFIABLE " (non modifiable)"
-#define MSG_NO_0DH_HEAD "0DH manquant en fin d'en-tˆte (dbc=%d)"
-#define MSG_NO_ACTIVE_APPL "Pas d'application active"
-#define MSG_NO_ACTIVE_DB "Pas de base de donn‚es active"
-#define MSG_NO_ACTIVE_UDIC "Pas de dictionaire utilisateur actif"
-#define MSG_NO_AGGR_FUNC "Fonction aggr‚g‚e %d ill‚gale … cet endroit"
-#define MSG_NO_AREA_FILE "Fichier Area introuvable"
-#define MSG_NO_AVAIL_RESULT "Pas de r‚sultat disponible"
-#define MSG_NO_BIG_DELETE "D‚l‚tion Partielle non impl‚ment‚e pour les fichiers HUGE"
-#define MSG_NO_CHAR_FROM "Conversion de type %d en caractŠres impossible"
-#define MSG_NO_CLUSTER_COL "Pas de colonne optimisable"
-#define MSG_NO_COL_ADDING "Ajouter des colonnes dans une d‚finition existante est impossible"
-#define MSG_NO_COL_DEF_AS "La d‚finitions des colonnes est incompatible avec AS Select"
-#define MSG_NO_COL_FOUND "La section colonne %s est vide"
-#define MSG_NO_COL_IN_TABLE "La colonne %d n'est pas dans la table %s"
-#define MSG_NO_COL_SECTION "Section colonne manquante pour la table %s"
-#define MSG_NO_CONNECT_ADDR "Adresse de connection non sp‚cifi‚e"
-#define MSG_NO_CONST_FILTER "Filtres constants non implement‚s"
-#define MSG_NO_CURLY_BRKT "Pas d'accolade de fermeture"
-#define MSG_NO_DATABASE "Base de donn‚es %s introuvable"
-#define MSG_NO_DATE_FMT "Pas de format date pour le valblock de type %d"
-#define MSG_NO_DBF_INSERT "Insert pas encore impl‚ment‚ pour les fichier DBF"
-#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_DMY_DIR_ACC "Pas d'accŠs direct aux tables virtuelles DUMMY"
-#define MSG_NO_DOM_DELETE "D‚l‚tion Partielle non impl‚ment‚e pour les domaines"
-#define MSG_NO_DOM_MATCH "ChaŒne %.8s... non touv‚e dans le domaine %s"
-#define MSG_NO_EDITED_LANG "Coparm: Pas de langage en ‚dition"
-#define MSG_NO_EXP_LINK "Liaison par expression invalide pour une table JCT"
-#define MSG_NO_EXT_FILTER "Le filtrage ne peut se r‚f‚rer … une autre table"
-#define MSG_NO_EXT_UPDATE "Pas de mise … jour en r‚f‚rence … une autre table"
-#define MSG_NO_FEAT_SUPPORT "%s non support‚ dans cette version"
-#define MSG_NO_FILE_LIST "La table %s n'a pas de liste de fichiers"
-#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_FULL_JOIN "Jointures autoris‚es seulement … ‚galit‚ sur cl‚(s)"
-#define MSG_NO_FUL_OUT_JOIN "Jointures externes complŠtes non support‚es"
-#define MSG_NO_FUNC_ORDER "Tri non support‚ sur ‚l‚ment fonctionnel"
-#define MSG_NO_HEAD_JOIN "Jointure sur une table non en tˆte"
-#define MSG_NO_HQL_CONV "Conversion en HQL non disponible"
-#define MSG_NO_INDEX "La table %s n'a pas d'index"
-#define MSG_NO_INDEX_GBX "Pas ou mauvais index pour SQLGBX"
-#define MSG_NO_INDEX_IN "Pas d'index dans %s"
-#define MSG_NO_INDEX_READ "Pas d'accŠs directe des tables multiples"
-#define MSG_NO_INIT_LANG "Pas de langage initial"
-#define MSG_NO_JOIN_TO_EXP "Jointure vers une expression impossible"
-#define MSG_NO_JOIN_UPDEL "Pas de jointure avec Update/Delete"
-#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_LANGUAGE "Pas de langage op‚rationnel\n"
-#define MSG_NO_LANG_TO_QUIT "Pas de langage … quitter"
-#define MSG_NO_LISTVAL_HERE "LSTBLK: Liste de valeurs utilis‚e hors contexte"
-#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_MEM_CORR_SUB "Subquery corr‚l‚e en m‚moire non encore impl‚ment‚e"
-#define MSG_NO_MODE_PADDED "Mode non support‚ pour les fichiers 'padded'"
-#define MSG_NO_MORE_COL "La colonne %s n'est plus dans la table pivot"
-#define MSG_NO_MORE_LANG "Plus de langage, exit de %s\n"
-#define MSG_NO_MORE_VAR "Les fichiers VAR ne sont plus support‚s"
-#define MSG_NO_MULCOL_JOIN "Jointure vers un index multi-colonne pas encore possible"
-#define MSG_NO_MULT_HAVING "Clauses Having multiples non impl‚ment‚es"
-#define MSG_NO_MUL_DIR_ACC "AccŠs direct des tables multiples pas encore impl‚ment‚"
-#define MSG_NO_MUL_VCT "Les tables VCT ne peuvent pas ˆtre multiples"
-#define MSG_NO_MYSQL_CONN "Aucune connexion MySQL ouverte"
-#define MSG_NO_MYSQL_DELETE "Pas de Delete pour les tables MySQL"
-#define MSG_NO_NBCOL "Pas de NBcol"
-#define MSG_NO_NBLIN "Pas de NBlin, MaxSize ou Continued"
-#define MSG_NO_NBLIN_CONT "Fetch: Pas de NBlin ou Continued"
-#define MSG_NO_NULL_CONST "Les constantes <null> ne sont pas prises en charge"
-#define MSG_NO_ODBC_COL "Colonnes ODBC automatiques non support‚es par cette version"
-#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_OPT_COLUMN "Pas optimisable ou pas de colonne optimis‚es"
-#define MSG_NO_OP_MODIF "Les modificateurs ne s'appliquent pas … %s"
-#define MSG_NO_PARAMETER "Pas de paramŠtre"
-#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_POS_ADDED "Pos_code non ajout‚"
-#define MSG_NO_PROMPTING "Relance impossible pour les tables distribu‚es"
-#define MSG_NO_QRY_DELETE "Delete n'est pas utilisable pour les views QRY"
-#define MSG_NO_QUERY_ARRAY "Tableaux avec QUERY non encore impl‚ment‚s"
-#define MSG_NO_RCUR_DSK_YET "Usage r‚cursif de DISK non encore implement‚"
-#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_REF_DELETE "Pas de suppression en r‚f‚rence … une autre table"
-#define MSG_NO_REF_UPDATE "Pas de mise … jour en r‚f‚rence … une autre table"
-#define MSG_NO_REMOTE_FNC "Certaines fonctions ne peuvent pas ˆtre ex‚cut‚es … distance"
-#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_SELECTED_DB "Aucune base de donn‚es s‚lect‚e"
-#define MSG_NO_SELF_PIVOT "Une table ne peut se pivoter elle-mˆme !"
-#define MSG_NO_SERVER_FOUND "Serveur introuvable"
-#define MSG_NO_SETPOS_YET "SetPos pas encore impl‚ment‚ pour les fichier %s"
-#define MSG_NO_SFEXIT_UNIX "Fonction %s non disponible sur Unix"
-#define MSG_NO_SOURCE " (pas de source)"
-#define MSG_NO_SPEC_COL "Pas de colonne sp‚ciales MYSQL"
-#define MSG_NO_SQL_DELETE "Delete n'est pas utilisable actuellement pour les views SQL"
-#define MSG_NO_SUB_VAL "Pas de sous-value d'un tableau de type %d"
-#define MSG_NO_SUCH_INDEX "La table %s n'a pas l'index %s"
-#define MSG_NO_SUCH_SERVER "Serveur %s introuvable"
-#define MSG_NO_SUCH_TABLE "Table %s pas dans la base de donn‚es"
-#define MSG_NO_TABCOL_DATA "Pas de donn‚es pour la table %s colonne %s"
-#define MSG_NO_TABLE_COL "Aucune colonne trouv‚e pour %s"
-#define MSG_NO_TABLE_DEL "Delete non autoris‚ pour les tables %s "
-#define MSG_NO_TABLE_DESC "Pas de bloc descriptif de table"
-#define MSG_NO_TABLE_INDEX "La table %s n'a pas d'index"
-#define MSG_NO_TABLE_LIST "Pas de liste de tables"
-#define MSG_NO_TAB_DATA "Pas de donn‚es pour la table %s"
-#define MSG_NO_TERM_IN_TOK "Les non-terminaux ne sont pas utilisables dans les rŠgles de Token"
-#define MSG_NO_TOKEN_DB "DB introuvable pour la colonne TOKEN %s"
-#define MSG_NO_UNIX_CATINFO "Pas d'info catalogue sous Unix"
-#define MSG_NO_UPDEL_JOIN "Pas de jointure de tables ODBC pour Update/Delete"
-#define MSG_NO_VCT_DELETE "D‚l‚tion Partielle non impl‚ment‚e pour les fichiers VCT"
-#define MSG_NO_VIEW_COLDEF "Colonne d‚finition impossible pour les views"
-#define MSG_NO_VIEW_SORT "La View fonctionnelle %s ne peut pas ˆtre tri‚e ou jointe"
-#define MSG_NO_ZIP_DELETE "Delete sur fichier Zip non encore implement‚"
-#define MSG_NO_ZIP_DIR_ACC "AccŠs directe des tables ZDOS non encore implement‚"
-#define MSG_NULL_COL_VALUE "La colonne n'a pas de valeur"
-#define MSG_NULL_ENTRY "InitLang, entr‚e nulle %d %s"
-#define MSG_NULL_QUERY "Requˆte vide"
-#define MSG_NUMVAL_NOMATCH "Disparit‚ de Numval pour %s"
-#define MSG_N_FULL_PARSES "%d significations"
-#define MSG_ODBC_READ_ONLY "ODBC est actuellement en lecture seulement"
-#define MSG_OFFSET_NOT_SUPP "Offset non support‚ pour ce type de sous requˆte"
-#define MSG_ONE_LANG_YET "Un langage est d‚j… en ‚dition"
-#define MSG_ONE_PARAM_ONLY "Un seul paramŠtre autoris‚"
-#define MSG_ONLY_LOG10_IMPL "Seul Log10 est implement‚"
-#define MSG_ON_LANGUAGE "Langage %.8s version %d niveau %d ‚ditable"
-#define MSG_OPENING "Ouverture"
-#define MSG_OPENING_QUERY "Ouverture de la requˆte"
-#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_ERROR_ON "Erreur d'ouverture sur %s"
-#define MSG_OPEN_MODE_ERROR "Erreur d'ouverture(%s) %d sur %s"
-#define MSG_OPEN_SORT_ERROR "Erreur logique de tri dans QUERY Open"
-#define MSG_OPEN_STRERROR "Erreur … l'ouverture: %s"
-#define MSG_OPEN_W_ERROR "Erreur … l'ouverture de %s en ‚criture"
-#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_INIT "Optimisation initialis‚e"
-#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_OP_RES_TOO_LONG "R‚sultat trop long pour l'op‚rateur=%d"
-#define MSG_ORDER_OUT_RANGE "Tri: Order %d hors limite"
-#define MSG_ORDER_TWICE "Un mˆme ‚l‚ment est tri‚ deux fois"
-#define MSG_PAGE_ERROR "Erreur de pagination"
-#define MSG_PARM_CNT_MISS "Disparit‚ du nombre de ParamŠtres"
-#define MSG_PARSE_NULL_SEM "S‚mantique nulle"
-#define MSG_PARSING_QUERY "Analyse de la requˆte"
-#define MSG_PIX_ERROR "Pix %s erreur rŠgle no=%u\n"
-#define MSG_PIX_TEST_ERROR "RŠgle=%u: pix-TEST pas dans le premier noeud\n"
-#define MSG_PLG_READ_ONLY "PLG est actuellement en lecture seulement"
-#define MSG_PLM_NULL_SFP "TABPLM ReadDB: Sfp est NULL"
-#define MSG_PLUG_NOT_INIT "Plug n'est pas initialis‚\n"
-#define MSG_PLUG_NOT_RUN "Plug n'est pas en marche"
-#define MSG_PNODE_RULE "(Noeud %d rŠgle %d) "
-#define MSG_POS_TOO_LONG "%s trop long (>%d)"
-#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_PROCESS_SUBQRY "Sub-Query en cours de traitement"
-#define MSG_PROC_WOULD_LOOP "Bouclage du traitement (maxres=%d maxlin=%d)"
-#define MSG_PROGRESS_INFO "Informations sur le traitement en cours"
-#define MSG_PROMPT_CANCEL "Relance annul‚e"
-#define MSG_PROMPT_NIY "Prompt non impl‚ment‚ pour cette configuration"
-#define MSG_PTR_NOT_FOUND "Pointeur introuvable Num=%d ti1=%d"
-#define MSG_PXDEF_IS_NULL "Pxdef est NULL"
-#define MSG_QRY_READ_ONLY "Les views QRY sont en lecture seulement"
-#define MSG_QUERY_CANCELLED "Requˆte interrompue par l'utilisateur"
-#define MSG_QUERY_NOT_EXEC "Requˆte non ex‚cut‚e"
-#define MSG_QUERY_SAVED "Requˆte %s sauvegard‚e"
-#define MSG_QUOTE_IN_QUOTE "Appostrophe dans un champ entre appostrophe ligne %d"
-#define MSG_RANGE_NIY "Range pas encore impl‚ment‚ pour %s"
-#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_READB_BAD_INIT "%s ReadDB appel‚ avec Init=0"
-#define MSG_READCOL_ERROR "SQLCOL: erreur dans ReadColumn"
-#define MSG_READING "Lecture"
-#define MSG_READING_FROM "Lecture de %s"
-#define MSG_READING_RECORD "Erreur en lecture de l'enregistrement %d de %s"
-#define MSG_READY "Prˆt"
-#define MSG_READ_ERROR "Erreur en lecture sur %s: %s"
-#define MSG_READ_ERROR_RC "Erreur en lecture, rc=%d"
-#define MSG_READ_MEM_ERROR "Lecture m‚moire %d: taille=%d"
-#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_READ_SEG_ERROR "Lecture segment %d: taille=%d"
-#define MSG_RECEIVED "Re‡u %c\n"
-#define MSG_RECORD_ERROR "Erreur … la lecture de l'enregistrement %d de %s"
-#define MSG_RECORD_NO_SEP "Enregistrement sans s‚parateur"
-#define MSG_REC_SKIPPED " (%d lignes erronn‚es saut‚es par l'option MaxErr)"
-#define MSG_REDUCE_INDEX "Réduction de l'index"
-#define MSG_REGISTER_ERR "Enregistrement NS impossible, pr‚fix='%s' et href='%s'"
-#define MSG_REMOTE_CONN_ERR "La connection ‚loign‚e a ‚chou‚"
-#define MSG_REMOVE_ERROR "Erreur en supprimant %s: %s"
-#define MSG_REMOVE_NOT_IMPL "Remove non impl‚ment‚ pour TDB non Table"
-#define MSG_RENAME_ERROR "Erreur renommant %s en %s: %s"
-#define MSG_RENUM_RULES "Renum‚rotez les rŠgles et r‚entrez ADD (rŠgle sauvegard‚e dans la zone tampon)"
-#define MSG_REORDER_INDEX "Reclassement de l'index"
-#define MSG_REQU_ARG_NUM "La fonction %s doit avoir %d arguments"
-#define MSG_RESET_TO "%s remis … %d"
-#define MSG_RES_NOT_UNIQUE "Le r‚sultat n'est pas unique"
-#define MSG_RET_FROM_LANG "Retour au language %s version %d.%d du language %s version %d.%d"
-#define MSG_ROWID_NOT_IMPL "RowNumber non impl‚ment‚ pour les tables de type %s"
-#define MSG_ROWS_SELECTED "%d lignes s‚lectionn‚es en %.2lf sec"
-#define MSG_ROWS_TRUNCATED " (tronqu‚ par MAXRES, LIMIT, FREQ ou AreaSize)"
-#define MSG_ROW_ARGNB_ERR "ROW: disparit‚ du nombre d'arguments (%d,%d)"
-#define MSG_RPC_SERVER_ERR "Erreur logique dans TABMUL::MakeCol"
-#define MSG_RSC_ALLOC_ERROR "Erreur d'allocation m‚moire dans Rescol %s"
-#define MSG_RULE_ENTERED "RŠgle %d entr‚e"
-#define MSG_RULE_SUBSET_ERR "Erreur d'initialisation de la zone RŠgles"
-#define MSG_SAVING_INDEX "Sauvegarde du fichier index"
-#define MSG_SCAN_NOT_IMP "Scan non impl‚ment‚"
-#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_SEC_NOT_FOUND "Section %s absente de %s"
-#define MSG_SEEK_ERROR "Seek erreur dans CopyHeader"
-#define MSG_SEMANTIC_TREE "Arbre s‚mantique"
-#define MSG_SEM_BAD_REF "Sem @%d r‚f‚rence un argument de type non 0 ou 1"
-#define MSG_SEM_UNKNOWN "inconnue, rc=%d"
-#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_LOCALE "Locale fix‚e … %s"
-#define MSG_SET_NULL_DOM "Valeur %d donn‚e … un domaine nul"
-#define MSG_SET_OP_NOT_IMPL "Op‚rateurs ensemblistes non impl‚ment‚s"
-#define MSG_SET_STR_TRUNC "SetValue: ChaŒne de caractŠres tronqu‚e"
-#define MSG_SEVERAL_TREES "Jointure non sp‚cifi‚e pour certaines tables"
-#define MSG_SFP_ERROR "Erreur sur SetFilePointer: %s"
-#define MSG_SFUNC_NOT_IMPL "Fonction scalaire %s non impl‚ment‚e"
-#define MSG_SHARED_LIB_ERR "Erreur au chargement de la librairie partag‚e %s: %s"
-#define MSG_SINGLE_STEP "Pas … pas"
-#define MSG_SLEEP "J'ai dormi %d milliseconds"
-#define MSG_SMART_SORTING "R‚cup‚ration des lignes tri‚es (passage %d de %d)"
-#define MSG_SMART_SORT_ERR "Erreur logique 1 dans Smart Sort"
-#define MSG_SORTING "Tri en cours"
-#define MSG_SORTING_INDEX "Tri de l'index"
-#define MSG_SORTING_VAL "Tri de %d valeurs"
-#define MSG_SORT_JOIN_INDEX "Tri de l'index de jointure"
-#define MSG_SPCOL_READONLY "La colonne sp‚ciale %s est en lecture seulement"
-#define MSG_SPEC_CMD_SEP "Les commandes sp‚ciales doivent ˆtre ex‚cut‚es s‚par‚ment"
-#define MSG_SQL_BAD_TYPE "RephraseSQL: type %d non support‚"
-#define MSG_SQL_BLOCK_MISM "CheckColumn: bloc SQL courant non correspondant"
-#define MSG_SQL_CONF_ERROR "Erreur SQL: SQL_CONFORMANCE"
-#define MSG_SQL_READ_ONLY "Les views SQL sont actuellement en lecture seulement"
-#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_ERROR "Erreur sur la pile, i=%d\n"
-#define MSG_STACK_OVERFLOW "Parser: D‚bordement de la pile\n"
-#define MSG_STRG_NOT_FOUND "ChaŒne introuvable"
-#define MSG_STRING_INV_LIST "Liste invalide pour SemString"
-#define MSG_STRING_TOO_BIG "ChaŒne trop grande pour le domaine %s"
-#define MSG_SUBALLOC_ERROR "Pas assez de m‚moire en zone %p pour allouer %d (utilis‚=%d libre=%d)"
-#define MSG_SUBAL_HUGE_ERR "Pas assez de m‚moire en zone huge %p pour allouer %d"
-#define MSG_SUBARG_NOSEM "Argument @ ou sous-phrase de niveau %d pointe sur un noeud sans Sem"
-#define MSG_SUBARG_OUTRANGE "Argument @ ou sous-phrase de niveau %d hors limite"
-#define MSG_SUBQRY_ONEITEM "Une Sub-Query ne doit avoir qu'une s‚lection"
-#define MSG_SUBSET_ERROR "SubSet erreur dans LoadDB"
-#define MSG_SUB_OPEN_YET "Subquery d‚j… ouverte"
-#define MSG_SUB_RES_TOO_LNG "R‚sultat trop long pour SUBSTR"
-#define MSG_SYNTAX_ERROR "Erreur de syntaxe"
-#define MSG_SYSTEM_ERROR "Erreur systŠme %d"
-#define MSG_S_ACCESS_DENIED "%s: accŠs non autoris‚"
-#define MSG_S_ERROR "%s erreur"
-#define MSG_S_ERROR_NUM "%s: erreur=%d"
-#define MSG_S_INTRUPT_ERROR "%s: erreur interruption"
-#define MSG_S_INVALID_PARM "%s: paramŠtre invalide"
-#define MSG_S_INV_ADDRESS "%s: adresse invalide"
-#define MSG_S_UNKNOWN_ERROR "%s: erreur de code %u inconnu"
-#define MSG_TABDIR_READONLY "Les tables DIR sont en lecture seulement"
-#define MSG_TABLE_ALREADY "La table %s existe d‚j…"
-#define MSG_TABLE_ALTERED "Table %s %s alt‚r‚e"
-#define MSG_TABLE_CREATED "%s table %s cr‚‚e"
-#define MSG_TABLE_DROPPED "Table %s supprim‚e"
-#define MSG_TABLE_MULT_JOIN "Utilisation multiple de la table %s pour jointure"
-#define MSG_TABLE_NOT_IN_DB "La table %s n'existe pas dans %s"
-#define MSG_TABLE_NOT_OPT "Table non optimisable"
-#define MSG_TABLE_NO_INDEX "La table %s n'est pas indexable"
-#define MSG_TABLE_NO_OPT "La table %s n'existe pas ou de type non optimisable"
-#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_TAB_NOT_LOADED " (certaines tables n'ont put ˆtre charg‚es)"
-#define MSG_TAB_NOT_SPEC "Table non specifi‚e"
-#define MSG_TB_VW_NOTIN_DB "Table ou view %s pas dans la base de donn‚es"
-#define MSG_TDB_NXT_NOT_NUL "Tdb.Next non NULL"
-#define MSG_TDB_USE_ERROR "Erreur, Tdbp->Use=%d"
-#define MSG_TOO_MANY_COLS "Trop de colonnes"
-#define MSG_TOO_MANY_COLTAB "Trop de colonnes dans %s (%d)"
-#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_TOO_MANY_POS "Trop de pos_codes"
-#define MSG_TOO_MANY_TABLES "Trop de tables (%d)"
-#define MSG_TOPSEM_ERROR "Erreur inconnue dans TopSem"
-#define MSG_TO_BLK_IS_NULL "To Blk est nul"
-#define MSG_TO_FTR_NOT_NULL "Set.To_Ftr n'est pas nul"
-#define MSG_TO_PIX_NOT_NULL "Set.To_Pix n'est pas nul"
-#define MSG_TO_SEM_NOT_NULL "Set.To_Sem n'est pas nul"
-#define MSG_TRUNCATE_ERROR "Erreur en troncation: %s"
-#define MSG_TRUNC_BY_ESTIM "Tronqu‚ par l'option Estimate"
-#define MSG_TYPES_ERROR "Erreur sur Types(%d)"
-#define MSG_TYPE_CONV_ERROR "Type non convertible dans une expression"
-#define MSG_TYPE_DEF_MISM "Disparit‚ entre type et d‚finition"
-#define MSG_TYPE_MISMATCH "Cl‚ et source ne sont pas du mˆme type"
-#define MSG_TYPE_RECFM_MISM "Disparit‚ entre Type et Recfm"
-#define MSG_TYPE_TO_VERIFY "Type … v‚rifier: %d"
-#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_UNDEFINED_PATH "Chemin d'accŠs ind‚fini pour Plgcnx.ini"
-#define MSG_UNDEF_COL_COUNT "Count sur colonne non d‚finie"
-#define MSG_UNKNOWN_DOMAIN "Domaine inconnu %s"
-#define MSG_UNKNOWN_ERROR "Erreur inconnue"
-#define MSG_UNKNOWN_EXCPT "Exception non r‚pertori‚e"
-#define MSG_UNKNOWN_NAME "Nom inconnu: %.8s"
-#define MSG_UNKNOWN_PATH "Chemin d'accŠs inconnu pour Plgcnx.ini"
-#define MSG_UNKNOWN_POS "Nom pos_code inconnu: %s"
-#define MSG_UNKNOWN_SEM "Sem %.8s inconnue, rc=%d"
-#define MSG_UNKNOWN_SYNONYM "Synonyme inconnu"
-#define MSG_UNKNW_QRY_TYPE "ReadDB: type de requˆte inconnu"
-#define MSG_UNKN_ERR_CODE "Erreur de code %d inconnu"
-#define MSG_UNLOADABLE " inchargeable: "
-#define MSG_UNLOADABLE_PRM "%s inchargeable: %s"
-#define MSG_UNMATCH_FIL_ARG "Argument de filtre d‚pareill‚"
-#define MSG_UNQ_COL_SEV_TAB "La colonne %s non qualifi‚e est dans plusieurs tables"
-#define MSG_UNRESOLVED_ARG "?Argument manquant: %s non r‚solu en %d ligne %d"
-#define MSG_UPDATE_ERROR "Erreur en Update sur %s"
-#define MSG_UPDATING_ROWS "Mise … jour des lignes"
-#define MSG_UPD_ZIP_NOT_IMP "Mise … jour des tables ZDOS non encore implement‚"
-#define MSG_UP_LANGUAGE "Bloc langage %.8s version %d niveau %d charg‚"
-#define MSG_USED_FREE_MEM "Sarea: utilis‚ %d, libre %d"
-#define MSG_USETEMP_IS "Usetemp est : %s"
-#define MSG_USETEMP_RESET ". Usetemp remis … Auto"
-#define MSG_USETEMP_SET "Usetemp fix‚ … %s"
-#define MSG_USE_NO_MATCH "Use non correspondant : Use=%d, ti2=%d, ti3=%d"
-#define MSG_USING_INDEX " (Index‚ par"
-#define MSG_VALIST_MISMATCH "Disparit‚ des listes de valeurs"
-#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_NOT_ALLOC "Valeur non allou‚e pour la colonne R%d %s"
-#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_VAL_TOO_LONG "Valeur %s trop longue pour le champ %s"
-#define MSG_VIEW_ALREADY "La VIEW %s existe d‚j…"
-#define MSG_VIEW_CREATED "%s view %s cr‚‚e"
-#define MSG_VIEW_DROPPED "View %s supprim‚e"
-#define MSG_VIEW_NOT_IN_DB "%s n'est pas une View de %s"
-#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_VM_LANG "Langage au format VM, non support‚"
-#define MSG_VOID_FIRST_ARG "Le premier argument ne doit pas ˆtre vide"
-#define MSG_VOID_IN_STRING "Erreur: chaŒne IN vide"
-#define MSG_VOID_ORDER_LIST "Liste de tri vide, erreur systŠme ?"
-#define MSG_VOID_POS_DICT "Dictionnaire interne du langage vide"
-#define MSG_VOID_QUERY "Requˆte vide %s"
-#define MSG_WORK_AREA "Espace de travail: %s"
-#define MSG_WORK_TOO_SMALL "Zone de travail trop petite, accroŒtre AreaSize"
-#define MSG_WRITE_ERROR "Erreur … l'‚criture de %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_WRITING_QUERY "Erreur … l'‚criture de la requˆte: "
-#define MSG_WRONG_ARG_NUM "La fonction %s ne prend pas %d arguments"
-#define MSG_WRONG_COL_NUM "Num‚ro de colonne %d trop grand pour %s"
-#define MSG_WRONG_DB_LIST "Liste des bases de donn‚es incorrecte ou vide"
-#define MSG_WRONG_FUNCTION "Mauvaise fonction %d"
-#define MSG_WRONG_OP_PARM "Mauvais op‚rateur ou paramŠtres pour %s"
-#define MSG_WRONG_PARMS "Mauvais paramŠtres pour %s"
-#define MSG_WRONG_PASSWORD "Mot de passe ill‚gal pour %s"
-#define MSG_WRONG_TYPE "type non support‚"
-#define MSG_WRONG_USERFILE "La Userfile a une mauvaise taille %d"
-#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_XDB_DEL_ERROR "Erreur en supprimant des entr‚es du fichier XDB"
-#define MSG_XFILE_READERR "Erreur %d en lisant le fichier index"
-#define MSG_XFILE_TOO_SMALL "Le fichier index est plus petit que la taille de l'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"
-#define MSG_X_ARG_ADDED "%d arguments ajout‚s"
-#define MSG_X_ARG_SET "%d arguments ont ‚t‚ initialis‚s"
-#define MSG_X_ON_TAB " %s sur %s("
-#define MSG_ZERO_DIVIDE "Division par z‚ro dans une expression"
diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc
index 802015341b8..080440e052b 100644
--- a/storage/connect/ha_connect.cc
+++ b/storage/connect/ha_connect.cc
@@ -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
diff --git a/storage/connect/messages.h b/storage/connect/messages.h
index b55ec39b235..91e04f3d472 100644
--- a/storage/connect/messages.h
+++ b/storage/connect/messages.h
@@ -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 */
/* ---------------------------------------------------------------------- */
diff --git a/storage/connect/plgdbsem.h b/storage/connect/plgdbsem.h
index 370bf69ffa0..4371f90a21d 100644
--- a/storage/connect/plgdbsem.h
+++ b/storage/connect/plgdbsem.h
@@ -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 */
diff --git a/storage/connect/rcmsg.c b/storage/connect/rcmsg.c
index 4cd443d88bb..e2fd08ba866 100644
--- a/storage/connect/rcmsg.c
+++ b/storage/connect/rcmsg.c
@@ -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)
diff --git a/storage/innobase/btr/btr0btr.cc b/storage/innobase/btr/btr0btr.cc
index 3b48c0827e7..19192cdf798 100644
--- a/storage/innobase/btr/btr0btr.cc
+++ b/storage/innobase/btr/btr0btr.cc
@@ -4882,6 +4882,7 @@ corrupted:
loop:
if (!block) {
invalid_page:
+ mtr.commit();
func_exit:
mem_heap_free(heap);
return err;
diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc
index 98b95239a68..3f5145b9556 100644
--- a/storage/innobase/buf/buf0buf.cc
+++ b/storage/innobase/buf/buf0buf.cc
@@ -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. */
diff --git a/storage/innobase/dict/dict0stats_bg.cc b/storage/innobase/dict/dict0stats_bg.cc
index 224caea70bb..10c7426103c 100644
--- a/storage/innobase/dict/dict0stats_bg.cc
+++ b/storage/innobase/dict/dict0stats_bg.cc
@@ -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>
diff --git a/storage/innobase/fsp/fsp0fsp.cc b/storage/innobase/fsp/fsp0fsp.cc
index 7b931b29aa1..09583e157b7 100644
--- a/storage/innobase/fsp/fsp0fsp.cc
+++ b/storage/innobase/fsp/fsp0fsp.cc
@@ -2590,7 +2590,6 @@ corrupted:
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
return err;
}
- return err;
}
mtr->free(*space, static_cast<uint32_t>(offset));
diff --git a/storage/innobase/handler/ha_innodb.h b/storage/innobase/handler/ha_innodb.h
index 6a4948256a0..01acde3d8e6 100644
--- a/storage/innobase/handler/ha_innodb.h
+++ b/storage/innobase/handler/ha_innodb.h
@@ -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;
diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc
index 0babd37251e..0b933265fcf 100644
--- a/storage/innobase/handler/handler0alter.cc
+++ b/storage/innobase/handler/handler0alter.cc
@@ -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++);
+ }
}
}
}
diff --git a/storage/innobase/include/mtr0mtr.inl b/storage/innobase/include/mtr0mtr.inl
index 0b45bc1d695..1368cca0efd 100644
--- a/storage/innobase/include/mtr0mtr.inl
+++ b/storage/innobase/include/mtr0mtr.inl
@@ -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));
diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc
index bb2a488e0ae..0b6ddce30ce 100644
--- a/storage/innobase/log/log0recv.cc
+++ b/storage/innobase/log/log0recv.cc
@@ -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())
diff --git a/storage/innobase/page/page0cur.cc b/storage/innobase/page/page0cur.cc
index cc94d6cfa3e..073b903a740 100644
--- a/storage/innobase/page/page0cur.cc
+++ b/storage/innobase/page/page0cur.cc
@@ -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;
diff --git a/storage/innobase/row/row0ins.cc b/storage/innobase/row/row0ins.cc
index 35179eaf7c3..0f36e1910e5 100644
--- a/storage/innobase/row/row0ins.cc
+++ b/storage/innobase/row/row0ins.cc
@@ -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 */
/*************************************************************************
diff --git a/storage/innobase/row/row0mysql.cc b/storage/innobase/row/row0mysql.cc
index cbfbffcd3b4..66d937f0c27 100644
--- a/storage/innobase/row/row0mysql.cc
+++ b/storage/innobase/row/row0mysql.cc
@@ -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. */