1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

- Implement the NEWMSG and XMSG methods

They are still experimental and should not be used in production.
added:
  storage/connect/encas.h
  storage/connect/english.msg
  storage/connect/enids.h
  storage/connect/frcas.h
  storage/connect/french.msg
  storage/connect/frids.h
  storage/connect/frmsg.h
modified:
  storage/connect/connect.cc
  storage/connect/engmsg.h
  storage/connect/filamdbf.cpp
  storage/connect/global.h
  storage/connect/ha_connect.cc
  storage/connect/msgid.h
  storage/connect/plgdbutl.cpp
  storage/connect/plugutil.c
  storage/connect/rcmsg.c
  storage/connect/resource.h
  storage/connect/tabfmt.h

- Fix global variable not being properly initialized (MDEV-6690, MDEV-7094)
modified:
  storage/connect/ha_connect.cc
  storage/connect/plugutil.c
  storage/connect/user_connect.cc
  storage/connect/xindex.cpp

- Implement Rewind for ODBC tables (MDEV-7097)
modified:
  storage/connect/odbconn.cpp
  storage/connect/odbconn.h
  storage/connect/tabmysql.cpp
  storage/connect/tabodbc.cpp

- Reset N when reopening MYSQL tables
modified:
  storage/connect/tabmysql.cpp
This commit is contained in:
Olivier Bertrand
2014-11-15 18:28:24 +01:00
parent 9ade2d088d
commit 5d8311960a
25 changed files with 2464 additions and 2192 deletions

View File

@@ -281,7 +281,7 @@ bool CntOpenTable(PGLOBAL g, PTDB tdbp, MODE mode, char *c1, char *c2,
if (!colp && !(mode == MODE_INSERT && tdbp->IsSpecial(p))) { if (!colp && !(mode == MODE_INSERT && tdbp->IsSpecial(p))) {
if (g->Message[0] == 0) if (g->Message[0] == 0)
sprintf(g->Message, "Column %s not found in %s", p, tdbp->GetName()); sprintf(g->Message, MSG(COL_ISNOT_TABLE), p, tdbp->GetName());
goto err; goto err;
} // endif colp } // endif colp
@@ -651,7 +651,7 @@ int CntIndexInit(PGLOBAL g, PTDB ptdb, int id, bool sorted)
if (!ptdb) if (!ptdb)
return -1; return -1;
else if (!((PTDBASE)ptdb)->GetDef()->Indexable()) { else if (!((PTDBASE)ptdb)->GetDef()->Indexable()) {
sprintf(g->Message, "CntIndexInit: Table %s is not indexable", ptdb->GetName()); sprintf(g->Message, MSG(TABLE_NO_INDEX), ptdb->GetName());
return 0; return 0;
} else if (((PTDBASE)ptdb)->GetDef()->Indexable() == 3) { } else if (((PTDBASE)ptdb)->GetDef()->Indexable() == 3) {
return 1; return 1;
@@ -724,7 +724,7 @@ RCODE CntIndexRead(PGLOBAL g, PTDB ptdb, OPVAL op,
x= ((PTDBASE)ptdb)->GetDef()->Indexable(); x= ((PTDBASE)ptdb)->GetDef()->Indexable();
if (!x) { if (!x) {
sprintf(g->Message, "CntIndexRead: Table %s is not indexable", ptdb->GetName()); sprintf(g->Message, MSG(TABLE_NO_INDEX), ptdb->GetName());
return RC_FX; return RC_FX;
} else if (x == 2) { } else if (x == 2) {
// Remote index // Remote index
@@ -838,7 +838,7 @@ int CntIndexRange(PGLOBAL g, PTDB ptdb, const uchar* *key, uint *len,
x= ((PTDBASE)ptdb)->GetDef()->Indexable(); x= ((PTDBASE)ptdb)->GetDef()->Indexable();
if (!x) { if (!x) {
sprintf(g->Message, "CntIndexRange: Table %s is not indexable", ptdb->GetName()); sprintf(g->Message, MSG(TABLE_NO_INDEX), ptdb->GetName());
DBUG_PRINT("Range", ("%s", g->Message)); DBUG_PRINT("Range", ("%s", g->Message));
return -1; return -1;
} else if (x == 2) { } else if (x == 2) {

320
storage/connect/encas.h Normal file
View File

@@ -0,0 +1,320 @@
case MSG_ACCESS_VIOLATN: p = "Access violation"; break;
case MSG_ADD_BAD_TYPE: p = "Array add value type mismatch (%s -> %s)"; break;
case MSG_ALLOC_ERROR: p = "Error allocating %s"; break;
case MSG_ANSWER_TYPE: p = "Answer of type"; break;
case MSG_API_CONF_ERROR: p = "SQL Error: API_CONFORMANCE"; break;
case MSG_APPL_NOT_INIT: p = "Application not initialized"; break;
case MSG_ARRAY_BNDS_EXCD: p = "Array bounds exceeded"; break;
case MSG_BAD_ARRAY_OPER: p = "Arrays must be used with the IN operator"; break;
case MSG_BAD_ARRAY_TYPE: p = "Illegal array type %d"; break;
case MSG_BAD_ARRAY_VAL: p = "Arrays must have the same number of values"; break;
case MSG_BAD_BIN_FMT: p = "Invalid format %c for the %s BIN column"; break;
case MSG_BAD_BLK_ESTIM: p = "Number of blocks exceeds estimate"; break;
case MSG_BAD_BLK_SIZE: p = "No match in block %d size"; break;
case MSG_BAD_BYTE_NUM: p = "bad number of bytes written"; break;
case MSG_BAD_BYTE_READ: p = "bad number of bytes read"; break;
case MSG_BAD_COL_TYPE: p = "Invalid type %s for column %s"; break;
case MSG_BAD_COL_XPATH: p = "Invalid Xpath in column %s for HTML table %s"; break;
case MSG_BAD_CONST_TYPE: p = "Bad constant type=%d"; break;
case MSG_BAD_CONV_TYPE: p = "Invalid convert type %d"; break;
case MSG_BAD_DATETIME: p = "Invalid datetime value"; break;
case MSG_BAD_DBF_FILE: p = "DBF file %s is corrupted"; break;
case MSG_BAD_DBF_REC: p = "DBF file %s corrupted at record %d"; break;
case MSG_BAD_DBF_TYPE: p = "Unsupported DBF type %c for column %s"; break;
case MSG_BAD_DIRECTORY: p = "Bad directory %s: %s"; break;
case MSG_BAD_FIELD_RANK: p = "Invalid field rank %d for column %s"; break;
case MSG_BAD_FIELD_TYPE: p = "Bad type field %s"; break;
case MSG_BAD_FILE_HANDLE: p = "Invalid File Handle: %s"; break;
case MSG_BAD_FILTER: p = "Bad filter: Opc=%d B_T=%d %d Type=%d %d"; break;
case MSG_BAD_FILTER_CONV: p = "Bad filter conversion, B_T=%d,%d"; break;
case MSG_BAD_FILTER_OP: p = "Invalid filter operator %d"; break;
case MSG_BAD_FLD_FORMAT: p = "Bad format for field %d of %s"; break;
case MSG_BAD_FLD_LENGTH: p = "Field %s too long (%s --> %d) line %d of %s"; break;
case MSG_BAD_FREQ_SET: p = "Bad frequency setting for column %s"; break;
case MSG_BAD_FUNC_MODE: p = "%s: invalid mode %d"; break;
case MSG_BAD_HANDLE_VAL: p = "Invalid handle value"; break;
case MSG_BAD_HEADER: p = "File %s: Header corrupted"; break;
case MSG_BAD_HEAD_END: p = "Can't read end of header"; break;
case MSG_BAD_INDEX_FILE: p = "Wrong index file %s"; break;
case MSG_BAD_LINEFLD_FMT: p = "Bad format line %d field %d of %s"; break;
case MSG_BAD_LINE_LEN: p = "Line length not equal to Lrecl"; break;
case MSG_BAD_LRECL: p = "Table/File lrecl mismatch (%d,%hd)"; break;
case MSG_BAD_NODE_TYPE: p = "Bad type %d for table node"; break;
case MSG_BAD_OFFSET_VAL: p = "Invalid null offset value for a CSV table"; break;
case MSG_BAD_OPEN_MODE: p = "Invalid open mode %d"; break;
case MSG_BAD_PARAM_TYPE: p = "%.8s: Bad parameter type=%d"; break;
case MSG_BAD_PARM_COUNT: p = "Parameter count mismatch"; break;
case MSG_BAD_QUOTE_FIELD: p = "Missing ending quote in %s field %d line %d"; break;
case MSG_BAD_READ_NUMBER: p = "Wrong number %d of values read from %s"; break;
case MSG_BAD_RECFM: p = "Invalid recfm type %d for DOSCOL"; break;
case MSG_BAD_RECFM_VAL: p = "Bad Recfm value %d"; break;
case MSG_BAD_SET_CASE: p = "Cannot set sensitive an insensitive array"; break;
case MSG_BAD_SET_STRING: p = "Invalid SetValue from string"; break;
case MSG_BAD_SPECIAL_COL: p = "Bad special column %s"; break;
case MSG_BAD_SPEC_COLUMN: p = "Special column invalid for this table type"; break;
case MSG_BAD_TABLE_TYPE: p = "Bad type %s for table %s"; break;
case MSG_BAD_TYPE_LIKE: p = "Bad operand(%d) type=%d for LIKE"; break;
case MSG_BAD_VALBLK_INDX: p = "Out of range valblock index value"; break;
case MSG_BAD_VALBLK_TYPE: p = "Invalid value block type %d"; break;
case MSG_BAD_VALNODE: p = "Bad type %d for column %s value node"; break;
case MSG_BAD_VALUE_TYPE: p = "Invalid value type %d"; break;
case MSG_BAD_VAL_UPDATE: p = "Don't know which %s value to update"; break;
case MSG_BAS_NS_LIST: p = "Invalid namespaces list format"; break;
case MSG_BIN_F_TOO_LONG: p = "Value too long for field %s (%d --> %d)"; break;
case MSG_BIN_MODE_FAIL: p = "Set binary mode failed: %s"; break;
case MSG_BLKTYPLEN_MISM: p = "Non matching block types/lengths in SetValue"; break;
case MSG_BLK_IS_NULL: p = "Blk is NULL"; break;
case MSG_BREAKPOINT: p = "Breakpoint"; break;
case MSG_BUILD_INDEX: p = "Building index %s on %s"; break;
case MSG_CANNOT_OPEN: p = "Cannot open %s"; break;
case MSG_CHSIZE_ERROR: p = "chsize error: %s"; break;
case MSG_COL_ALLOC_ERR: p = "Cannot allocate column node"; break;
case MSG_COL_ISNOT_TABLE: p = "Column %s is not in table %s"; break;
case MSG_COL_NOT_SORTED: p = "Column %s of table %s is not sorted"; break;
case MSG_COL_NUM_MISM: p = "Number of columns mismatch"; break;
case MSG_COM_ERROR: p = "Com error"; break;
case MSG_CONCAT_SUBNODE: p = "Cannot concatenate sub-nodes"; break;
case MSG_CONNECT_CANCEL: p = "Connection cancelled by user"; break;
case MSG_CONTROL_C_EXIT: p = "Control C exit"; break;
case MSG_DATABASE_LOADED: p = "Database %s loaded"; break;
case MSG_DATA_MISALIGN: p = "Datatype misalignment"; break;
case MSG_DBASE_FILE: p = "dBASE dbf file: "; break;
case MSG_DEF_ALLOC_ERROR: p = "Error allocating %s DEF class"; break;
case MSG_DEL_FILE_ERR: p = "Error deleting %s"; break;
case MSG_DEL_READ_ERROR: p = "Delete: read error req=%d len=%d"; break;
case MSG_DEL_WRITE_ERROR: p = "Delete: write error: %s"; break;
case MSG_DEPREC_FLAG: p = "Deprecated option Flag, use Coltype"; break;
case MSG_DLL_LOAD_ERROR: p = "Error %d loading module %s"; break;
case MSG_DOM_NOT_SUPP: p = "MS-DOM not supported by this version"; break;
case MSG_DVAL_NOTIN_LIST: p = "Value %s not found in distinct values list of column %s"; break;
case MSG_EMPTY_DOC: p = "Empty document"; break;
case MSG_EMPTY_FILE: p = "%s empty file %s: "; break;
case MSG_EOF_AFTER_LINE: p = "EOF after line %d"; break;
case MSG_EOF_INDEX_FILE: p = "EOF while reading index file"; break;
case MSG_ERROR_IN_LSK: p = "Error %d in lseek64"; break;
case MSG_ERROR_IN_SFP: p = "Error %d in SetFilePointer"; break;
case MSG_ERR_READING_REC: p = "Error reading record %d of %s"; break;
case MSG_FAIL_ADD_NODE: p = "Failed to add %s table node"; break;
case MSG_FETCH_NO_RES: p = "Fetch: No Result Set"; break;
case MSG_FIELD_TOO_LONG: p = "Value too long for field %d line %d"; break;
case MSG_FILELEN_ERROR: p = "Error in %s for %s"; break;
case MSG_FILE_IS_EMPTY: p = "File %s is empty"; break;
case MSG_FILE_MAP_ERR: p = "File mapping error"; break;
case MSG_FILE_MAP_ERROR: p = "CreateFileMapping %s error rc=%d"; break;
case MSG_FILE_OPEN_YET: p = "File %s already open"; break;
case MSG_FILE_UNFOUND: p = "File %s not found"; break;
case MSG_FLD_TOO_LNG_FOR: p = "Field %d too long for %s line %d of %s"; break;
case MSG_FLT_BAD_RESULT: p = "Float inexact result"; break;
case MSG_FLT_DENORMAL_OP: p = "Float denormal operand"; break;
case MSG_FLT_INVALID_OP: p = "Float invalid operation"; break;
case MSG_FLT_OVERFLOW: p = "Float overflow"; break;
case MSG_FLT_STACK_CHECK: p = "Float stack check"; break;
case MSG_FLT_UNDERFLOW: p = "Float underflow"; break;
case MSG_FLT_ZERO_DIVIDE: p = "Float divide by zero"; break;
case MSG_FMT_WRITE_NIY: p = "Writing %s files is not implemented yet"; break;
case MSG_FOXPRO_FILE: p = "FoxPro file: "; break;
case MSG_FPUTS_ERROR: p = "fputs error: %s"; break;
case MSG_FSEEK_ERROR: p = "fseek error: %s"; break;
case MSG_FSETPOS_ERROR: p = "fseek error for i=%d"; break;
case MSG_FTELL_ERROR: p = "ftell error for recd=%d: %s"; break;
case MSG_FUNCTION_ERROR: p = "%s error: %d"; break;
case MSG_FUNC_ERRNO: p = "Error %d in %s"; break;
case MSG_FUNC_ERROR: p = "Error in %s"; break;
case MSG_FUNC_ERR_S: p = "%s error: %s"; break;
case MSG_FWRITE_ERROR: p = "fwrite error: %s"; break;
case MSG_GET_DIST_VALS: p = "Retrieving distinct values from "; break;
case MSG_GET_FUNC_ERR: p = "Error getting function %s: %s"; break;
case MSG_GLOBAL_ERROR: p = "Cannot allocate Global (size=%d)\n"; break;
case MSG_GUARD_PAGE: p = "Guard page violation"; break;
case MSG_GZOPEN_ERROR: p = "gzopen %s error %d on %s"; break;
case MSG_ILLEGAL_INSTR: p = "Illegal instruction"; break;
case MSG_ILL_FILTER_CONV: p = "Filtering implies an illegal conversion"; break;
case MSG_INDEX_NOT_UNIQ: p = "Index is not unique"; break;
case MSG_INDEX_YET_ON: p = "Index %s already exists on %s"; break;
case MSG_INDX_COL_NOTIN: p = "Index column %s is not in table %s"; break;
case MSG_INDX_EXIST_YET: p = "Index entry already exists"; break;
case MSG_INIT_FAILED: p = "Failed to initialize %s processing"; break;
case MSG_INT_COL_ERROR: p = "Internal error for index column %s"; break;
case MSG_INT_OVERFLOW: p = "Integer overflow"; break;
case MSG_INT_ZERO_DIVIDE: p = "Integer divide by zero"; break;
case MSG_INVALID_DISP: p = "Invalid disposition"; break;
case MSG_INVALID_FTYPE: p = "SBV: invalid Ftype %d"; break;
case MSG_INVALID_HANDLE: p = "Invalid handle"; break;
case MSG_INVALID_OPER: p = "Invalid operator %d for %s"; break;
case MSG_INV_COLUMN_TYPE: p = "Invalid type %d for column %s"; break;
case MSG_INV_COL_TYPE: p = "Invalid column type %s"; break;
case MSG_INV_DEF_READ: p = "Invalid deferred Read rc=%d"; break;
case MSG_INV_DIRCOL_OFST: p = "Invalid DIRCOL offset %d"; break;
case MSG_INV_MAP_POS: p = "Invalid map position"; break;
case MSG_INV_RAND_ACC: p = "Invalid random access to non optimized table"; break;
case MSG_INV_REC_POS: p = "Invalid record position"; break;
case MSG_INV_RESULT_TYPE: p = "Invalid result type %s"; break;
case MSG_INV_UPDT_TABLE: p = "Table %s invalid for update"; break;
case MSG_IN_WITHOUT_SUB: p = "IN or EXISTS without array or subquery"; break;
case MSG_KEY_ALLOC_ERR: p = "Error allocating Key offset block"; break;
case MSG_KEY_ALLOC_ERROR: p = "Memory allocation error, Klen=%d n=%d"; break;
case MSG_LINE_TOO_LONG: p = "New line is too long"; break;
case MSG_LIST: p = "--List--"; break;
case MSG_LOADING_FAILED: p = "Loading of %s failed"; break;
case MSG_LRECL_TOO_SMALL: p = "Lrecl too small (headlen = %d)"; break;
case MSG_MAKE_EMPTY_FILE: p = "Making empty file %s: %s"; break;
case MSG_MAKING: p = "Making"; break;
case MSG_MALLOC_ERROR: p = "Memory allocation failed: %s returned Null"; break;
case MSG_MAP_VIEW_ERROR: p = "MapViewOfFile %s error rc=%d"; break;
case MSG_MAXSIZE_ERROR: p = "Cannot calculate max size on open table"; break;
case MSG_MEM_ALLOC_ERR: p = "Memory allocation error, %s size=%d"; break;
case MSG_MEM_ALLOC_ERROR: p = "Memory allocation error"; break;
case MSG_MISPLACED_QUOTE: p = "Misplaced quote in line %d"; break;
case MSG_MISSING_ARG: p = "Missing argument for operator %d"; break;
case MSG_MISSING_FIELD: p = "Missing field %d in %s line %d"; break;
case MSG_MISSING_FNAME: p = "Missing file name"; break;
case MSG_MISSING_NODE: p = "Missing %s node in %s"; break;
case MSG_MISSING_ROWNODE: p = "Can't find RowNode for row %d"; break;
case MSG_MIS_TAG_LIST: p = "Missing column tag list"; break;
case MSG_MUL_MAKECOL_ERR: p = "Tabmul MakeCol logical error"; break;
case MSG_NAME_CONV_ERR: p = "Error converting node name"; break;
case MSG_NEW_DOC_FAILED: p = "Cannot create new document"; break;
case MSG_NEW_RETURN_NULL: p = "New returned Null in PlugEvalLike"; break;
case MSG_NEXT_FILE_ERROR: p = "Couldn't find next file. rc=%d"; break;
case MSG_NONCONT_EXCEPT: p = "Noncontinuable exception"; break;
case MSG_NOP_ZLIB_INDEX: p = "Cannot do indexing on non optimized zlib table"; break;
case MSG_NOT_A_DBF_FILE: p = "Not a dBASE dbf file "; break;
case MSG_NOT_FIXED_LEN: p = "File %s is not fixed length, len=%d lrecl=%d"; break;
case MSG_NO_0DH_HEAD: p = "No 0Dh at end of header (dbc=%d)"; break;
case MSG_NO_ACTIVE_DB: p = "No active database"; break;
case MSG_NO_CHAR_FROM: p = "Cannot return char value from type %d"; break;
case MSG_NO_DATE_FMT: p = "No date format for valblock of type %d"; break;
case MSG_NO_DEF_FNCCOL: p = "Cannot find default function column"; break;
case MSG_NO_DEF_PIVOTCOL: p = "Cannot find default pivot column"; break;
case MSG_NO_DIR_INDX_RD: p = "No direct access of %s tables"; break;
case MSG_NO_FEAT_SUPPORT: p = "No %s support in this version"; break;
case MSG_NO_FLD_FORMAT: p = "Missing format for field %d of %s"; break;
case MSG_NO_FORMAT_COL: p = "Cannot format the type COLUMN"; break;
case MSG_NO_FORMAT_TYPE: p = "Cannot set format from type %d"; break;
case MSG_NO_INDEX_READ: p = "No indexed read for multiple tables"; break;
case MSG_NO_KEY_COL: p = "No key columns found"; break;
case MSG_NO_KEY_UPDATE: p = "Cannot update key names"; break;
case MSG_NO_MAP_INSERT: p = "MAP incompatible with Insert"; break;
case MSG_NO_MATCHING_COL: p = "No matching column %s in %s"; break;
case MSG_NO_MATCH_COL: p = "Cannot find matching column"; break;
case MSG_NO_MEMORY: p = "No memory"; break;
case MSG_NO_MODE_PADDED: p = "Mode not supported for padded files"; break;
case MSG_NO_MUL_VCT: p = "VCT tables cannot be multiple"; break;
case MSG_NO_ODBC_DELETE: p = "Delete should not be called for ODBC tables"; break;
case MSG_NO_ODBC_DIRECT: p = "Direct access of ODBC tables not implemented yet"; break;
case MSG_NO_ODBC_MUL: p = "Multiple(2) not supported for ODBC tables"; break;
case MSG_NO_ODBC_SPECOL: p = "No ODBC special columns"; break;
case MSG_NO_PART_DEL: p = "No partial delete of %s files"; break;
case MSG_NO_PART_MAP: p = "Partial mapping not implemented for this OS"; break;
case MSG_NO_PAR_BLK_INS: p = "Cannot insert partial block yet"; break;
case MSG_NO_PIV_DIR_ACC: p = "No direct access to PIVOT tables"; break;
case MSG_NO_READ_32: p = "Can't read 32 bytes"; break;
case MSG_NO_RECOV_SPACE: p = "Cannot recover space in index file"; break;
case MSG_NO_ROWID_FOR_AM: p = "Can't get RowID in direct access for tables of type %s"; break;
case MSG_NO_ROW_NODE: p = "Row node name is not defined"; break;
case MSG_NO_SECTION_NAME: p = "Missing section name"; break;
case MSG_NO_SEC_UPDATE: p = "Cannot update section names"; break;
case MSG_NO_SETPOS_YET: p = "%s SetPos not implemented yet"; break;
case MSG_NO_SPEC_COL: p = "No MySQL special columns"; break;
case MSG_NO_SUB_VAL: p = "No sub value for array of type %d"; break;
case MSG_NO_TABCOL_DATA: p = "No data found for table %s column %s"; break;
case MSG_NO_TABLE_DEL: p = "Delete not enabled for %s tables "; break;
case MSG_NO_TAB_DATA: p = "No data found for table %s"; break;
case MSG_NO_VCT_DELETE: p = "Partial delete not yet implemented for VCT files"; break;
case MSG_NO_ZIP_DELETE: p = "Delete Zip files not implemented yet"; break;
case MSG_OPENING: p = "Opening"; break;
case MSG_OPEN_EMPTY_FILE: p = "Opening empty file %s: %s"; break;
case MSG_OPEN_ERROR: p = "Open error %d in mode %d on %s: "; break;
case MSG_OPEN_ERROR_IS: p = "Open error on %s: %s"; break;
case MSG_OPEN_MODE_ERROR: p = "Open(%s) error %d on %s"; break;
case MSG_OPEN_STRERROR: p = "open error: %s"; break;
case MSG_OPTBLK_RD_ERR: p = "Error reading opt block values: %s"; break;
case MSG_OPTBLK_WR_ERR: p = "Error writing opt block values: %s"; break;
case MSG_OPTIMIZING: p = "Optimizing "; break;
case MSG_OPT_BMAP_RD_ERR: p = "Error reading opt bitmaps: %s"; break;
case MSG_OPT_BMAP_WR_ERR: p = "Error writing opt bitmaps: %s"; break;
case MSG_OPT_CANCELLED: p = "Optimize cancelled by User"; break;
case MSG_OPT_DVAL_RD_ERR: p = "Error reading distinct values: %s"; break;
case MSG_OPT_DVAL_WR_ERR: p = "Error writing distinct values: %s"; break;
case MSG_OPT_HEAD_RD_ERR: p = "Error reading opt file header: %s"; break;
case MSG_OPT_HEAD_WR_ERR: p = "Error writing opt file header: %s"; break;
case MSG_OPT_LOGIC_ERR: p = "Logical error in SetBitmap, i=%d"; break;
case MSG_OPT_MAX_RD_ERR: p = "Error reading opt max values: %s"; break;
case MSG_OPT_MAX_WR_ERR: p = "Error writing opt max values: %s"; break;
case MSG_OPT_MIN_RD_ERR: p = "Error reading opt min values: %s"; break;
case MSG_OPT_MIN_WR_ERR: p = "Error writing opt min values: %s"; break;
case MSG_OPT_NOT_MATCH: p = "Non-matching opt file %s"; break;
case MSG_PAGE_ERROR: p = "In page error"; break;
case MSG_PARM_CNT_MISS: p = "Parameter count mismatch"; break;
case MSG_PREC_VBLP_NULL: p = "ARRAY SetPrecision: Vblp is NULL"; break;
case MSG_PRIV_INSTR: p = "Privileged instruction"; break;
case MSG_PROCADD_ERROR: p = "Error %d getting address of %s"; break;
case MSG_QUERY_CANCELLED: p = "Query Cancelled by User"; break;
case MSG_RANGE_NO_JOIN: p = "Range is not meant for join index"; break;
case MSG_RC_READING: p = "rc=%d reading table %s"; break;
case MSG_READY: p = "Ready"; break;
case MSG_READ_ERROR: p = "Error reading %s: %s"; break;
case MSG_READ_ONLY: p = "Cannot modify this read/only protected table"; break;
case MSG_READ_SEEK_ERROR: p = "Read seek error: %s"; break;
case MSG_REGISTER_ERR: p = "Unable to register NS with prefix='%s' and href='%s'"; break;
case MSG_REMOVE_ERROR: p = "Error removing %s: %s"; break;
case MSG_RENAME_ERROR: p = "Error renaming %s to %s: %s"; break;
case MSG_ROWID_NOT_IMPL: p = "RowNumber not implemented for tables of type %s"; break;
case MSG_SEC_KEY_FIRST: p = "Section and key names must come first on Insert"; break;
case MSG_SEC_NAME_FIRST: p = "Section name must come first on Insert"; break;
case MSG_SEP_IN_FIELD: p = "Field %d contains the separator character"; break;
case MSG_SEQUENCE_ERROR: p = "Sequence error on statement allocation"; break;
case MSG_SETEOF_ERROR: p = "Error %d in SetEndOfFile"; break;
case MSG_SETRECPOS_NIY: p = "SetRecpos not implemented for this table type"; break;
case MSG_SET_STR_TRUNC: p = "SetValue: String would be truncated"; break;
case MSG_SFP_ERROR: p = "SetFilePointer error: %s"; break;
case MSG_SHARED_LIB_ERR: p = "Error loading shared library %s: %s"; break;
case MSG_SINGLE_STEP: p = "Single step"; break;
case MSG_SORTING_VAL: p = "Sorting %d values"; break;
case MSG_SPCOL_READONLY: p = "Special column %s is Read Only"; break;
case MSG_SQL_CONF_ERROR: p = "SQL Error: SQL_CONFORMANCE"; break;
case MSG_SRCH_CLOSE_ERR: p = "Couldn't close search handle"; break;
case MSG_SRC_TABLE_UNDEF: p = "Source table is not defined"; break;
case MSG_STACK_OVERFLOW: p = "Stack overflow"; break;
case MSG_TABDIR_READONLY: p = "DIR tables are read/only"; break;
case MSG_TABLE_NOT_OPT: p = "Not an optimizable table"; break;
case MSG_TABLE_NO_INDEX: p = "Table %s is not indexable"; break;
case MSG_TABLE_READ_ONLY: p = "%s tables are read only "; break;
case MSG_TABMUL_READONLY: p = "Multiple tables are read/only"; break;
case MSG_TOO_MANY_FIELDS: p = "Too many fields line %d of %s"; break;
case MSG_TOO_MANY_JUMPS: p = "Too many jump levels"; break;
case MSG_TOO_MANY_KEYS: p = "Too many keys (%d)"; break;
case MSG_TO_BLK_IS_NULL: p = "To Blk is NULL"; break;
case MSG_TRUNCATE_ERROR: p = "truncate error: %s"; break;
case MSG_TRUNC_BY_ESTIM: p = "truncated by Estimate"; break;
case MSG_TYPE_MISMATCH: p = "Key and source are not of the same type"; break;
case MSG_TYPE_VALUE_ERR: p = "Column %s type(%s)/value(%s) mismatch"; break;
case MSG_UNBALANCE_QUOTE: p = "Unbalanced quote in line %d"; break;
case MSG_UNDEFINED_AM: p = "COLBLK %s: undefined Access Method"; break;
case MSG_UNKNOWN_EXCPT: p = "Unknown exception"; break;
case MSG_UNMATCH_FIL_ARG: p = "Unmatched filter argument"; break;
case MSG_UPDATE_ERROR: p = "Error updating %s"; break;
case MSG_UPD_ZIP_NOT_IMP: p = "Updating ZDOS tables not implemented yet"; break;
case MSG_VALSTR_TOO_LONG: p = "Value %s too long for string of length %d"; break;
case MSG_VALTYPE_NOMATCH: p = "Non matching Value types"; break;
case MSG_VALUE_ERROR: p = "Column %s: value is null"; break;
case MSG_VALUE_TOO_BIG: p = "Value %d too big for column %s"; break;
case MSG_VALUE_TOO_LONG: p = "Value %s too long for column %s of length %d"; break;
case MSG_VAL_ALLOC_ERR: p = "Cannot allocate value node"; break;
case MSG_VIR_NO_DELETE: p = "Delete not allowed for %s tables"; break;
case MSG_VIR_READ_ONLY: p = "Virtual %s tables are read only"; break;
case MSG_VOID_FIRST_ARG: p = "First argument should not be void"; break;
case MSG_WORK_AREA: p = "Work area: %s"; break;
case MSG_WRITE_SEEK_ERR: p = "Write seek error: %s"; break;
case MSG_WRITE_STRERROR: p = "Error writing %s: %s"; break;
case MSG_WRITING: p = "Writing"; break;
case MSG_WRITING_ERROR: p = "Error writing to %s: %s"; break;
case MSG_WS_CONV_ERR: p = "Error converting %s to WS"; break;
case MSG_XCOL_MISMATCH: p = "Column %s mismatch in index"; break;
case MSG_XFILE_READERR: p = "Error %d reading index file"; break;
case MSG_XFILE_WRITERR: p = "Error writing index file: %s"; break;
case MSG_XMLTAB_INIT_ERR: p = "Error initializing XML table"; break;
case MSG_XML_INIT_ERROR: p = "Error initializing new XML file"; break;
case MSG_XPATH_CNTX_ERR: p = "Unable to create new XPath context"; break;
case MSG_XPATH_EVAL_ERR: p = "Unable to evaluate xpath location '%s'"; break;
case MSG_XPATH_NOT_SUPP: p = "Unsupported Xpath for column %s"; break;

366
storage/connect/english.msg Normal file
View File

@@ -0,0 +1,366 @@
100 IDS_TABLES "Table Headers"
101 IDS_TAB_01 "Table_Cat"
102 IDS_TAB_02 "Table_Schema"
103 IDS_TAB_03 "Table_Name"
104 IDS_TAB_04 "Table_Type"
105 IDS_TAB_05 "Remark"
106 IDS_COLUMNS "Column Headers"
107 IDS_COL_01 "Table_Cat"
108 IDS_COL_02 "Table_Schema"
109 IDS_COL_03 "Table_Name"
110 IDS_COL_04 "Column_Name"
111 IDS_COL_05 "Data_Type"
112 IDS_COL_06 "Type_Name"
113 IDS_COL_07 "Column_Size"
114 IDS_COL_08 "Buffer_Length"
115 IDS_COL_09 "Decimal_Digits"
116 IDS_COL_10 "Radix"
117 IDS_COL_11 "Nullable"
118 IDS_COL_12 "Remarks"
119 IDS_PKEY "Key Headers"
120 IDS_PKY_01 "Table_Catalog"
121 IDS_PKY_02 "Table_Schema"
122 IDS_PKY_03 "Table_Name"
123 IDS_PKY_04 "Column_Name"
124 IDS_PKY_05 "Key_Seq"
125 IDS_PKY_06 "Pk_Name"
126 IDS_STAT "Stat Headers"
127 IDS_STA_01 "Table_Catalog"
128 IDS_STA_02 "Table_Schema"
129 IDS_STA_03 "Table_Name"
130 IDS_STA_04 "Non_Unique"
131 IDS_STA_05 "Index_Qualifier"
132 IDS_STA_06 "Index_Name"
133 IDS_STA_07 "Type"
134 IDS_STA_08 "Seq_in_Index"
135 IDS_STA_09 "Column_Name"
136 IDS_STA_10 "Collation"
137 IDS_STA_11 "Cardinality"
138 IDS_STA_12 "Pages"
139 IDS_STA_13 "Filter_Condition"
140 IDS_DRIVER "Driver Headers"
141 IDS_DRV_01 "Description"
142 IDS_DRV_02 "Attributes"
143 IDS_DSRC "DataSrc Headers"
144 IDS_DSC_01 "Name"
145 IDS_DSC_02 "Description"
200 ACCESS_VIOLATN "Access violation"
201 ADD_BAD_TYPE "Array add value type mismatch (%s -> %s)"
202 ALLOC_ERROR "Error allocating %s"
203 ANSWER_TYPE "Answer of type"
204 API_CONF_ERROR "SQL Error: API_CONFORMANCE"
205 APPL_NOT_INIT "Application not initialized"
206 ARRAY_BNDS_EXCD "Array bounds exceeded"
207 BAD_ARRAY_OPER "Arrays must be used with the IN operator"
208 BAD_ARRAY_TYPE "Illegal array type %d"
209 BAD_ARRAY_VAL "Arrays must have the same number of values"
210 BAD_BIN_FMT "Invalid format %c for the %s BIN column"
211 BAD_BLK_ESTIM "Number of blocks exceeds estimate"
212 BAD_BLK_SIZE "No match in block %d size"
213 BAD_BYTE_NUM "bad number of bytes written"
214 BAD_BYTE_READ "bad number of bytes read"
215 BAD_COL_TYPE "Invalid type %s for column %s"
216 BAD_COL_XPATH "Invalid Xpath in column %s for HTML table %s"
217 BAD_CONST_TYPE "Bad constant type=%d"
218 BAD_CONV_TYPE "Invalid convert type %d"
219 BAD_DATETIME "Invalid datetime value"
220 BAD_DBF_FILE "DBF file %s is corrupted"
221 BAD_DBF_REC "DBF file %s corrupted at record %d"
222 BAD_DBF_TYPE "Unsupported DBF type %c for column %s"
223 BAD_DIRECTORY "Bad directory %s: %s"
224 BAD_FIELD_RANK "Invalid field rank %d for column %s"
225 BAD_FIELD_TYPE "Bad type field %s"
226 BAD_FILE_HANDLE "Invalid File Handle: %s"
227 BAD_FILTER "Bad filter: Opc=%d B_T=%d %d Type=%d %d"
228 BAD_FILTER_CONV "Bad filter conversion, B_T=%d,%d"
229 BAD_FILTER_OP "Invalid filter operator %d"
230 BAD_FLD_FORMAT "Bad format for field %d of %s"
231 BAD_FLD_LENGTH "Field %s too long (%s --> %d) line %d of %s"
232 BAD_FREQ_SET "Bad frequency setting for column %s"
233 BAD_FUNC_MODE "%s: invalid mode %d"
234 BAD_HANDLE_VAL "Invalid handle value"
235 BAD_HEADER "File %s: Header corrupted"
236 BAD_HEAD_END "Can't read end of header"
237 BAD_INDEX_FILE "Wrong index file %s"
238 BAD_LINEFLD_FMT "Bad format line %d field %d of %s"
239 BAD_LINE_LEN "Line length not equal to Lrecl"
240 BAD_LRECL "Table/File lrecl mismatch (%d,%hd)"
241 BAD_NODE_TYPE "Bad type %d for table node"
242 BAD_OFFSET_VAL "Invalid null offset value for a CSV table"
243 BAD_OPEN_MODE "Invalid open mode %d"
244 BAD_PARAM_TYPE "%.8s: Bad parameter type=%d"
245 BAD_PARM_COUNT "Parameter count mismatch"
246 BAD_QUOTE_FIELD "Missing ending quote in %s field %d line %d"
247 BAD_READ_NUMBER "Wrong number %d of values read from %s"
248 BAD_RECFM "Invalid recfm type %d for DOSCOL"
249 BAD_RECFM_VAL "Bad Recfm value %d"
250 BAD_SET_CASE "Cannot set sensitive an insensitive array"
251 BAD_SET_STRING "Invalid SetValue from string"
252 BAD_SPECIAL_COL "Bad special column %s"
253 BAD_SPEC_COLUMN "Special column invalid for this table type"
254 BAD_TABLE_TYPE "Bad type %s for table %s"
255 BAD_TYPE_LIKE "Bad operand(%d) type=%d for LIKE"
256 BAD_VALBLK_INDX "Out of range valblock index value"
257 BAD_VALBLK_TYPE "Invalid value block type %d"
258 BAD_VALNODE "Bad type %d for column %s value node"
259 BAD_VALUE_TYPE "Invalid value type %d"
260 BAD_VAL_UPDATE "Don't know which %s value to update"
261 BAS_NS_LIST "Invalid namespaces list format"
262 BIN_F_TOO_LONG "Value too long for field %s (%d --> %d)"
263 BIN_MODE_FAIL "Set binary mode failed: %s"
264 BLKTYPLEN_MISM "Non matching block types/lengths in SetValue"
265 BLK_IS_NULL "Blk is NULL"
266 BREAKPOINT "Breakpoint"
267 BUILD_INDEX "Building index %s on %s"
268 CANNOT_OPEN "Cannot open %s"
269 CHSIZE_ERROR "chsize error: %s"
270 COL_ALLOC_ERR "Cannot allocate column node"
271 COL_ISNOT_TABLE "Column %s is not in table %s"
272 COL_NOT_SORTED "Column %s of table %s is not sorted"
273 COL_NUM_MISM "Number of columns mismatch"
274 COM_ERROR "Com error"
275 CONCAT_SUBNODE "Cannot concatenate sub-nodes"
276 CONNECT_CANCEL "Connection cancelled by user"
277 CONTROL_C_EXIT "Control C exit"
278 DATABASE_LOADED "Database %s loaded"
279 DATA_MISALIGN "Datatype misalignment"
280 DBASE_FILE "dBASE dbf file: "
281 DEF_ALLOC_ERROR "Error allocating %s DEF class"
282 DEL_FILE_ERR "Error deleting %s"
283 DEL_READ_ERROR "Delete: read error req=%d len=%d"
284 DEL_WRITE_ERROR "Delete: write error: %s"
285 DEPREC_FLAG "Deprecated option Flag, use Coltype"
286 DLL_LOAD_ERROR "Error %d loading module %s"
287 DOM_NOT_SUPP "MS-DOM not supported by this version"
288 DVAL_NOTIN_LIST "Value %s not found in distinct values list of column %s"
289 EMPTY_DOC "Empty document"
290 EMPTY_FILE "%s empty file %s: "
291 EOF_AFTER_LINE "EOF after line %d"
292 EOF_INDEX_FILE "EOF while reading index file"
293 ERROR_IN_LSK "Error %d in lseek64"
294 ERROR_IN_SFP "Error %d in SetFilePointer"
295 ERR_READING_REC "Error reading record %d of %s"
296 FAIL_ADD_NODE "Failed to add %s table node"
297 FETCH_NO_RES "Fetch: No Result Set"
298 FIELD_TOO_LONG "Value too long for field %d line %d"
299 FILELEN_ERROR "Error in %s for %s"
300 FILE_IS_EMPTY "File %s is empty"
301 FILE_MAP_ERR "File mapping error"
302 FILE_MAP_ERROR "CreateFileMapping %s error rc=%d"
303 FILE_OPEN_YET "File %s already open"
304 FILE_UNFOUND "File %s not found"
305 FLD_TOO_LNG_FOR "Field %d too long for %s line %d of %s"
306 FLT_BAD_RESULT "Float inexact result"
307 FLT_DENORMAL_OP "Float denormal operand"
308 FLT_INVALID_OP "Float invalid operation"
309 FLT_OVERFLOW "Float overflow"
310 FLT_STACK_CHECK "Float stack check"
311 FLT_UNDERFLOW "Float underflow"
312 FLT_ZERO_DIVIDE "Float divide by zero"
313 FMT_WRITE_NIY "Writing %s files is not implemented yet"
314 FOXPRO_FILE "FoxPro file: "
315 FPUTS_ERROR "fputs error: %s"
316 FSEEK_ERROR "fseek error: %s"
317 FSETPOS_ERROR "fseek error for i=%d"
318 FTELL_ERROR "ftell error for recd=%d: %s"
319 FUNCTION_ERROR "%s error: %d"
320 FUNC_ERRNO "Error %d in %s"
321 FUNC_ERROR "Error in %s"
322 FUNC_ERR_S "%s error: %s"
323 FWRITE_ERROR "fwrite error: %s"
324 GET_DIST_VALS "Retrieving distinct values from "
325 GET_FUNC_ERR "Error getting function %s: %s"
326 GLOBAL_ERROR "Cannot allocate Global (size=%d)\n"
327 GUARD_PAGE "Guard page violation"
328 GZOPEN_ERROR "gzopen %s error %d on %s"
329 ILLEGAL_INSTR "Illegal instruction"
330 ILL_FILTER_CONV "Filtering implies an illegal conversion"
331 INDEX_NOT_UNIQ "Index is not unique"
332 INDEX_YET_ON "Index %s already exists on %s"
333 INDX_COL_NOTIN "Index column %s is not in table %s"
334 INDX_EXIST_YET "Index entry already exists"
335 INIT_FAILED "Failed to initialize %s processing"
336 INT_COL_ERROR "Internal error for index column %s"
337 INT_OVERFLOW "Integer overflow"
338 INT_ZERO_DIVIDE "Integer divide by zero"
339 INVALID_DISP "Invalid disposition"
340 INVALID_FTYPE "SBV: invalid Ftype %d"
341 INVALID_HANDLE "Invalid handle"
342 INVALID_OPER "Invalid operator %d for %s"
343 INV_COLUMN_TYPE "Invalid type %d for column %s"
344 INV_COL_TYPE "Invalid column type %s"
345 INV_DEF_READ "Invalid deferred Read rc=%d"
346 INV_DIRCOL_OFST "Invalid DIRCOL offset %d"
347 INV_MAP_POS "Invalid map position"
348 INV_RAND_ACC "Invalid random access to non optimized table"
349 INV_REC_POS "Invalid record position"
350 INV_RESULT_TYPE "Invalid result type %s"
351 INV_UPDT_TABLE "Table %s invalid for update"
352 IN_WITHOUT_SUB "IN or EXISTS without array or subquery"
353 KEY_ALLOC_ERR "Error allocating Key offset block"
354 KEY_ALLOC_ERROR "Memory allocation error, Klen=%d n=%d"
355 LINE_TOO_LONG "New line is too long"
356 LIST "--List--"
357 LOADING_FAILED "Loading of %s failed"
358 LRECL_TOO_SMALL "Lrecl too small (headlen = %d)"
359 MAKE_EMPTY_FILE "Making empty file %s: %s"
360 MAKING "Making"
361 MALLOC_ERROR "Memory allocation failed: %s returned Null"
362 MAP_VIEW_ERROR "MapViewOfFile %s error rc=%d"
363 MAXSIZE_ERROR "Cannot calculate max size on open table"
364 MEM_ALLOC_ERR "Memory allocation error, %s size=%d"
365 MEM_ALLOC_ERROR "Memory allocation error"
366 MISPLACED_QUOTE "Misplaced quote in line %d"
367 MISSING_ARG "Missing argument for operator %d"
368 MISSING_FIELD "Missing field %d in %s line %d"
369 MISSING_FNAME "Missing file name"
370 MISSING_NODE "Missing %s node in %s"
371 MISSING_ROWNODE "Can't find RowNode for row %d"
372 MIS_TAG_LIST "Missing column tag list"
373 MUL_MAKECOL_ERR "Tabmul MakeCol logical error"
374 NAME_CONV_ERR "Error converting node name"
375 NEW_DOC_FAILED "Cannot create new document"
376 NEW_RETURN_NULL "New returned Null in PlugEvalLike"
377 NEXT_FILE_ERROR "Couldn't find next file. rc=%d"
378 NONCONT_EXCEPT "Noncontinuable exception"
379 NOP_ZLIB_INDEX "Cannot do indexing on non optimized zlib table"
380 NOT_A_DBF_FILE "Not a dBASE dbf file "
381 NOT_FIXED_LEN "File %s is not fixed length, len=%d lrecl=%d"
382 NO_0DH_HEAD "No 0Dh at end of header (dbc=%d)"
383 NO_ACTIVE_DB "No active database"
384 NO_CHAR_FROM "Cannot return char value from type %d"
385 NO_DATE_FMT "No date format for valblock of type %d"
386 NO_DEF_FNCCOL "Cannot find default function column"
387 NO_DEF_PIVOTCOL "Cannot find default pivot column"
388 NO_DIR_INDX_RD "No direct access of %s tables"
389 NO_FEAT_SUPPORT "No %s support in this version"
390 NO_FLD_FORMAT "Missing format for field %d of %s"
391 NO_FORMAT_COL "Cannot format the type COLUMN"
392 NO_FORMAT_TYPE "Cannot set format from type %d"
393 NO_INDEX_READ "No indexed read for multiple tables"
394 NO_KEY_COL "No key columns found"
395 NO_KEY_UPDATE "Cannot update key names"
396 NO_MAP_INSERT "MAP incompatible with Insert"
397 NO_MATCHING_COL "No matching column %s in %s"
398 NO_MATCH_COL "Cannot find matching column"
399 NO_MEMORY "No memory"
400 NO_MODE_PADDED "Mode not supported for padded files"
401 NO_MUL_VCT "VCT tables cannot be multiple"
402 NO_ODBC_DELETE "Delete should not be called for ODBC tables"
403 NO_ODBC_DIRECT "Direct access of ODBC tables not implemented yet"
404 NO_ODBC_MUL "Multiple(2) not supported for ODBC tables"
405 NO_ODBC_SPECOL "No ODBC special columns"
406 NO_PART_DEL "No partial delete of %s files"
407 NO_PART_MAP "Partial mapping not implemented for this OS"
408 NO_PAR_BLK_INS "Cannot insert partial block yet"
409 NO_PIV_DIR_ACC "No direct access to PIVOT tables"
410 NO_READ_32 "Can't read 32 bytes"
411 NO_RECOV_SPACE "Cannot recover space in index file"
412 NO_ROWID_FOR_AM "Can't get RowID in direct access for tables of type %s"
413 NO_ROW_NODE "Row node name is not defined"
414 NO_SECTION_NAME "Missing section name"
415 NO_SEC_UPDATE "Cannot update section names"
416 NO_SETPOS_YET "%s SetPos not implemented yet"
417 NO_SPEC_COL "No MySQL special columns"
418 NO_SUB_VAL "No sub value for array of type %d"
419 NO_TABCOL_DATA "No data found for table %s column %s"
420 NO_TABLE_DEL "Delete not enabled for %s tables "
421 NO_TAB_DATA "No data found for table %s"
422 NO_VCT_DELETE "Partial delete not yet implemented for VCT files"
423 NO_ZIP_DELETE "Delete Zip files not implemented yet"
424 OPENING "Opening"
425 OPEN_EMPTY_FILE "Opening empty file %s: %s"
426 OPEN_ERROR "Open error %d in mode %d on %s: "
427 OPEN_ERROR_IS "Open error on %s: %s"
428 OPEN_MODE_ERROR "Open(%s) error %d on %s"
429 OPEN_STRERROR "open error: %s"
430 OPTBLK_RD_ERR "Error reading opt block values: %s"
431 OPTBLK_WR_ERR "Error writing opt block values: %s"
432 OPTIMIZING "Optimizing "
433 OPT_BMAP_RD_ERR "Error reading opt bitmaps: %s"
434 OPT_BMAP_WR_ERR "Error writing opt bitmaps: %s"
435 OPT_CANCELLED "Optimize cancelled by User"
436 OPT_DVAL_RD_ERR "Error reading distinct values: %s"
437 OPT_DVAL_WR_ERR "Error writing distinct values: %s"
438 OPT_HEAD_RD_ERR "Error reading opt file header: %s"
439 OPT_HEAD_WR_ERR "Error writing opt file header: %s"
440 OPT_LOGIC_ERR "Logical error in SetBitmap, i=%d"
441 OPT_MAX_RD_ERR "Error reading opt max values: %s"
442 OPT_MAX_WR_ERR "Error writing opt max values: %s"
443 OPT_MIN_RD_ERR "Error reading opt min values: %s"
444 OPT_MIN_WR_ERR "Error writing opt min values: %s"
445 OPT_NOT_MATCH "Non-matching opt file %s"
446 PAGE_ERROR "In page error"
447 PARM_CNT_MISS "Parameter count mismatch"
448 PREC_VBLP_NULL "ARRAY SetPrecision: Vblp is NULL"
449 PRIV_INSTR "Privileged instruction"
450 PROCADD_ERROR "Error %d getting address of %s"
451 QUERY_CANCELLED "Query Cancelled by User"
452 RANGE_NO_JOIN "Range is not meant for join index"
453 RC_READING "rc=%d reading table %s"
454 READY "Ready"
455 READ_ERROR "Error reading %s: %s"
456 READ_ONLY "Cannot modify this read/only protected table"
457 READ_SEEK_ERROR "Read seek error: %s"
458 REGISTER_ERR "Unable to register NS with prefix='%s' and href='%s'"
459 REMOVE_ERROR "Error removing %s: %s"
460 RENAME_ERROR "Error renaming %s to %s: %s"
461 ROWID_NOT_IMPL "RowNumber not implemented for tables of type %s"
462 SEC_KEY_FIRST "Section and key names must come first on Insert"
463 SEC_NAME_FIRST "Section name must come first on Insert"
464 SEP_IN_FIELD "Field %d contains the separator character"
465 SEQUENCE_ERROR "Sequence error on statement allocation"
466 SETEOF_ERROR "Error %d in SetEndOfFile"
467 SETRECPOS_NIY "SetRecpos not implemented for this table type"
468 SET_STR_TRUNC "SetValue: String would be truncated"
469 SFP_ERROR "SetFilePointer error: %s"
470 SHARED_LIB_ERR "Error loading shared library %s: %s"
471 SINGLE_STEP "Single step"
472 SORTING_VAL "Sorting %d values"
473 SPCOL_READONLY "Special column %s is Read Only"
474 SQL_CONF_ERROR "SQL Error: SQL_CONFORMANCE"
475 SRCH_CLOSE_ERR "Couldn't close search handle"
476 SRC_TABLE_UNDEF "Source table is not defined"
477 STACK_OVERFLOW "Stack overflow"
478 TABDIR_READONLY "DIR tables are read/only"
479 TABLE_NOT_OPT "Not an optimizable table"
480 TABLE_NO_INDEX "Table %s is not indexable"
481 TABLE_READ_ONLY "%s tables are read only "
482 TABMUL_READONLY "Multiple tables are read/only"
483 TOO_MANY_FIELDS "Too many fields line %d of %s"
484 TOO_MANY_JUMPS "Too many jump levels"
485 TOO_MANY_KEYS "Too many keys (%d)"
486 TO_BLK_IS_NULL "To Blk is NULL"
487 TRUNCATE_ERROR "truncate error: %s"
488 TRUNC_BY_ESTIM "truncated by Estimate"
489 TYPE_MISMATCH "Key and source are not of the same type"
490 TYPE_VALUE_ERR "Column %s type(%s)/value(%s) mismatch"
491 UNBALANCE_QUOTE "Unbalanced quote in line %d"
492 UNDEFINED_AM "COLBLK %s: undefined Access Method"
493 UNKNOWN_EXCPT "Unknown exception"
494 UNMATCH_FIL_ARG "Unmatched filter argument"
495 UPDATE_ERROR "Error updating %s"
496 UPD_ZIP_NOT_IMP "Updating ZDOS tables not implemented yet"
497 VALSTR_TOO_LONG "Value %s too long for string of length %d"
498 VALTYPE_NOMATCH "Non matching Value types"
499 VALUE_ERROR "Column %s: value is null"
500 VALUE_TOO_BIG "Value %d too big for column %s"
501 VALUE_TOO_LONG "Value %s too long for column %s of length %d"
502 VAL_ALLOC_ERR "Cannot allocate value node"
503 VIR_NO_DELETE "Delete not allowed for %s tables"
504 VIR_READ_ONLY "Virtual %s tables are read only"
505 VOID_FIRST_ARG "First argument should not be void"
506 WORK_AREA "Work area: %s"
507 WRITE_SEEK_ERR "Write seek error: %s"
508 WRITE_STRERROR "Error writing %s: %s"
509 WRITING "Writing"
510 WRITING_ERROR "Error writing to %s: %s"
511 WS_CONV_ERR "Error converting %s to WS"
512 XCOL_MISMATCH "Column %s mismatch in index"
513 XFILE_READERR "Error %d reading index file"
514 XFILE_WRITERR "Error writing index file: %s"
515 XMLTAB_INIT_ERR "Error initializing XML table"
516 XML_INIT_ERROR "Error initializing new XML file"
517 XPATH_CNTX_ERR "Unable to create new XPath context"
518 XPATH_EVAL_ERR "Unable to evaluate xpath location '%s'"
519 XPATH_NOT_SUPP "Unsupported Xpath for column %s"

File diff suppressed because it is too large Load Diff

46
storage/connect/enids.h Normal file
View File

@@ -0,0 +1,46 @@
case IDS_TABLES: p = "Table Headers"; break;
case IDS_TAB_01: p = "Table_Cat"; break;
case IDS_TAB_02: p = "Table_Schema"; break;
case IDS_TAB_03: p = "Table_Name"; break;
case IDS_TAB_04: p = "Table_Type"; break;
case IDS_TAB_05: p = "Remark"; break;
case IDS_COLUMNS: p = "Column Headers"; break;
case IDS_COL_01: p = "Table_Cat"; break;
case IDS_COL_02: p = "Table_Schema"; break;
case IDS_COL_03: p = "Table_Name"; break;
case IDS_COL_04: p = "Column_Name"; break;
case IDS_COL_05: p = "Data_Type"; break;
case IDS_COL_06: p = "Type_Name"; break;
case IDS_COL_07: p = "Column_Size"; break;
case IDS_COL_08: p = "Buffer_Length"; break;
case IDS_COL_09: p = "Decimal_Digits"; break;
case IDS_COL_10: p = "Radix"; break;
case IDS_COL_11: p = "Nullable"; break;
case IDS_COL_12: p = "Remarks"; break;
case IDS_PKEY: p = "Key Headers"; break;
case IDS_PKY_01: p = "Table_Catalog"; break;
case IDS_PKY_02: p = "Table_Schema"; break;
case IDS_PKY_03: p = "Table_Name"; break;
case IDS_PKY_04: p = "Column_Name"; break;
case IDS_PKY_05: p = "Key_Seq"; break;
case IDS_PKY_06: p = "Pk_Name"; break;
case IDS_STAT: p = "Stat Headers"; 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 Headers"; break;
case IDS_DRV_01: p = "Description"; break;
case IDS_DRV_02: p = "Attributes"; break;
case IDS_DSRC: p = "DataSrc Headers"; break;
case IDS_DSC_01: p = "Name"; break;
case IDS_DSC_02: p = "Description"; break;

View File

@@ -284,7 +284,8 @@ PQRYRES DBFColumns(PGLOBAL g, char *dp, const char *fn, bool info)
break; break;
default: default:
if (!info) { if (!info) {
sprintf(g->Message, MSG(BAD_DBF_TYPE), thisfield.Type); sprintf(g->Message, MSG(BAD_DBF_TYPE), thisfield.Type
, thisfield.Name);
goto err; goto err;
} // endif info } // endif info
@@ -585,7 +586,7 @@ bool DBFFAM::AllocateBuffer(PGLOBAL g)
case 'D': // Date case 'D': // Date
break; break;
default: // Should never happen default: // Should never happen
sprintf(g->Message, "Unsupported DBF type %c for column %s", sprintf(g->Message, MSG(BAD_DBF_TYPE),
c, cdp->GetName()); c, cdp->GetName());
return true; return true;
} // endswitch c } // endswitch c

320
storage/connect/frcas.h Normal file
View File

@@ -0,0 +1,320 @@
case MSG_ACCESS_VIOLATN: p = "Violation acc<63>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<EFBFBD>ponse de type"; break;
case MSG_API_CONF_ERROR: p = "Erreur SQL: API_CONFORMANCE"; break;
case MSG_APPL_NOT_INIT: p = "Application non initialis<69>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<6F>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<75>rieur <20> 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 <20>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<6C>r<EFBFBD>"; break;
case MSG_BAD_DBF_REC: p = "Fichier DBF %s alt<6C>r<EFBFBD> enregistrement %d"; break;
case MSG_BAD_DBF_TYPE: p = "Type DBF %c non support<72> colonne %s"; break;
case MSG_BAD_DIRECTORY: p = "R<EFBFBD>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<EFBFBD>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<EFBFBD>cification erronn<6E>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<6C>r<EFBFBD>"; 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 <20>gale <20> Lrecl"; break;
case MSG_BAD_LRECL: p = "Disparit<EFBFBD> lrecl table/fichier (%d,%hd)"; break;
case MSG_BAD_NODE_TYPE: p = "Type noeud erron<6F> 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<61>tre de type=%d invalide"; break;
case MSG_BAD_PARM_COUNT: p = "Nombre de param<61>tres incoh<6F>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 <20> respecter"; break;
case MSG_BAD_SET_STRING: p = "SetValue: appel invalide pour STRING"; break;
case MSG_BAD_SPECIAL_COL: p = "Colonne sp<73>ciale invalide %s"; break;
case MSG_BAD_SPEC_COLUMN: p = "Colonne sp<73>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 <20>tre mise <20> 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<EFBFBD> types/longueurs de bloc dans SetValue"; break;
case MSG_BLK_IS_NULL: p = "Blk est nul"; break;
case MSG_BREAKPOINT: p = "Point de contr<74>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<72>e"; break;
case MSG_COL_NUM_MISM: p = "Disparit<EFBFBD> du nombre de colonnes"; break;
case MSG_COM_ERROR: p = "Erreur Com"; break;
case MSG_CONCAT_SUBNODE: p = "Concat<EFBFBD>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<6E>es %s charg<72>e"; break;
case MSG_DATA_MISALIGN: p = "Mauvais alignement pour ce type de donn<6E>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 <20> 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 <20>criture: %s"; break;
case MSG_DEPREC_FLAG: p = "Option Flag p<>rim<69>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<72> par cette version"; break;
case MSG_DVAL_NOTIN_LIST: p = "Valeur %s non trouv<75>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<70>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 <20>chou<6F>"; 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<EFBFBD> ouvert"; break;
case MSG_FILE_UNFOUND: p = "Fichier %s non trouv<75>"; 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<EFBFBD>rande virgule flottante non normalis<69>"; break;
case MSG_FLT_INVALID_OP: p = "Op<EFBFBD>ration virgule flottante invalide"; break;
case MSG_FLT_OVERFLOW: p = "D<EFBFBD>passement de capacit<69> 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<69> virgule flottante"; break;
case MSG_FLT_ZERO_DIVIDE: p = "Virgule flottante: division par z<>ro"; break;
case MSG_FMT_WRITE_NIY: p = "L'<27>criture des fichiers %s n'est pas encore impl<70>ment<6E>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<EFBFBD>cup<EFBFBD>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<6C>gale"; break;
case MSG_ILL_FILTER_CONV: p = "Conversion implicite ill<6C>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<EFBFBD> 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<74>e index existe d<>j<EFBFBD>"; break;
case MSG_INIT_FAILED: p = "L'initialisation de %s a <20>chou<6F>"; break;
case MSG_INT_COL_ERROR: p = "Erreur interne sur la colonne index %s"; break;
case MSG_INT_OVERFLOW: p = "D<EFBFBD>passement de capacit<69> sur entier"; break;
case MSG_INT_ZERO_DIVIDE: p = "Division enti<74>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<EFBFBD>e invalide"; break;
case MSG_INVALID_OPER: p = "Op<EFBFBD>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<66>r<EFBFBD>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<63>s al<61>atoire d'une table non optimis<69>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<63>"; 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 <20>chou<6F>"; break;
case MSG_LRECL_TOO_SMALL: p = "Lrecl trop petit (longueur en-t<>te = %d)"; break;
case MSG_MAKE_EMPTY_FILE: p = "G<EFBFBD>n<EFBFBD>ration du fichier vide %s: %s"; break;
case MSG_MAKING: p = "G<EFBFBD>n<EFBFBD>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<61>e ligne %d"; break;
case MSG_MISSING_ARG: p = "Argument manquant pour l'op<6F>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<63>er le nouveau document"; break;
case MSG_NEW_RETURN_NULL: p = "NULL renvoy<6F> 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<69>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<6E>es active"; break;
case MSG_NO_CHAR_FROM: p = "Conversion de type %d en caract<63>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<63>s directe des tables %s"; break;
case MSG_NO_FEAT_SUPPORT: p = "%s non support<72> 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 <20>tre d<>fini <20> partir du type %d"; break;
case MSG_NO_INDEX_READ: p = "Pas d'acc<63>s directe des tables multiples"; break;
case MSG_NO_KEY_COL: p = "Pas de colonne cl<63> trouv<75>e"; break;
case MSG_NO_KEY_UPDATE: p = "Le nom des cl<63>s ne peut pas <20>tre modifi<66>"; break;
case MSG_NO_MAP_INSERT: p = "MAP incompatible avec Insert"; break;
case MSG_NO_MATCHING_COL: p = "Pas de colonne correspondant <20> %s dans %s"; break;
case MSG_NO_MATCH_COL: p = "Colonne correspondante introuvable"; break;
case MSG_NO_MEMORY: p = "M<EFBFBD>moire pleine"; break;
case MSG_NO_MODE_PADDED: p = "Mode non support<72> pour les fichiers 'padded'"; break;
case MSG_NO_MUL_VCT: p = "Les tables VCT ne peuvent pas <20>tre multiples"; break;
case MSG_NO_ODBC_DELETE: p = "Delete ne devrait pas <20>tre appel<65> pour les tables ODBC"; break;
case MSG_NO_ODBC_DIRECT: p = "Acc<EFBFBD>s directe des tables ODBC non encore impl<70>ment<6E>"; break;
case MSG_NO_ODBC_MUL: p = "Multiple(2) non support<72> pour les tables ODBC"; break;
case MSG_NO_ODBC_SPECOL: p = "Pas de colonne sp<73>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<70>ment<6E> 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<63>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<EFBFBD>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 <20>tre modifi<66>s"; break;
case MSG_NO_SETPOS_YET: p = "SetPos pas encore impl<70>ment<6E> pour les fichier %s"; break;
case MSG_NO_SPEC_COL: p = "Pas de colonne sp<73>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<6E>es pour la table %s colonne %s"; break;
case MSG_NO_TABLE_DEL: p = "Delete non autoris<69> pour les tables %s "; break;
case MSG_NO_TAB_DATA: p = "Pas de donn<6E>es pour la table %s"; break;
case MSG_NO_VCT_DELETE: p = "D<EFBFBD>l<EFBFBD>tion Partielle non impl<70>ment<6E>e pour les fichiers VCT"; break;
case MSG_NO_ZIP_DELETE: p = "Delete sur fichier Zip non encore implement<6E>"; 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 <20> 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 <20> l'ouverture: %s"; break;
case MSG_OPTBLK_RD_ERR: p = "Erreur <20> la lecture d'un bloc optimisation: %s"; break;
case MSG_OPTBLK_WR_ERR: p = "Erreur <20> l'<27>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 <20>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 <20>criture des valeurs distinctes: %s"; break;
case MSG_OPT_HEAD_RD_ERR: p = "Erreur en lecture de l'ent<6E>te du fichier opt: %s"; break;
case MSG_OPT_HEAD_WR_ERR: p = "Erreur en <20>criture de l'ent<6E>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 <20>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 <20>criture des valeurs mini: %s"; break;
case MSG_OPT_NOT_MATCH: p = "Le fichier opt %s n'est pas <20> jour"; break;
case MSG_PAGE_ERROR: p = "Erreur de pagination"; break;
case MSG_PARM_CNT_MISS: p = "Disparit<EFBFBD> du nombre de Param<61>tres"; break;
case MSG_PREC_VBLP_NULL: p = "ARRAY SetPrecision: Vblp est NULL"; break;
case MSG_PRIV_INSTR: p = "Instruction privil<69>gi<67>e"; break;
case MSG_PROCADD_ERROR: p = "Erreur %d sur l'adresse de %s"; break;
case MSG_QUERY_CANCELLED: p = "Requ<EFBFBD>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<EFBFBD>t"; break;
case MSG_READ_ERROR: p = "Erreur en lecture sur %s: %s"; break;
case MSG_READ_ONLY: p = "Cette table prot<6F>g<EFBFBD>e en lecture seule ne peut <20>tre modifi<66>e"; break;
case MSG_READ_SEEK_ERROR: p = "Erreur de recherche en lecture: %s"; break;
case MSG_REGISTER_ERR: p = "Enregistrement NS impossible, pr<70>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<70>ment<6E> pour les tables de type %s"; break;
case MSG_SEC_KEY_FIRST: p = "Les sections et cl<63>s doivent <20>tre ins<6E>r<EFBFBD>es en premier"; break;
case MSG_SEC_NAME_FIRST: p = "Le nom de section doit <20>tre en t<>te de liste en insertion"; break;
case MSG_SEP_IN_FIELD: p = "Le champ %d contient le caract<63>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<70>ment<6E> pour ce type de table"; break;
case MSG_SET_STR_TRUNC: p = "SetValue: Cha<68>ne de caract<63>res tronqu<71>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<61>e %s: %s"; break;
case MSG_SINGLE_STEP: p = "Pas <20> pas"; break;
case MSG_SORTING_VAL: p = "Tri de %d valeurs"; break;
case MSG_SPCOL_READONLY: p = "La colonne sp<73>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 <20> 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<EFBFBD>passement de capacit<69> 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<63>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<EFBFBD> par l'option Estimate"; break;
case MSG_TYPE_MISMATCH: p = "Cl<EFBFBD> et source ne sont pas du m<>me type"; break;
case MSG_TYPE_VALUE_ERR: p = "Colonne %s: disparit<69> 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<63>s ind<6E>finie"; break;
case MSG_UNKNOWN_EXCPT: p = "Exception non r<>pertori<72>e"; break;
case MSG_UNMATCH_FIL_ARG: p = "Argument de filtre d<>pareill<6C>"; break;
case MSG_UPDATE_ERROR: p = "Erreur en Update sur %s"; break;
case MSG_UPD_ZIP_NOT_IMP: p = "Mise <20> jour des tables ZDOS non encore implement<6E>"; break;
case MSG_VALSTR_TOO_LONG: p = "Valeur %s trop longue pour une cha<68>ne de longueur %d"; break;
case MSG_VALTYPE_NOMATCH: p = "Disparit<EFBFBD> types de valeur"; break;
case MSG_VALUE_ERROR: p = "Colonne %s: bloc valeur nul"; break;
case MSG_VALUE_TOO_BIG: p = "Valeur %d 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 <20>tre vide"; break;
case MSG_WORK_AREA: p = "Espace de travail: %s"; break;
case MSG_WRITE_SEEK_ERR: p = "Erreur de recherche en <20>criture: %s"; break;
case MSG_WRITE_STRERROR: p = "Erreur en <20>criture sur %s: %s"; break;
case MSG_WRITING: p = "Ecriture"; break;
case MSG_WRITING_ERROR: p = "Erreur <20> l'<27>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 <20> l'index"; break;
case MSG_XFILE_READERR: p = "Erreur %d en lisant le fichier index"; break;
case MSG_XFILE_WRITERR: p = "Erreur en <20>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 <20>tre cr<63><72>"; break;
case MSG_XPATH_EVAL_ERR: p = "Impossible d'<27>valuer l'emplacement xpath '%s'"; break;
case MSG_XPATH_NOT_SUPP: p = "Xpath non support<72> colonne %s"; break;

366
storage/connect/french.msg Normal file
View File

@@ -0,0 +1,366 @@
100 IDS_TABLES "Table Ent<6E>tes"
101 IDS_TAB_01 "Catalogue"
102 IDS_TAB_02 "Sch<63>ma"
103 IDS_TAB_03 "Nom"
104 IDS_TAB_04 "Type"
105 IDS_TAB_05 "Remarque"
106 IDS_COLUMNS "Colonne Ent<6E>tes"
107 IDS_COL_01 "Cat_Table"
108 IDS_COL_02 "Schem_Table"
109 IDS_COL_03 "Nom_Table"
110 IDS_COL_04 "Nom_Colonne"
111 IDS_COL_05 "Type_Donn<6E>es"
112 IDS_COL_06 "Nom_Type"
113 IDS_COL_07 "Pr<50>cision"
114 IDS_COL_08 "Longueur"
115 IDS_COL_09 "Echelle"
116 IDS_COL_10 "Base"
117 IDS_COL_11 "Nullifiable"
118 IDS_COL_12 "Remarques"
119 IDS_PKEY "Cl<43> Ent<6E>tes"
120 IDS_PKY_01 "Cat_Table"
121 IDS_PKY_02 "Schem_Table"
122 IDS_PKY_03 "Nom_Table"
123 IDS_PKY_04 "Nom_Colonne"
124 IDS_PKY_05 "Num<75>ro_Cl<43>"
125 IDS_PKY_06 "Nom_Cl<43>"
126 IDS_STAT "Stat Ent<6E>tes"
127 IDS_STA_01 "Table_Catalog"
128 IDS_STA_02 "Table_Schema"
129 IDS_STA_03 "Table_Name"
130 IDS_STA_04 "Non_Unique"
131 IDS_STA_05 "Index_Qualifier"
132 IDS_STA_06 "Index_Name"
133 IDS_STA_07 "Type"
134 IDS_STA_08 "Seq_in_Index"
135 IDS_STA_09 "Column_Name"
136 IDS_STA_10 "Collation"
137 IDS_STA_11 "Cardinality"
138 IDS_STA_12 "Pages"
139 IDS_STA_13 "Filter_Condition"
140 IDS_DRIVER "Driver Ent<6E>tes"
141 IDS_DRV_01 "Description"
142 IDS_DRV_02 "Attributs"
143 IDS_DSRC "DataSrc Ent<6E>tes"
144 IDS_DSC_01 "Nom"
145 IDS_DSC_02 "Description"
200 ACCESS_VIOLATN "Violation acc<63>s m<>moire"
201 ADD_BAD_TYPE "Ajout d'une valeur de type %s non conforme dans un tableau %s"
202 ALLOC_ERROR "Erreur d'allocation de %s"
203 ANSWER_TYPE "R<>ponse de type"
204 API_CONF_ERROR "Erreur SQL: API_CONFORMANCE"
205 APPL_NOT_INIT "Application non initialis<69>e"
206 ARRAY_BNDS_EXCD "Hors limite de tableau"
207 BAD_ARRAY_OPER "Les tableaux doivent utiliser l'op<6F>rateur IN"
208 BAD_ARRAY_TYPE "Type=%d invalide pour un tableau"
209 BAD_ARRAY_VAL "Les tableaux doivent avoir le m<>me nombre de valeurs"
210 BAD_BIN_FMT "Format invalide %c pour la colonne BIN %s"
211 BAD_BLK_ESTIM "Nombre de blocs sup<75>rieur <20> l'estimation"
212 BAD_BLK_SIZE "Taille du bloc %d non conforme"
213 BAD_BYTE_NUM "Le nombre d'octets <20>crits est faux"
214 BAD_BYTE_READ "Le nombre d'octets lus est faux"
215 BAD_COL_TYPE "Type invalide %s pour la colonne %s"
216 BAD_COL_XPATH "Xpath invalide colonne %s de la table HTML %s"
217 BAD_CONST_TYPE "Type=%d invalide pour une constante"
218 BAD_CONV_TYPE "Convertion de type invalide %d"
219 BAD_DATETIME "Valeur date/temps invalide"
220 BAD_DBF_FILE "Le fichier DBF %s est alt<6C>r<EFBFBD>"
221 BAD_DBF_REC "Fichier DBF %s alt<6C>r<EFBFBD> enregistrement %d"
222 BAD_DBF_TYPE "Type DBF %c non support<72> colonne %s"
223 BAD_DIRECTORY "R<>pertoire invalide %s: %s"
224 BAD_FIELD_RANK "Rang %d invalide pour la colonne %s"
225 BAD_FIELD_TYPE "Mauvais type de champ %s"
226 BAD_FILE_HANDLE "Handle de fichier invalide: %s"
227 BAD_FILTER "Mauvais filtre: Opc=%d B_T=%d %d Type=%d %d"
228 BAD_FILTER_CONV "Conversion filtre incorrecte, B_T=%d,%d"
229 BAD_FILTER_OP "Op<4F>rateur de filtre invalide %d"
230 BAD_FLD_FORMAT "Format invalide pour le champs %d de %s"
231 BAD_FLD_LENGTH "Champs %s trop long (%s --> %d) ligne %d de %s"
232 BAD_FREQ_SET "Sp<53>cification erronn<6E>e de Freq pour la colonne %s"
233 BAD_FUNC_MODE "%s: mode invalide %d"
234 BAD_HANDLE_VAL "Valeur Handle invalide"
235 BAD_HEADER "Fichier %s: bloc en-t<>te alt<6C>r<EFBFBD>"
236 BAD_HEAD_END "Lecture fin d'en-t<>te impossible"
237 BAD_INDEX_FILE "Fichier index %s corrompu"
238 BAD_LINEFLD_FMT "Format invalide ligne %d champs %d de %s"
239 BAD_LINE_LEN "Longueur ligne non <20>gale <20> Lrecl"
240 BAD_LRECL "Disparit<69> lrecl table/fichier (%d,%hd)"
241 BAD_NODE_TYPE "Type noeud erron<6F> pour la table"
242 BAD_OFFSET_VAL "Nul offset invalide pour une table CSV"
243 BAD_OPEN_MODE "Mode d'ouverture invalide %d"
244 BAD_PARAM_TYPE "%.8s: Param<61>tre de type=%d invalide"
245 BAD_PARM_COUNT "Nombre de param<61>tres incoh<6F>rent"
246 BAD_QUOTE_FIELD "Quote manquante dans %s champs %d ligne %d"
247 BAD_READ_NUMBER "Mauvais nombre %d de valeurs lues dans %s"
248 BAD_RECFM "Recfm type %d invalide pour DOSCOL"
249 BAD_RECFM_VAL "Valeur invalide %d de Recfm"
250 BAD_SET_CASE "La casse d'un tableau ne peut pas passer de non respect <20> respecter"
251 BAD_SET_STRING "SetValue: appel invalide pour STRING"
252 BAD_SPECIAL_COL "Colonne sp<73>ciale invalide %s"
253 BAD_SPEC_COLUMN "Colonne sp<73>ciale invalide pour ce type de table"
254 BAD_TABLE_TYPE "Type invalide %s pour la table %s"
255 BAD_TYPE_LIKE "Type(%d)= %d invalide pour LIKE"
256 BAD_VALBLK_INDX "Valeur hors limites de l'index du bloc de valeurs"
257 BAD_VALBLK_TYPE "Type=%d invalide pour un bloc de valeurs"
258 BAD_VALNODE "Type %d invalide pour le noeud valeur colonne %s"
259 BAD_VALUE_TYPE "Type de valeur invalide %d"
260 BAD_VAL_UPDATE "Impossible de d<>terminer quelle valeur %s doit <20>tre mise <20> jour"
261 BAS_NS_LIST "Format invalide de la liste des espace-noms"
262 BIN_F_TOO_LONG "Valeur trop longue pour le champ %s (%d --> %d)"
263 BIN_MODE_FAIL "Echec mode binaire: %s"
264 BLKTYPLEN_MISM "Disparit<69> types/longueurs de bloc dans SetValue"
265 BLK_IS_NULL "Blk est nul"
266 BREAKPOINT "Point de contr<74>le"
267 BUILD_INDEX "Construction index %s sur %s"
268 CANNOT_OPEN "Ouverture impossible de %s"
269 CHSIZE_ERROR "Erreur dans chsize: %s"
270 COL_ALLOC_ERR "Allocation impossible du noeud colonne"
271 COL_ISNOT_TABLE "La colonne %s n'est pas dans la table %s"
272 COL_NOT_SORTED "La colonne %s de la table %s n'est pas tri<72>e"
273 COL_NUM_MISM "Disparit<69> du nombre de colonnes"
274 COM_ERROR "Erreur Com"
275 CONCAT_SUBNODE "Concat<61>nation de sous-noeuds impossible"
276 CONNECT_CANCEL "Connection interrompue par l'utilisateur"
277 CONTROL_C_EXIT "Exit par Ctrl-C"
278 DATABASE_LOADED "Base de donn<6E>es %s charg<72>e"
279 DATA_MISALIGN "Mauvais alignement pour ce type de donn<6E>es"
280 DBASE_FILE "Fichier dBASE dbf: "
281 DEF_ALLOC_ERROR "Erreur d'allocation de la classe DEF %s"
282 DEL_FILE_ERR "Erreur <20> l'effacement de %s"
283 DEL_READ_ERROR "Delete: erreur en lecture req=%d len=%d"
284 DEL_WRITE_ERROR "Delete: erreur en <20>criture: %s"
285 DEPREC_FLAG "Option Flag p<>rim<69>e, utiliser Coltype"
286 DLL_LOAD_ERROR "Erreur %d au chargement du module %s"
287 DOM_NOT_SUPP "MS-DOM non support<72> par cette version"
288 DVAL_NOTIN_LIST "Valeur %s non trouv<75>e dans la liste des valeurs distinctes de la colonne %s"
289 EMPTY_DOC "Document vide"
290 EMPTY_FILE "%s du fichier vide %s: "
291 EOF_AFTER_LINE "Fin de fichier apr<70>s la ligne %d"
292 EOF_INDEX_FILE "EOF lisant le fichier index"
293 ERROR_IN_LSK "Erreur %d dans lseek64"
294 ERROR_IN_SFP "Erreur %d dans SetFilePointer"
295 ERR_READING_REC "Erreur lisant l'enregistrement %d de %s"
296 FAIL_ADD_NODE "L'ajout du noeud %s dans la table a <20>chou<6F>"
297 FETCH_NO_RES "Fetch: Pas de R<>sultats"
298 FIELD_TOO_LONG "Valeur trop longue pour le champs %d ligne %d"
299 FILELEN_ERROR "Erreur dans %s pour %s"
300 FILE_IS_EMPTY "Le fichier %s est vide"
301 FILE_MAP_ERR "Erreur de File mapping"
302 FILE_MAP_ERROR "CreateFileMapping %s erreur rc=%d"
303 FILE_OPEN_YET "Fichier %s d<>j<EFBFBD> ouvert"
304 FILE_UNFOUND "Fichier %s non trouv<75>"
305 FLD_TOO_LNG_FOR "Champs %d trop long pour %s ligne %d de %s"
306 FLT_BAD_RESULT "Virgule flottante: r<>sultat inexacte"
307 FLT_DENORMAL_OP "Op<4F>rande virgule flottante non normalis<69>"
308 FLT_INVALID_OP "Op<4F>ration virgule flottante invalide"
309 FLT_OVERFLOW "D<>passement de capacit<69> virgule flottante"
310 FLT_STACK_CHECK "Virgule flottante: Erreur de la pile"
311 FLT_UNDERFLOW "Sous-d<>passement de capacit<69> virgule flottante"
312 FLT_ZERO_DIVIDE "Virgule flottante: division par z<>ro"
313 FMT_WRITE_NIY "L'<27>criture des fichiers %s n'est pas encore impl<70>ment<6E>e"
314 FOXPRO_FILE "Fichier FoxPro: "
315 FPUTS_ERROR "Erreur dans fputs: %s"
316 FSEEK_ERROR "Erreur dans fseek: %s"
317 FSETPOS_ERROR "Erreur dans fseek pour i=%d"
318 FTELL_ERROR "Erreur dans ftell enregistrement=%d: %s"
319 FUNCTION_ERROR "Erreur dans %s: %d"
320 FUNC_ERRNO "Erreur %d dans %s"
321 FUNC_ERROR "Erreur dans %s"
322 FUNC_ERR_S "Erreur dans %s: %s"
323 FWRITE_ERROR "Erreur dans fwrite: %s"
324 GET_DIST_VALS "R<>cup<75>ration des valeurs distinctes de "
325 GET_FUNC_ERR "Erreur en recherche de la fonction %s: %s"
326 GLOBAL_ERROR "Erreur d'allocation de Global (taille=%d)\n"
327 GUARD_PAGE "Violation de page de garde"
328 GZOPEN_ERROR "gzopen %s: erreur %d sur %s"
329 ILLEGAL_INSTR "Instruction ill<6C>gale"
330 ILL_FILTER_CONV "Conversion implicite ill<6C>gale dans un filtre"
331 INDEX_NOT_UNIQ "L'index n'est pas Unique"
332 INDEX_YET_ON "L'index %s existe d<>j<EFBFBD> sur %s"
333 INDX_COL_NOTIN "La colonne index %s n'existe pas dans la table %s"
334 INDX_EXIST_YET "L'entr<74>e index existe d<>j<EFBFBD>"
335 INIT_FAILED "L'initialisation de %s a <20>chou<6F>"
336 INT_COL_ERROR "Erreur interne sur la colonne index %s"
337 INT_OVERFLOW "D<>passement de capacit<69> sur entier"
338 INT_ZERO_DIVIDE "Division enti<74>re par z<>ro"
339 INVALID_DISP "Disposition invalide"
340 INVALID_FTYPE "SBV: Ftype %d invalide"
341 INVALID_HANDLE "Poign<67>e invalide"
342 INVALID_OPER "Op<4F>rateur invalide %d pour %s"
343 INV_COLUMN_TYPE "Type %d Invalide pour la colonne %s"
344 INV_COL_TYPE "Type de colonne %s invalide"
345 INV_DEF_READ "Lecture diff<66>r<EFBFBD>e invalide rc=%d"
346 INV_DIRCOL_OFST "Offset invalide pour une colonne DIR"
347 INV_MAP_POS "Position m<>moire invalide"
348 INV_RAND_ACC "L'acc<63>s al<61>atoire d'une table non optimis<69>e est impossible"
349 INV_REC_POS "Position d'enregistrement invalide"
350 INV_RESULT_TYPE "Type de r<>sultat invalide %s"
351 INV_UPDT_TABLE "Table %s invalide pour Update"
352 IN_WITHOUT_SUB "IN ou EXISTS sans tableau ou subquery"
353 KEY_ALLOC_ERR "Erreur d'allocation d'un bloc offset cl<63>"
354 KEY_ALLOC_ERROR "Erreur d'allocation m<>moire, Klen=%d n=%d"
355 LINE_TOO_LONG "La nouvelle ligne est trop longue"
356 LIST "--Liste--"
357 LOADING_FAILED "Le chargement de %s a <20>chou<6F>"
358 LRECL_TOO_SMALL "Lrecl trop petit (longueur en-t<>te = %d)"
359 MAKE_EMPTY_FILE "G<>n<EFBFBD>ration du fichier vide %s: %s"
360 MAKING "G<>n<EFBFBD>ration"
361 MALLOC_ERROR "Allocation m<>moire impossible par %s"
362 MAP_VIEW_ERROR "MapViewOfFile %s erreur rc=%d"
363 MAXSIZE_ERROR "Maxsize incalculable sur table ouverte"
364 MEM_ALLOC_ERR "Erreur d'allocation m<>moire, taille %s = %d"
365 MEM_ALLOC_ERROR "Erreur d'allocation m<>moire"
366 MISPLACED_QUOTE "Appostrophe mal plac<61>e ligne %d"
367 MISSING_ARG "Argument manquant pour l'op<6F>rateur %d"
368 MISSING_FIELD "Champs %d manquant dans %s ligne %d"
369 MISSING_FNAME "Nom du fichier manquant"
370 MISSING_NODE "Noeud %s manquant dans %s"
371 MISSING_ROWNODE "Impossible de trouver le noeud de la ligne %d"
372 MIS_TAG_LIST "Liste des balises colonne manquante"
373 MUL_MAKECOL_ERR "Erreur logique dans TABMUL::MakeCol"
374 NAME_CONV_ERR "Erreur de convertion du nom de noeud"
375 NEW_DOC_FAILED "Impossible de cr<63>er le nouveau document"
376 NEW_RETURN_NULL "NULL renvoy<6F> par New dans PlugEvalLike"
377 NEXT_FILE_ERROR "Erreur en recherche du fichier suivant. rc=%s"
378 NONCONT_EXCEPT "Exception non-continuable"
379 NOP_ZLIB_INDEX "L'indexage d'une table zlib non optimis<69>e est impossible"
380 NOT_A_DBF_FILE "Le fichier n'a pas le format dBASE dbf "
381 NOT_FIXED_LEN "Fichier %s non fixe, len=%d lrecl=%d"
382 NO_0DH_HEAD "0DH manquant en fin d'en-t<>te (dbc=%d)"
383 NO_ACTIVE_DB "Pas de base de donn<6E>es active"
384 NO_CHAR_FROM "Conversion de type %d en caract<63>res impossible"
385 NO_DATE_FMT "Pas de format date pour le valblock de type %d"
386 NO_DEF_FNCCOL "Colonne fonction par d<>faut introuvable"
387 NO_DEF_PIVOTCOL "Colonne pivot par d<>faut introuvable"
388 NO_DIR_INDX_RD "Pas d'acc<63>s directe des tables %s"
389 NO_FEAT_SUPPORT "%s non support<72> dans cette version"
390 NO_FLD_FORMAT "Format absent pour le champs %d de %s"
391 NO_FORMAT_COL "Type COLUMN informattable"
392 NO_FORMAT_TYPE "Le format ne peut pas <20>tre d<>fini <20> partir du type %d"
393 NO_INDEX_READ "Pas d'acc<63>s directe des tables multiples"
394 NO_KEY_COL "Pas de colonne cl<63> trouv<75>e"
395 NO_KEY_UPDATE "Le nom des cl<63>s ne peut pas <20>tre modifi<66>"
396 NO_MAP_INSERT "MAP incompatible avec Insert"
397 NO_MATCHING_COL "Pas de colonne correspondant <20> %s dans %s"
398 NO_MATCH_COL "Colonne correspondante introuvable"
399 NO_MEMORY "M<>moire pleine"
400 NO_MODE_PADDED "Mode non support<72> pour les fichiers 'padded'"
401 NO_MUL_VCT "Les tables VCT ne peuvent pas <20>tre multiples"
402 NO_ODBC_DELETE "Delete ne devrait pas <20>tre appel<65> pour les tables ODBC"
403 NO_ODBC_DIRECT "Acc<63>s directe des tables ODBC non encore impl<70>ment<6E>"
404 NO_ODBC_MUL "Multiple(2) non support<72> pour les tables ODBC"
405 NO_ODBC_SPECOL "Pas de colonne sp<73>ciale ODBC"
406 NO_PART_DEL "Delete partiel des fichier %s impossible"
407 NO_PART_MAP "Mapping partiel non impl<70>ment<6E> pour cet OS"
408 NO_PAR_BLK_INS "Insertion de bloc partiel impossible"
409 NO_PIV_DIR_ACC "Pas d'acc<63>s directe aux tables PIVOT"
410 NO_READ_32 "Lecture de 32 octets impossible"
411 NO_RECOV_SPACE "Espace non recouvrable dans le fichier index"
412 NO_ROWID_FOR_AM "Acc<63>s direct impossible de ROWID pour les tables de type %s"
413 NO_ROW_NODE "Le nom du Rownode n'est pas d<>fini"
414 NO_SECTION_NAME "Nom de section manquant"
415 NO_SEC_UPDATE "Les noms de section ne peuvent pas <20>tre modifi<66>s"
416 NO_SETPOS_YET "SetPos pas encore impl<70>ment<6E> pour les fichier %s"
417 NO_SPEC_COL "Pas de colonne sp<73>ciales MYSQL"
418 NO_SUB_VAL "Pas de sous-value d'un tableau de type %d"
419 NO_TABCOL_DATA "Pas de donn<6E>es pour la table %s colonne %s"
420 NO_TABLE_DEL "Delete non autoris<69> pour les tables %s "
421 NO_TAB_DATA "Pas de donn<6E>es pour la table %s"
422 NO_VCT_DELETE "D<>l<EFBFBD>tion Partielle non impl<70>ment<6E>e pour les fichiers VCT"
423 NO_ZIP_DELETE "Delete sur fichier Zip non encore implement<6E>"
424 OPENING "Ouverture"
425 OPEN_EMPTY_FILE "Ouverture du fichier vide %s: %s"
426 OPEN_ERROR "Erreur d'ouverture %d en mode %d sur %s: "
427 OPEN_ERROR_IS "Erreur <20> l'ouverture de %s: %s"
428 OPEN_MODE_ERROR "Erreur d'ouverture(%s) %d sur %s"
429 OPEN_STRERROR "Erreur <20> l'ouverture: %s"
430 OPTBLK_RD_ERR "Erreur <20> la lecture d'un bloc optimisation: %s"
431 OPTBLK_WR_ERR "Erreur <20> l'<27>criture d'un bloc optimisation: %s"
432 OPTIMIZING "Optimisation de "
433 OPT_BMAP_RD_ERR "Erreur en lecture des bitmaps d'optimisation: %s"
434 OPT_BMAP_WR_ERR "Erreur en <20>criture des bitmaps d'optimisation: %s"
435 OPT_CANCELLED "Optimisation interrompue par l'utilisateur"
436 OPT_DVAL_RD_ERR "Erreur en lecture des valeurs distinctes: %s"
437 OPT_DVAL_WR_ERR "Erreur en <20>criture des valeurs distinctes: %s"
438 OPT_HEAD_RD_ERR "Erreur en lecture de l'ent<6E>te du fichier opt: %s"
439 OPT_HEAD_WR_ERR "Erreur en <20>criture de l'ent<6E>te du fichier opt: %s"
440 OPT_LOGIC_ERR "Erreur logique dans SetBitmap, i=%d"
441 OPT_MAX_RD_ERR "Erreur en lecture des valeurs maxi: %s"
442 OPT_MAX_WR_ERR "Erreur en <20>criture des valeurs maxi: %s"
443 OPT_MIN_RD_ERR "Erreur en lecture des valeurs mini: %s"
444 OPT_MIN_WR_ERR "Erreur en <20>criture des valeurs mini: %s"
445 OPT_NOT_MATCH "Le fichier opt %s n'est pas <20> jour"
446 PAGE_ERROR "Erreur de pagination"
447 PARM_CNT_MISS "Disparit<69> du nombre de Param<61>tres"
448 PREC_VBLP_NULL "ARRAY SetPrecision: Vblp est NULL"
449 PRIV_INSTR "Instruction privil<69>gi<67>e"
450 PROCADD_ERROR "Erreur %d sur l'adresse de %s"
451 QUERY_CANCELLED "Requ<71>te interrompue par l'utilisateur"
452 RANGE_NO_JOIN "Range non compatible avec les index de jointure"
453 RC_READING "rc=%d en lecture de la table %s"
454 READY "Pr<50>t"
455 READ_ERROR "Erreur en lecture sur %s: %s"
456 READ_ONLY "Cette table prot<6F>g<EFBFBD>e en lecture seule ne peut <20>tre modifi<66>e"
457 READ_SEEK_ERROR "Erreur de recherche en lecture: %s"
458 REGISTER_ERR "Enregistrement NS impossible, pr<70>fix='%s' et href='%s'"
459 REMOVE_ERROR "Erreur en supprimant %s: %s"
460 RENAME_ERROR "Erreur renommant %s en %s: %s"
461 ROWID_NOT_IMPL "RowNumber non impl<70>ment<6E> pour les tables de type %s"
462 SEC_KEY_FIRST "Les sections et cl<63>s doivent <20>tre ins<6E>r<EFBFBD>es en premier"
463 SEC_NAME_FIRST "Le nom de section doit <20>tre en t<>te de liste en insertion"
464 SEP_IN_FIELD "Le champ %d contient le caract<63>re s<>parateur"
465 SEQUENCE_ERROR "HSTMT: Allocation hors s<>quence"
466 SETEOF_ERROR "Erreur %d dans SetEndOfFile"
467 SETRECPOS_NIY "SetRecpos non impl<70>ment<6E> pour ce type de table"
468 SET_STR_TRUNC "SetValue: Cha<68>ne de caract<63>res tronqu<71>e"
469 SFP_ERROR "Erreur sur SetFilePointer: %s"
470 SHARED_LIB_ERR "Erreur au chargement de la librairie partag<61>e %s: %s"
471 SINGLE_STEP "Pas <20> pas"
472 SORTING_VAL "Tri de %d valeurs"
473 SPCOL_READONLY "La colonne sp<73>ciale %s est en lecture seulement"
474 SQL_CONF_ERROR "Erreur SQL: SQL_CONFORMANCE"
475 SRCH_CLOSE_ERR "Erreur <20> la fermeture de l'Handle de recherche"
476 SRC_TABLE_UNDEF "La table source n'est pas d<>finie"
477 STACK_OVERFLOW "D<>passement de capacit<69> de la pile"
478 TABDIR_READONLY "Les tables DIR sont en lecture seulement"
479 TABLE_NOT_OPT "Table non optimisable"
480 TABLE_NO_INDEX "La table %s n'est pas indexable"
481 TABLE_READ_ONLY "Les tables %s sont en lecture seulement "
482 TABMUL_READONLY "Les tables multiples sont en lecture seulement"
483 TOO_MANY_FIELDS "Trop de champs ligne %d de %s"
484 TOO_MANY_JUMPS "Trop de niveaux de saut"
485 TOO_MANY_KEYS "Trop de cl<63>s (%d)"
486 TO_BLK_IS_NULL "To Blk est nul"
487 TRUNCATE_ERROR "Erreur en troncation: %s"
488 TRUNC_BY_ESTIM "Tronqu<71> par l'option Estimate"
489 TYPE_MISMATCH "Cl<43> et source ne sont pas du m<>me type"
490 TYPE_VALUE_ERR "Colonne %s: disparit<69> type(%s)/valeur(%s)"
491 UNBALANCE_QUOTE "Appostrophe en trop ligne %d"
492 UNDEFINED_AM "COLBLK %s: m<>thode d'acc<63>s ind<6E>finie"
493 UNKNOWN_EXCPT "Exception non r<>pertori<72>e"
494 UNMATCH_FIL_ARG "Argument de filtre d<>pareill<6C>"
495 UPDATE_ERROR "Erreur en Update sur %s"
496 UPD_ZIP_NOT_IMP "Mise <20> jour des tables ZDOS non encore implement<6E>"
497 VALSTR_TOO_LONG "Valeur %s trop longue pour une cha<68>ne de longueur %d"
498 VALTYPE_NOMATCH "Disparit<69> types de valeur"
499 VALUE_ERROR "Colonne %s: bloc valeur nul"
500 VALUE_TOO_BIG "Valeur %d trop grande pour la colonne %s"
501 VALUE_TOO_LONG "Valeur %s trop longue pour la colonne %s de longueur %d"
502 VAL_ALLOC_ERR "Allocation impossible du noeud valeur"
503 VIR_NO_DELETE "Delete impossible sur les tables %s"
504 VIR_READ_ONLY "Les tables virtuelles %s sont en lecture seulement"
505 VOID_FIRST_ARG "Le premier argument ne doit pas <20>tre vide"
506 WORK_AREA "Espace de travail: %s"
507 WRITE_SEEK_ERR "Erreur de recherche en <20>criture: %s"
508 WRITE_STRERROR "Erreur en <20>criture sur %s: %s"
509 WRITING "Ecriture"
510 WRITING_ERROR "Erreur <20> l'<27>criture de %s: %s"
511 WS_CONV_ERR "Erreur de convertion de %s en WS"
512 XCOL_MISMATCH "La colonne %s ne correspond pas <20> l'index"
513 XFILE_READERR "Erreur %d en lisant le fichier index"
514 XFILE_WRITERR "Erreur en <20>crivant le fichier index: %s"
515 XMLTAB_INIT_ERR "Erreur d'initialisation de la table XML"
516 XML_INIT_ERROR "Erreur d'initialisation du nouveau fichier XML"
517 XPATH_CNTX_ERR "Le nouveau contexte XPath ne peut <20>tre cr<63><72>"
518 XPATH_EVAL_ERR "Impossible d'<27>valuer l'emplacement xpath '%s'"
519 XPATH_NOT_SUPP "Xpath non support<72> colonne %s"

46
storage/connect/frids.h Normal file
View File

@@ -0,0 +1,46 @@
case IDS_TABLES: p = "Table Ent<6E>tes"; break;
case IDS_TAB_01: p = "Catalogue"; break;
case IDS_TAB_02: p = "Sch<EFBFBD>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<6E>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<EFBFBD>es"; break;
case IDS_COL_06: p = "Nom_Type"; break;
case IDS_COL_07: p = "Pr<EFBFBD>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<EFBFBD> Ent<6E>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<EFBFBD>ro_Cl<EFBFBD>"; break;
case IDS_PKY_06: p = "Nom_Cl<EFBFBD>"; break;
case IDS_STAT: p = "Stat Ent<6E>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<6E>tes"; break;
case IDS_DRV_01: p = "Description"; break;
case IDS_DRV_02: p = "Attributs"; break;
case IDS_DSRC: p = "DataSrc Ent<6E>tes"; break;
case IDS_DSC_01: p = "Nom"; break;
case IDS_DSC_02: p = "Description"; break;

320
storage/connect/frmsg.h Normal file
View File

@@ -0,0 +1,320 @@
#define MSG_ACCESS_VIOLATN "Violation acc<63>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<69>e"
#define MSG_ARRAY_BNDS_EXCD "Hors limite de tableau"
#define MSG_BAD_ARRAY_OPER "Les tableaux doivent utiliser l'op<6F>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<75>rieur <20> l'estimation"
#define MSG_BAD_BLK_SIZE "Taille du bloc %d non conforme"
#define MSG_BAD_BYTE_NUM "Le nombre d'octets <20>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<6C>r<EFBFBD>"
#define MSG_BAD_DBF_REC "Fichier DBF %s alt<6C>r<EFBFBD> enregistrement %d"
#define MSG_BAD_DBF_TYPE "Type DBF %c non support<72> 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<4F>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<53>cification erronn<6E>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<6C>r<EFBFBD>"
#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 <20>gale <20> Lrecl"
#define MSG_BAD_LRECL "Disparit<69> lrecl table/fichier (%d,%hd)"
#define MSG_BAD_NODE_TYPE "Type noeud erron<6F> 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<61>tre de type=%d invalide"
#define MSG_BAD_PARM_COUNT "Nombre de param<61>tres incoh<6F>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 <20> respecter"
#define MSG_BAD_SET_STRING "SetValue: appel invalide pour STRING"
#define MSG_BAD_SPECIAL_COL "Colonne sp<73>ciale invalide %s"
#define MSG_BAD_SPEC_COLUMN "Colonne sp<73>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 <20>tre mise <20> 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<69> types/longueurs de bloc dans SetValue"
#define MSG_BLK_IS_NULL "Blk est nul"
#define MSG_BREAKPOINT "Point de contr<74>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<72>e"
#define MSG_COL_NUM_MISM "Disparit<69> du nombre de colonnes"
#define MSG_COM_ERROR "Erreur Com"
#define MSG_CONCAT_SUBNODE "Concat<61>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<6E>es %s charg<72>e"
#define MSG_DATA_MISALIGN "Mauvais alignement pour ce type de donn<6E>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 <20> 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 <20>criture: %s"
#define MSG_DEPREC_FLAG "Option Flag p<>rim<69>e, utiliser Coltype"
#define MSG_DLL_LOAD_ERROR "Erreur %d au chargement du module %s"
#define MSG_DOM_NOT_SUPP "MS-DOM non support<72> par cette version"
#define MSG_DVAL_NOTIN_LIST "Valeur %s non trouv<75>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<70>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 <20>chou<6F>"
#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<EFBFBD> ouvert"
#define MSG_FILE_UNFOUND "Fichier %s non trouv<75>"
#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<4F>rande virgule flottante non normalis<69>"
#define MSG_FLT_INVALID_OP "Op<4F>ration virgule flottante invalide"
#define MSG_FLT_OVERFLOW "D<>passement de capacit<69> virgule flottante"
#define MSG_FLT_STACK_CHECK "Virgule flottante: Erreur de la pile"
#define MSG_FLT_UNDERFLOW "Sous-d<>passement de capacit<69> virgule flottante"
#define MSG_FLT_ZERO_DIVIDE "Virgule flottante: division par z<>ro"
#define MSG_FMT_WRITE_NIY "L'<27>criture des fichiers %s n'est pas encore impl<70>ment<6E>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<75>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<6C>gale"
#define MSG_ILL_FILTER_CONV "Conversion implicite ill<6C>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<EFBFBD> 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<74>e index existe d<>j<EFBFBD>"
#define MSG_INIT_FAILED "L'initialisation de %s a <20>chou<6F>"
#define MSG_INT_COL_ERROR "Erreur interne sur la colonne index %s"
#define MSG_INT_OVERFLOW "D<>passement de capacit<69> sur entier"
#define MSG_INT_ZERO_DIVIDE "Division enti<74>re par z<>ro"
#define MSG_INVALID_DISP "Disposition invalide"
#define MSG_INVALID_FTYPE "SBV: Ftype %d invalide"
#define MSG_INVALID_HANDLE "Poign<67>e invalide"
#define MSG_INVALID_OPER "Op<4F>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<66>r<EFBFBD>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<63>s al<61>atoire d'une table non optimis<69>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<63>"
#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 <20>chou<6F>"
#define MSG_LRECL_TOO_SMALL "Lrecl trop petit (longueur en-t<>te = %d)"
#define MSG_MAKE_EMPTY_FILE "G<>n<EFBFBD>ration du fichier vide %s: %s"
#define MSG_MAKING "G<>n<EFBFBD>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<61>e ligne %d"
#define MSG_MISSING_ARG "Argument manquant pour l'op<6F>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<63>er le nouveau document"
#define MSG_NEW_RETURN_NULL "NULL renvoy<6F> 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<69>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<6E>es active"
#define MSG_NO_CHAR_FROM "Conversion de type %d en caract<63>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<63>s directe des tables %s"
#define MSG_NO_FEAT_SUPPORT "%s non support<72> 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 <20>tre d<>fini <20> partir du type %d"
#define MSG_NO_INDEX_READ "Pas d'acc<63>s directe des tables multiples"
#define MSG_NO_KEY_COL "Pas de colonne cl<63> trouv<75>e"
#define MSG_NO_KEY_UPDATE "Le nom des cl<63>s ne peut pas <20>tre modifi<66>"
#define MSG_NO_MAP_INSERT "MAP incompatible avec Insert"
#define MSG_NO_MATCHING_COL "Pas de colonne correspondant <20> %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<72> pour les fichiers 'padded'"
#define MSG_NO_MUL_VCT "Les tables VCT ne peuvent pas <20>tre multiples"
#define MSG_NO_ODBC_DELETE "Delete ne devrait pas <20>tre appel<65> pour les tables ODBC"
#define MSG_NO_ODBC_DIRECT "Acc<63>s directe des tables ODBC non encore impl<70>ment<6E>"
#define MSG_NO_ODBC_MUL "Multiple(2) non support<72> pour les tables ODBC"
#define MSG_NO_ODBC_SPECOL "Pas de colonne sp<73>ciale ODBC"
#define MSG_NO_PART_DEL "Delete partiel des fichier %s impossible"
#define MSG_NO_PART_MAP "Mapping partiel non impl<70>ment<6E> pour cet OS"
#define MSG_NO_PAR_BLK_INS "Insertion de bloc partiel impossible"
#define MSG_NO_PIV_DIR_ACC "Pas d'acc<63>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<63>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 <20>tre modifi<66>s"
#define MSG_NO_SETPOS_YET "SetPos pas encore impl<70>ment<6E> pour les fichier %s"
#define MSG_NO_SPEC_COL "Pas de colonne sp<73>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<6E>es pour la table %s colonne %s"
#define MSG_NO_TABLE_DEL "Delete non autoris<69> pour les tables %s "
#define MSG_NO_TAB_DATA "Pas de donn<6E>es pour la table %s"
#define MSG_NO_VCT_DELETE "D<>l<EFBFBD>tion Partielle non impl<70>ment<6E>e pour les fichiers VCT"
#define MSG_NO_ZIP_DELETE "Delete sur fichier Zip non encore implement<6E>"
#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 <20> l'ouverture de %s: %s"
#define MSG_OPEN_MODE_ERROR "Erreur d'ouverture(%s) %d sur %s"
#define MSG_OPEN_STRERROR "Erreur <20> l'ouverture: %s"
#define MSG_OPTBLK_RD_ERR "Erreur <20> la lecture d'un bloc optimisation: %s"
#define MSG_OPTBLK_WR_ERR "Erreur <20> l'<27>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 <20>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 <20>criture des valeurs distinctes: %s"
#define MSG_OPT_HEAD_RD_ERR "Erreur en lecture de l'ent<6E>te du fichier opt: %s"
#define MSG_OPT_HEAD_WR_ERR "Erreur en <20>criture de l'ent<6E>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 <20>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 <20>criture des valeurs mini: %s"
#define MSG_OPT_NOT_MATCH "Le fichier opt %s n'est pas <20> jour"
#define MSG_PAGE_ERROR "Erreur de pagination"
#define MSG_PARM_CNT_MISS "Disparit<69> du nombre de Param<61>tres"
#define MSG_PREC_VBLP_NULL "ARRAY SetPrecision: Vblp est NULL"
#define MSG_PRIV_INSTR "Instruction privil<69>gi<67>e"
#define MSG_PROCADD_ERROR "Erreur %d sur l'adresse de %s"
#define MSG_QUERY_CANCELLED "Requ<71>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<50>t"
#define MSG_READ_ERROR "Erreur en lecture sur %s: %s"
#define MSG_READ_ONLY "Cette table prot<6F>g<EFBFBD>e en lecture seule ne peut <20>tre modifi<66>e"
#define MSG_READ_SEEK_ERROR "Erreur de recherche en lecture: %s"
#define MSG_REGISTER_ERR "Enregistrement NS impossible, pr<70>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<70>ment<6E> pour les tables de type %s"
#define MSG_SEC_KEY_FIRST "Les sections et cl<63>s doivent <20>tre ins<6E>r<EFBFBD>es en premier"
#define MSG_SEC_NAME_FIRST "Le nom de section doit <20>tre en t<>te de liste en insertion"
#define MSG_SEP_IN_FIELD "Le champ %d contient le caract<63>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<70>ment<6E> pour ce type de table"
#define MSG_SET_STR_TRUNC "SetValue: Cha<68>ne de caract<63>res tronqu<71>e"
#define MSG_SFP_ERROR "Erreur sur SetFilePointer: %s"
#define MSG_SHARED_LIB_ERR "Erreur au chargement de la librairie partag<61>e %s: %s"
#define MSG_SINGLE_STEP "Pas <20> pas"
#define MSG_SORTING_VAL "Tri de %d valeurs"
#define MSG_SPCOL_READONLY "La colonne sp<73>ciale %s est en lecture seulement"
#define MSG_SQL_CONF_ERROR "Erreur SQL: SQL_CONFORMANCE"
#define MSG_SRCH_CLOSE_ERR "Erreur <20> 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<69> 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<63>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<71> par l'option Estimate"
#define MSG_TYPE_MISMATCH "Cl<43> et source ne sont pas du m<>me type"
#define MSG_TYPE_VALUE_ERR "Colonne %s: disparit<69> type(%s)/valeur(%s)"
#define MSG_UNBALANCE_QUOTE "Appostrophe en trop ligne %d"
#define MSG_UNDEFINED_AM "COLBLK %s: m<>thode d'acc<63>s ind<6E>finie"
#define MSG_UNKNOWN_EXCPT "Exception non r<>pertori<72>e"
#define MSG_UNMATCH_FIL_ARG "Argument de filtre d<>pareill<6C>"
#define MSG_UPDATE_ERROR "Erreur en Update sur %s"
#define MSG_UPD_ZIP_NOT_IMP "Mise <20> jour des tables ZDOS non encore implement<6E>"
#define MSG_VALSTR_TOO_LONG "Valeur %s trop longue pour une cha<68>ne de longueur %d"
#define MSG_VALTYPE_NOMATCH "Disparit<69> types de valeur"
#define MSG_VALUE_ERROR "Colonne %s: bloc valeur nul"
#define MSG_VALUE_TOO_BIG "Valeur %d 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 <20>tre vide"
#define MSG_WORK_AREA "Espace de travail: %s"
#define MSG_WRITE_SEEK_ERR "Erreur de recherche en <20>criture: %s"
#define MSG_WRITE_STRERROR "Erreur en <20>criture sur %s: %s"
#define MSG_WRITING "Ecriture"
#define MSG_WRITING_ERROR "Erreur <20> l'<27>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 <20> l'index"
#define MSG_XFILE_READERR "Erreur %d en lisant le fichier index"
#define MSG_XFILE_WRITERR "Erreur en <20>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 <20>tre cr<63><72>"
#define MSG_XPATH_EVAL_ERR "Impossible d'<27>valuer l'emplacement xpath '%s'"
#define MSG_XPATH_NOT_SUPP "Xpath non support<72> colonne %s"

View File

@@ -24,13 +24,13 @@
#endif #endif
#if defined(XMSG) #if defined(XMSG)
#error Option XMSG is not yet fully implemented //#error Option XMSG is not yet fully implemented
// Definition used to read messages from message file. // Definition used to read messages from message file.
#include "msgid.h" #include "msgid.h"
#define MSG(I) PlugReadMessage(NULL, MSG_##I, #I) #define MSG(I) PlugReadMessage(NULL, MSG_##I, #I)
#define STEP(I) PlugReadMessage(g, MSG_##I, #I) #define STEP(I) PlugReadMessage(g, MSG_##I, #I)
#elif defined(NEWMSG) #elif defined(NEWMSG)
#error Option NEWMSG is not yet fully implemented //#error Option NEWMSG is not yet fully implemented
// Definition used to get messages from resource. // Definition used to get messages from resource.
#include "msgid.h" #include "msgid.h"
#define MSG(I) PlugGetMessage(NULL, MSG_##I) #define MSG(I) PlugGetMessage(NULL, MSG_##I)

View File

@@ -179,25 +179,25 @@ extern "C" {
char slash= '/'; char slash= '/';
#endif // !WIN32 #endif // !WIN32
// int trace= 0; // The general trace value // int trace= 0; // The general trace value
int xconv= 0; // The type conversion option ulong xconv= 0; // The type conversion option
int zconv= SZCONV; // The text conversion size int zconv= 0; // The text conversion size
} // extern "C" } // extern "C"
#if defined(XMAP) #if defined(XMAP)
bool xmap= false; my_bool xmap= false;
#endif // XMAP #endif // XMAP
uint worksize= SZWORK; // uint worksize= 0;
ulong ha_connect::num= 0; ulong ha_connect::num= 0;
//int DTVAL::Shift= 0; //int DTVAL::Shift= 0;
/* CONNECT system variables */ /* CONNECT system variables */
static int conv_size= SZCONV; //atic int conv_size= 0;
static uint work_size= SZWORK; //atic uint work_size= 0;
static ulong type_conv= 0; //atic ulong type_conv= 0;
#if defined(XMAP) #if defined(XMAP)
static my_bool indx_map= 0; //atic my_bool indx_map= 0;
#endif // XMAP #endif // XMAP
#if defined(XMSG) #if defined(XMSG)
extern "C" { extern "C" {
@@ -215,6 +215,8 @@ bool CheckSelf(PGLOBAL g, TABLE_SHARE *s, const char *host,
const char *db, char *tab, const char *src, int port); const char *db, char *tab, const char *src, int port);
bool ExactInfo(void); bool ExactInfo(void);
USETEMP UseTemp(void); USETEMP UseTemp(void);
uint GetWorkSize(void);
void SetWorkSize(uint);
static PCONNECT GetUser(THD *thd, PCONNECT xp); static PCONNECT GetUser(THD *thd, PCONNECT xp);
static PGLOBAL GetPlug(THD *thd, PCONNECT& lxp); static PGLOBAL GetPlug(THD *thd, PCONNECT& lxp);
@@ -280,7 +282,13 @@ static MYSQL_THDVAR_ENUM(
1, // def (AUTO) 1, // def (AUTO)
&usetemp_typelib); // typelib &usetemp_typelib); // typelib
#if defined(XMSG) // Size used for g->Sarea_Size
static MYSQL_THDVAR_UINT(work_size,
PLUGIN_VAR_RQCMDARG,
"Size of the CONNECT work area.",
NULL, NULL, SZWORK, SZWMIN, UINT_MAX, 1);
#if defined(XMSG) || defined(NEWMSG)
const char *language_names[]= const char *language_names[]=
{ {
"default", "english", "french", NullS "default", "english", "french", NullS
@@ -300,7 +308,7 @@ static MYSQL_THDVAR_ENUM(
NULL, // update NULL, // update
1, // def (ENGLISH) 1, // def (ENGLISH)
&language_typelib); // typelib &language_typelib); // typelib
#endif // XMSG #endif // XMSG || NEWMSG
/***********************************************************************/ /***********************************************************************/
/* Function to export session variable values to other source files. */ /* Function to export session variable values to other source files. */
@@ -308,13 +316,31 @@ static MYSQL_THDVAR_ENUM(
extern "C" int GetTraceValue(void) {return THDVAR(current_thd, xtrace);} extern "C" int GetTraceValue(void) {return THDVAR(current_thd, xtrace);}
bool ExactInfo(void) {return THDVAR(current_thd, exact_info);} bool ExactInfo(void) {return THDVAR(current_thd, exact_info);}
USETEMP UseTemp(void) {return (USETEMP)THDVAR(current_thd, use_tempfile);} USETEMP UseTemp(void) {return (USETEMP)THDVAR(current_thd, use_tempfile);}
#if defined(XMSG) uint GetWorkSize(void) {return THDVAR(current_thd, work_size);}
void SetWorkSize(uint n)
{
// Changing the session variable value seems to be impossible here
// and should be done in a check function
push_warning(current_thd, Sql_condition::WARN_LEVEL_WARN, 0,
"Work size too big, try setting a smaller value");
} // end of SetWorkSize
#if defined(XMSG) || defined(NEWMSG)
extern "C" const char *msglang(void) extern "C" const char *msglang(void)
{ {
return language_names[THDVAR(current_thd, msg_lang)]; return language_names[THDVAR(current_thd, msg_lang)];
} // end of msglang } // end of msglang
#endif // XMSG #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
#if 0
/***********************************************************************/ /***********************************************************************/
/* Global variables update functions. */ /* Global variables update functions. */
/***********************************************************************/ /***********************************************************************/
@@ -332,21 +358,57 @@ static void update_connect_xconv(MYSQL_THD thd,
xconv= (int)(*(ulong *)var_ptr= *(ulong *)save); xconv= (int)(*(ulong *)var_ptr= *(ulong *)save);
} // end of update_connect_xconv } // end of update_connect_xconv
static void update_connect_worksize(MYSQL_THD thd,
struct st_mysql_sys_var *var,
void *var_ptr, const void *save)
{
worksize= (uint)(*(ulong *)var_ptr= *(ulong *)save);
} // end of update_connect_worksize
#if defined(XMAP) #if defined(XMAP)
static void update_connect_xmap(MYSQL_THD thd, static void update_connect_xmap(MYSQL_THD thd,
struct st_mysql_sys_var *var, struct st_mysql_sys_var *var,
void *var_ptr, const void *save) void *var_ptr, const void *save)
{ {
xmap= (bool)(*(my_bool *)var_ptr= *(my_bool *)save); xmap= (my_bool)(*(my_bool *)var_ptr= *(my_bool *)save);
} // end of update_connect_xmap } // end of update_connect_xmap
#endif // XMAP #endif // XMAP
#endif // 0
#if 0 // (was XMSG) Unuseful because not called for default value
static void update_msg_path(MYSQL_THD thd,
struct st_mysql_sys_var *var,
void *var_ptr, const void *save)
{
char *value= *(char**)save;
char *old= *(char**)var_ptr;
if (value)
*(char**)var_ptr= my_strdup(value, MYF(0));
else
*(char**)var_ptr= 0;
my_free(old);
} // end of update_msg_path
static int check_msg_path (MYSQL_THD thd, struct st_mysql_sys_var *var,
void *save, struct st_mysql_value *value)
{
const char *path;
char buff[512];
int len= sizeof(buff);
path= value->val_str(value, buff, &len);
if (path && *path != '*') {
/* Save a pointer to the name in the
'file_format_name_map' constant array. */
*(char**)save= my_strdup(path, MYF(0));
return(0);
} else {
push_warning_printf(thd,
Sql_condition::WARN_LEVEL_WARN,
ER_WRONG_ARGUMENTS,
"CONNECT: invalid message path");
} // endif path
*(char**)save= NULL;
return(1);
} // end of check_msg_path
#endif // 0
/***********************************************************************/ /***********************************************************************/
/* The CONNECT handlerton object. */ /* The CONNECT handlerton object. */
@@ -6237,15 +6299,15 @@ struct st_mysql_storage_engine connect_storage_engine=
/***********************************************************************/ /***********************************************************************/
// Size used when converting TEXT columns to VARCHAR // Size used when converting TEXT columns to VARCHAR
#if defined(_DEBUG) #if defined(_DEBUG)
static MYSQL_SYSVAR_INT(conv_size, conv_size, static MYSQL_SYSVAR_INT(conv_size, zconv,
PLUGIN_VAR_RQCMDARG, // opt PLUGIN_VAR_RQCMDARG, // opt
"Size used when converting TEXT columns.", "Size used when converting TEXT columns.",
NULL, update_connect_zconv, SZCONV, 0, 65500, 1); NULL, NULL, SZCONV, 0, 65500, 1);
#else #else
static MYSQL_SYSVAR_INT(conv_size, conv_size, static MYSQL_SYSVAR_INT(conv_size, zconv,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, // opt PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, // opt
"Size used when converting TEXT columns.", "Size used when converting TEXT columns.",
NULL, update_connect_zconv, SZCONV, 0, 65500, 1); NULL, NULL, SZCONV, 0, 65500, 1);
#endif #endif
/** /**
@@ -6268,45 +6330,41 @@ TYPELIB xconv_typelib=
#if defined(_DEBUG) #if defined(_DEBUG)
static MYSQL_SYSVAR_ENUM( static MYSQL_SYSVAR_ENUM(
type_conv, // name type_conv, // name
type_conv, // varname xconv, // varname
PLUGIN_VAR_RQCMDARG, // opt PLUGIN_VAR_RQCMDARG, // opt
"Unsupported types conversion.", // comment "Unsupported types conversion.", // comment
NULL, // check NULL, // check
update_connect_xconv, // update function NULL, // update function
0, // def (no) 0, // def (no)
&xconv_typelib); // typelib &xconv_typelib); // typelib
#else #else
static MYSQL_SYSVAR_ENUM( static MYSQL_SYSVAR_ENUM(
type_conv, // name type_conv, // name
type_conv, // varname xconv, // varname
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"Unsupported types conversion.", // comment "Unsupported types conversion.", // comment
NULL, // check NULL, // check
update_connect_xconv, // update function NULL, // update function
0, // def (no) 0, // def (no)
&xconv_typelib); // typelib &xconv_typelib); // typelib
#endif #endif
#if defined(XMAP) #if defined(XMAP)
// Using file mapping for indexes if true // Using file mapping for indexes if true
static MYSQL_SYSVAR_BOOL(indx_map, indx_map, PLUGIN_VAR_RQCMDARG, static MYSQL_SYSVAR_BOOL(indx_map, xmap, PLUGIN_VAR_RQCMDARG,
"Using file mapping for indexes", "Using file mapping for indexes", NULL, NULL, 0);
NULL, update_connect_xmap, 0);
#endif // XMAP #endif // XMAP
#if defined(XMSG) #if defined(XMSG)
static MYSQL_SYSVAR_STR(errmsg_dir_path, msg_path, static MYSQL_SYSVAR_STR(errmsg_dir_path, msg_path,
// PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"Path to the directory where are the message files", "Path to the directory where are the message files",
NULL, NULL, ""); // check_msg_path, update_msg_path,
NULL, NULL,
"../../../../storage/connect/"); // for testing
#endif // XMSG #endif // XMSG
// Size used for g->Sarea_Size
static MYSQL_SYSVAR_UINT(work_size, work_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"Size of the CONNECT work area.",
NULL, update_connect_worksize, SZWORK, SZWMIN, UINT_MAX, 1);
static struct st_mysql_sys_var* connect_system_variables[]= { static struct st_mysql_sys_var* connect_system_variables[]= {
MYSQL_SYSVAR(xtrace), MYSQL_SYSVAR(xtrace),
MYSQL_SYSVAR(conv_size), MYSQL_SYSVAR(conv_size),
@@ -6317,8 +6375,10 @@ static struct st_mysql_sys_var* connect_system_variables[]= {
MYSQL_SYSVAR(work_size), MYSQL_SYSVAR(work_size),
MYSQL_SYSVAR(use_tempfile), MYSQL_SYSVAR(use_tempfile),
MYSQL_SYSVAR(exact_info), MYSQL_SYSVAR(exact_info),
#if defined(XMSG) #if defined(XMSG) || defined(NEWMSG)
MYSQL_SYSVAR(msg_lang), MYSQL_SYSVAR(msg_lang),
#endif // XMSG || NEWMSG
#if defined(XMSG)
MYSQL_SYSVAR(errmsg_dir_path), MYSQL_SYSVAR(errmsg_dir_path),
#endif // XMSG #endif // XMSG
NULL NULL

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
/************ Odbconn C++ Functions Source Code File (.CPP) ************/ /************ Odbconn C++ Functions Source Code File (.CPP) ************/
/* Name: ODBCONN.CPP Version 1.9 */ /* Name: ODBCONN.CPP Version 2.0 */
/* */ /* */
/* (C) Copyright to the author Olivier BERTRAND 1998-2013 */ /* (C) Copyright to the author Olivier BERTRAND 1998-2014 */
/* */ /* */
/* This file contains the ODBC connection classes functions. */ /* This file contains the ODBC connection classes functions. */
/***********************************************************************/ /***********************************************************************/
@@ -830,7 +830,7 @@ DBX::DBX(RETCODE rc, PSZ msg)
/***********************************************************************/ /***********************************************************************/
/* This function is called by ThrowDBX. */ /* This function is called by ThrowDBX. */
/***********************************************************************/ /***********************************************************************/
void DBX::BuildErrorMessage(ODBConn* pdb, HSTMT hstmt) bool DBX::BuildErrorMessage(ODBConn* pdb, HSTMT hstmt)
{ {
if (pdb) { if (pdb) {
SWORD len; SWORD len;
@@ -843,7 +843,9 @@ void DBX::BuildErrorMessage(ODBConn* pdb, HSTMT hstmt)
rc = SQLError(pdb->m_henv, pdb->m_hdbc, hstmt, state, rc = SQLError(pdb->m_henv, pdb->m_hdbc, hstmt, state,
&native, msg, SQL_MAX_MESSAGE_LENGTH - 1, &len); &native, msg, SQL_MAX_MESSAGE_LENGTH - 1, &len);
if (rc != SQL_INVALID_HANDLE) { if (rc == SQL_NO_DATA_FOUND)
return false;
else if (rc != SQL_INVALID_HANDLE) {
// Skip non-errors // Skip non-errors
for (int i = 0; i < MAX_NUM_OF_MSG for (int i = 0; i < MAX_NUM_OF_MSG
&& (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) && (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO)
@@ -859,7 +861,7 @@ void DBX::BuildErrorMessage(ODBConn* pdb, HSTMT hstmt)
} // endfor i } // endfor i
return; return true;
} else { } else {
snprintf((char*)msg, SQL_MAX_MESSAGE_LENGTH + 1, "%s: %s", m_Msg, snprintf((char*)msg, SQL_MAX_MESSAGE_LENGTH + 1, "%s: %s", m_Msg,
MSG(BAD_HANDLE_VAL)); MSG(BAD_HANDLE_VAL));
@@ -869,7 +871,7 @@ void DBX::BuildErrorMessage(ODBConn* pdb, HSTMT hstmt)
if (trace) if (trace)
htrc("%s: rc=%hd\n", SVP(m_ErrMsg[0]), m_RC); htrc("%s: rc=%hd\n", SVP(m_ErrMsg[0]), m_RC);
return; return true;
} // endif rc } // endif rc
} else } else
@@ -878,6 +880,7 @@ void DBX::BuildErrorMessage(ODBConn* pdb, HSTMT hstmt)
if (trace) if (trace)
htrc("%s: rc=%hd (%s)\n", SVP(m_Msg), m_RC, SVP(m_ErrMsg[0])); htrc("%s: rc=%hd (%s)\n", SVP(m_Msg), m_RC, SVP(m_ErrMsg[0]));
return true;
} // end of BuildErrorMessage } // end of BuildErrorMessage
const char *DBX::GetErrorMessage(int i) const char *DBX::GetErrorMessage(int i)
@@ -910,6 +913,7 @@ ODBConn::ODBConn(PGLOBAL g, TDBODBC *tdbp)
m_Connect = NULL; m_Connect = NULL;
m_Updatable = true; m_Updatable = true;
m_Transact = false; m_Transact = false;
m_Scrollable = (tdbp) ? tdbp->Scrollable : false;
m_IDQuoteChar[0] = '"'; m_IDQuoteChar[0] = '"';
m_IDQuoteChar[1] = 0; m_IDQuoteChar[1] = 0;
//*m_ErrMsg = '\0'; //*m_ErrMsg = '\0';
@@ -932,9 +936,10 @@ bool ODBConn::Check(RETCODE rc)
if (trace) { if (trace) {
DBX x(rc); DBX x(rc);
x.BuildErrorMessage(this, m_hstmt); if (x.BuildErrorMessage(this, m_hstmt))
htrc("ODBC Success With Info, hstmt=%p %s\n", htrc("ODBC Success With Info, hstmt=%p %s\n",
m_hstmt, x.GetErrorMessage(0)); m_hstmt, x.GetErrorMessage(0));
} // endif trace } // endif trace
// Fall through // Fall through
@@ -953,8 +958,10 @@ void ODBConn::ThrowDBX(RETCODE rc, PSZ msg, HSTMT hstmt)
{ {
DBX* xp = new(m_G) DBX(rc, msg); DBX* xp = new(m_G) DBX(rc, msg);
xp->BuildErrorMessage(this, hstmt); // Don't throw if no error
throw xp; if (xp->BuildErrorMessage(this, hstmt))
throw xp;
} // end of ThrowDBX } // end of ThrowDBX
void ODBConn::ThrowDBX(PSZ msg) void ODBConn::ThrowDBX(PSZ msg)
@@ -1298,25 +1305,28 @@ int ODBConn::ExecDirectSQL(char *sql, ODBCCOL *tocols)
b = false; b = false;
if (m_hstmt) { if (m_hstmt) {
// All this did not seems to make sense and was been commented out // This is a Requery
// if (IsOpen())
// Close(SQL_CLOSE);
rc = SQLFreeStmt(m_hstmt, SQL_CLOSE); rc = SQLFreeStmt(m_hstmt, SQL_CLOSE);
if (trace && !Check(rc)) if (!Check(rc))
htrc("Error: SQLFreeStmt rc=%d\n", rc); ThrowDBX(rc, "SQLFreeStmt");
hstmt = m_hstmt;
m_hstmt = NULL; m_hstmt = NULL;
ThrowDBX(MSG(SEQUENCE_ERROR)); } // endif m_hstmt
} else {
rc = SQLAllocStmt(m_hdbc, &hstmt); rc = SQLAllocStmt(m_hdbc, &hstmt);
if (!Check(rc))
ThrowDBX(rc, "SQLAllocStmt");
if (m_Scrollable) {
rc = SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_SCROLLABLE,
(void*)SQL_SCROLLABLE, 0);
if (!Check(rc)) if (!Check(rc))
ThrowDBX(SQL_INVALID_HANDLE, "SQLAllocStmt"); ThrowDBX(rc, "SQLSetStmtAttr");
} // endif hstmt } // endif m_Scrollable
OnSetOptions(hstmt); OnSetOptions(hstmt);
b = true; b = true;
@@ -2332,6 +2342,34 @@ int ODBConn::GetCatInfo(CATPARM *cap)
return irc; return irc;
} // end of GetCatInfo } // end of GetCatInfo
/***********************************************************************/
/* Restart from beginning of result set */
/***********************************************************************/
bool ODBConn::Rewind(char *sql, ODBCCOL *tocols)
{
RETCODE rc;
if (!m_hstmt)
return false;
if (m_Scrollable) {
try {
rc = SQLFetchScroll(m_hstmt, SQL_FETCH_ABSOLUTE, 0);
if (rc != SQL_NO_DATA_FOUND)
ThrowDBX(rc, "SQLFetchScroll", m_hstmt);
} catch(DBX *x) {
strcpy(m_G->Message, x->GetErrorMessage(0));
return true;
} // end try/catch
} else if (ExecDirectSQL(sql, tocols) < 0)
return true;
return false;
} // end of Rewind
/***********************************************************************/ /***********************************************************************/
/* Disconnect connection */ /* Disconnect connection */
/***********************************************************************/ /***********************************************************************/

View File

@@ -95,7 +95,7 @@ class DBX : public BLOCK {
const char *GetErrorMessage(int i); const char *GetErrorMessage(int i);
protected: protected:
void BuildErrorMessage(ODBConn* pdb, HSTMT hstmt = SQL_NULL_HSTMT); bool BuildErrorMessage(ODBConn* pdb, HSTMT hstmt = SQL_NULL_HSTMT);
// Attributes // Attributes
RETCODE m_RC; RETCODE m_RC;
@@ -124,6 +124,7 @@ class ODBConn : public BLOCK {
forceOdbcDialog = 0x0010}; // Always display ODBC connect dialog forceOdbcDialog = 0x0010}; // Always display ODBC connect dialog
int Open(PSZ ConnectString, DWORD Options = 0); int Open(PSZ ConnectString, DWORD Options = 0);
bool Rewind(char *sql, ODBCCOL *tocols);
void Close(void); void Close(void);
// Attributes // Attributes
@@ -190,4 +191,5 @@ class ODBConn : public BLOCK {
PSZ m_Connect; PSZ m_Connect;
bool m_Updatable; bool m_Updatable;
bool m_Transact; bool m_Transact;
bool m_Scrollable;
}; // end of ODBConn class definition }; // end of ODBConn class definition

View File

@@ -113,11 +113,17 @@ void CloseXMLFile(PGLOBAL, PFBLOCK, bool);
/***********************************************************************/ /***********************************************************************/
/* Routines for file IO with error reporting to g->Message */ /* Routines for file IO with error reporting to g->Message */
/* Note: errno and strerror must be called before the message file */
/* is read in the case of XMSG compile. */
/***********************************************************************/ /***********************************************************************/
static void static void global_open_error_msg(GLOBAL *g, int msgid, const char *path,
global_open_error_msg(GLOBAL *g, int msgid, const char *path, const char *mode) const char *mode)
{ {
int len; int len, rno= (int)errno;
char errmsg[256]= "";
strncat(errmsg, strerror(errno), 256);
switch (msgid) switch (msgid)
{ {
case MSGID_CANNOT_OPEN: case MSGID_CANNOT_OPEN:
@@ -129,7 +135,7 @@ global_open_error_msg(GLOBAL *g, int msgid, const char *path, const char *mode)
case MSGID_OPEN_MODE_ERROR: case MSGID_OPEN_MODE_ERROR:
len= snprintf(g->Message, sizeof(g->Message) - 1, len= snprintf(g->Message, sizeof(g->Message) - 1,
MSG(OPEN_MODE_ERROR), // "Open(%s) error %d on %s" MSG(OPEN_MODE_ERROR), // "Open(%s) error %d on %s"
mode, (int) errno, path); mode, rno, path);
break; break;
case MSGID_OPEN_MODE_STRERROR: case MSGID_OPEN_MODE_STRERROR:
@@ -137,13 +143,13 @@ global_open_error_msg(GLOBAL *g, int msgid, const char *path, const char *mode)
strcat(strcpy(fmt, MSG(OPEN_MODE_ERROR)), ": %s"); strcat(strcpy(fmt, MSG(OPEN_MODE_ERROR)), ": %s");
len= snprintf(g->Message, sizeof(g->Message) - 1, len= snprintf(g->Message, sizeof(g->Message) - 1,
fmt, // Open(%s) error %d on %s: %s fmt, // Open(%s) error %d on %s: %s
mode, (int) errno, path, strerror(errno)); mode, rno, path, errmsg);
}break; }break;
case MSGID_OPEN_STRERROR: case MSGID_OPEN_STRERROR:
len= snprintf(g->Message, sizeof(g->Message) - 1, len= snprintf(g->Message, sizeof(g->Message) - 1,
MSG(OPEN_STRERROR), // "open error: %s" MSG(OPEN_STRERROR), // "open error: %s"
strerror(errno)); errmsg);
break; break;
case MSGID_OPEN_ERROR_AND_STRERROR: case MSGID_OPEN_ERROR_AND_STRERROR:
@@ -151,13 +157,13 @@ global_open_error_msg(GLOBAL *g, int msgid, const char *path, const char *mode)
//OPEN_ERROR does not work, as it wants mode %d (not %s) //OPEN_ERROR does not work, as it wants mode %d (not %s)
//MSG(OPEN_ERROR) "%s",// "Open error %d in mode %d on %s: %s" //MSG(OPEN_ERROR) "%s",// "Open error %d in mode %d on %s: %s"
"Open error %d in mode %s on %s: %s", "Open error %d in mode %s on %s: %s",
errno, mode, path, strerror(errno)); rno, mode, path, errmsg);
break; break;
case MSGID_OPEN_EMPTY_FILE: case MSGID_OPEN_EMPTY_FILE:
len= snprintf(g->Message, sizeof(g->Message) - 1, len= snprintf(g->Message, sizeof(g->Message) - 1,
MSG(OPEN_EMPTY_FILE), // "Opening empty file %s: %s" MSG(OPEN_EMPTY_FILE), // "Opening empty file %s: %s"
path, strerror(errno)); path, errmsg);
break; break;
default: default:
@@ -285,12 +291,9 @@ PQRYRES PlgAllocResult(PGLOBAL g, int ncol, int maxres, int ids,
// Get header from message file // Get header from message file
strncpy(cname, PlugReadMessage(g, ids + crp->Ncol, NULL), NAM_LEN); strncpy(cname, PlugReadMessage(g, ids + crp->Ncol, NULL), NAM_LEN);
cname[NAM_LEN] = 0; // for truncated long names cname[NAM_LEN] = 0; // for truncated long names
//#elif defined(WIN32) #else // !XMSG
// Get header from ressource file
// LoadString(s_hModule, ids + crp->Ncol, cname, sizeof(cname));
#else // !WIN32
GetRcString(ids + crp->Ncol, cname, sizeof(cname)); GetRcString(ids + crp->Ncol, cname, sizeof(cname));
#endif // !WIN32 #endif // !XMSG
crp->Name = (PSZ)PlugSubAlloc(g, NULL, strlen(cname) + 1); crp->Name = (PSZ)PlugSubAlloc(g, NULL, strlen(cname) + 1);
strcpy(crp->Name, cname); strcpy(crp->Name, cname);
} else } else
@@ -982,7 +985,7 @@ void PlugCleanup(PGLOBAL g, bool dofree)
/* This is the place to reset the pointer on domains. */ /* This is the place to reset the pointer on domains. */
/*******************************************************************/ /*******************************************************************/
dbuserp->Subcor = false; dbuserp->Subcor = false;
dbuserp->Step = STEP(PARSING_QUERY); dbuserp->Step = "New query"; // was STEP(PARSING_QUERY);
dbuserp->ProgMax = dbuserp->ProgCur = dbuserp->ProgSav = 0; dbuserp->ProgMax = dbuserp->ProgCur = dbuserp->ProgSav = 0;
} // endif dofree } // endif dofree

View File

@@ -2,7 +2,7 @@
/* */ /* */
/* PROGRAM NAME: PLUGUTIL */ /* PROGRAM NAME: PLUGUTIL */
/* ------------- */ /* ------------- */
/* Version 2.8 */ /* Version 2.9 */
/* */ /* */
/* COPYRIGHT: */ /* COPYRIGHT: */
/* ---------- */ /* ---------- */
@@ -76,6 +76,9 @@
#include "osutil.h" #include "osutil.h"
#include "global.h" #include "global.h"
#if defined(NEWMSG)
#include "rcmsg.h"
#endif // NEWMSG
#if defined(WIN32) #if defined(WIN32)
extern HINSTANCE s_hModule; /* Saved module handle */ extern HINSTANCE s_hModule; /* Saved module handle */
@@ -156,7 +159,9 @@ PGLOBAL PlugInit(LPCSTR Language, uint worksize)
char errmsg[256]; char errmsg[256];
sprintf(errmsg, MSG(WORK_AREA), g->Message); sprintf(errmsg, MSG(WORK_AREA), g->Message);
strcpy(g->Message, errmsg); strcpy(g->Message, errmsg);
} /* endif Sarea */ g->Sarea_Size = 0;
} else
g->Sarea_Size = worksize;
} /* endif g */ } /* endif g */
@@ -231,7 +236,7 @@ BOOL PlugIsAbsolutePath(LPCSTR path)
LPCSTR PlugSetPath(LPSTR pBuff, LPCSTR prefix, LPCSTR FileName, LPCSTR defpath) LPCSTR PlugSetPath(LPSTR pBuff, LPCSTR prefix, LPCSTR FileName, LPCSTR defpath)
{ {
char newname[_MAX_PATH]; char newname[_MAX_PATH];
char direc[_MAX_DIR], defdir[_MAX_DIR]; char direc[_MAX_DIR], defdir[_MAX_DIR], tmpdir[_MAX_DIR];
char fname[_MAX_FNAME]; char fname[_MAX_FNAME];
char ftype[_MAX_EXT]; char ftype[_MAX_EXT];
#if !defined(UNIX) && !defined(UNIV_LINUX) #if !defined(UNIX) && !defined(UNIV_LINUX)
@@ -264,7 +269,7 @@ LPCSTR PlugSetPath(LPSTR pBuff, LPCSTR prefix, LPCSTR FileName, LPCSTR defpath)
} // endif FileName } // endif FileName
#endif // !WIN32 #endif // !WIN32
if (strcmp(prefix, ".") && !PlugIsAbsolutePath(defpath)) if (prefix && strcmp(prefix, ".") && !PlugIsAbsolutePath(defpath))
{ {
char tmp[_MAX_PATH]; char tmp[_MAX_PATH];
int len= snprintf(tmp, sizeof(tmp) - 1, "%s%s%s", int len= snprintf(tmp, sizeof(tmp) - 1, "%s%s%s",
@@ -275,7 +280,19 @@ LPCSTR PlugSetPath(LPSTR pBuff, LPCSTR prefix, LPCSTR FileName, LPCSTR defpath)
} }
_splitpath(FileName, drive, direc, fname, ftype); _splitpath(FileName, drive, direc, fname, ftype);
_splitpath(defpath, defdrv, defdir, NULL, NULL);
if (defpath) {
char c = defpath[strlen(defpath) - 1];
strcpy(tmpdir, defpath);
if (c != '/' && c != '\\')
strcat(tmpdir, "/");
} else
strcpy(tmpdir, "./");
_splitpath(tmpdir, defdrv, defdir, NULL, NULL);
if (trace > 1) { if (trace > 1) {
htrc("after _splitpath: FileName=%s\n", FileName); htrc("after _splitpath: FileName=%s\n", FileName);
@@ -329,10 +346,12 @@ char *PlugReadMessage(PGLOBAL g, int mid, char *m)
//GetPrivateProfileString("Message", msglang, "Message\\english.msg", //GetPrivateProfileString("Message", msglang, "Message\\english.msg",
// msgfile, _MAX_PATH, plgini); // msgfile, _MAX_PATH, plgini);
strcat(strcat(strcpy(msgfile, msg_path), msglang()), ".msg"); //strcat(strcat(strcpy(msgfile, msg_path), msglang()), ".msg");
strcat(strcpy(buff, msglang()), ".msg");
PlugSetPath(msgfile, NULL, buff, msg_path);
if (!(mfile = fopen(msgfile, "rt"))) { if (!(mfile = fopen(msgfile, "rt"))) {
sprintf(stmsg, "Fail to open message file %s for %s", msgfile, msglang); sprintf(stmsg, "Fail to open message file %s", msgfile);
goto err; goto err;
} // endif mfile } // endif mfile
@@ -382,7 +401,7 @@ char *PlugGetMessage(PGLOBAL g, int mid)
{ {
char *msg; char *msg;
#if !defined(UNIX) && !defined(UNIV_LINUX) #if 0 // was !defined(UNIX) && !defined(UNIV_LINUX)
int n = LoadString(s_hModule, (uint)mid, (LPTSTR)stmsg, 200); int n = LoadString(s_hModule, (uint)mid, (LPTSTR)stmsg, 200);
if (n == 0) { if (n == 0) {
@@ -395,10 +414,10 @@ char *PlugGetMessage(PGLOBAL g, int mid)
return msg; return msg;
} // endif n } // endif n
#else // UNIX #else // ALL
if (!GetRcString(mid, stmsg, 200)) if (!GetRcString(mid, stmsg, 200))
sprintf(stmsg, "Message %d not found", mid); sprintf(stmsg, "Message %d not found", mid);
#endif // UNIX #endif // ALL
if (g) { if (g) {
// Called by STEP // Called by STEP

View File

@@ -1,233 +1,61 @@
/**************** RCMsg C Program Source Code File (.C) ****************/ /**************** RCMsg C Program Source Code File (.C) ****************/
/* PROGRAM NAME: RCMSG */ /* PROGRAM NAME: RCMSG */
/* ------------- */ /* ------------- */
/* Version 1.1 */ /* Version 1.3 */
/* */ /* */
/* COPYRIGHT */ /* COPYRIGHT */
/* ---------- */ /* ---------- */
/* (C) Copyright to the author Olivier BERTRAND: 2005 - 2013 */ /* (C) Copyright to the author Olivier BERTRAND: 2005 - 2014 */
/* */ /* */
/* WHAT THIS PROGRAM DOES */ /* WHAT THIS PROGRAM DOES */
/* ----------------------- */ /* ----------------------- */
/* This program simulates LoadString for Unix and Linux. */ /* This program simulates LoadString. */
/* */ /* */
/***********************************************************************/ /***********************************************************************/
#include <stdio.h> #if !defined(XMSG)
#include "resource.h" #include <stdio.h>
#include "rcmsg.h" #include <string.h>
#include "resource.h"
char *GetMsgid(int id) #include "rcmsg.h"
{ #if defined(NEWMSG)
char *p = NULL; #include "msgid.h"
#endif // NEWMSG
switch (id) {
// case IDS_00: p = "%s"; break; char *msglang(void);
#if defined(FRENCH)
case IDS_01: p = "%s: erreur d'allocation du buffer de communication de %d octets"; break; char *GetMsgid(int id)
case IDS_02: p = "%s: erreur d'allocation m<>moire tampon pour %d colonnes"; break; {
case IDS_03: p = "%s: Commande sp<73>ciale invalide"; break; char *p = NULL;
case IDS_04: p = "%s: Wrong number of arguments %d"; break;
case IDS_05: p = "%s"; break; if (!stricmp(msglang(), "french"))
case IDS_06: p = "%s: Commande d<>passant la taille du buffer interne (%d octets)"; break; switch (id) {
case IDS_07: p = "%s: Donn<6E>es (%d octets) tronqu<71>es <20> la taille du buffer"; break; #include "frids.h"
case IDS_08: p = "%s: R<>sultat d<>passant la taille du buffer interne (%d octets)"; break; #if defined(NEWMSG)
case IDS_09: p = "Erreur dans %s: %s"; break; #include "frcas.h"
case IDS_10: p = "%s: erreur d'allocating m<>moire de %d octets"; break; #endif // NEWMSG
case IDS_11: p = "%s: mauvaise cl<63> de connexion %d"; break; } // endswitch(id)
case IDS_12: p = "%s: Pas plus de %d connexions autoris<69>es pour un programme"; break;
case IDS_13: p = "%s: cl<63> de connexion invalide %d"; break; else // English
case IDS_14: p = "SafeDB: %s rc=%d"; break; switch (id) {
case IDS_15: p = "Mauvaise Dll de communication appel<65>e par le moteur %s"; break; #include "enids.h"
case IDS_TAB_01: p = "Catalogue"; break; #if defined(NEWMSG)
case IDS_TAB_02: p = "Sch<EFBFBD>ma"; break; #include "encas.h"
case IDS_TAB_03: p = "Nom"; break; #endif // NEWMSG
case IDS_TAB_04: p = "Type"; break; } // endswitch(id)
case IDS_TAB_05: p = "Remarque"; break;
case IDS_COL_01: p = "Cat_Table"; break; return p;
case IDS_COL_02: p = "Schem_Table"; break; } // end of GetMsgid
case IDS_COL_03: p = "Nom_Table"; break;
case IDS_COL_04: p = "Nom_Colonne"; break; int GetRcString(int id, char *buf, int bufsize)
case IDS_COL_05: p = "Type_Donn<EFBFBD>es"; break; {
case IDS_COL_06: p = "Nom_Type"; break; char *p = NULL, msg[32];
case IDS_COL_07: p = "Pr<EFBFBD>cision"; break;
case IDS_COL_08: p = "Longueur"; break; if (!(p = GetMsgid(id))) {
case IDS_COL_09: p = "Echelle"; break; sprintf(msg, "ID=%d unknown", id);
case IDS_COL_10: p = "Base"; break; p = msg;
case IDS_COL_11: p = "Nullifiable"; break; } // endif p
case IDS_COL_12: p = "Remarques"; break;
case IDS_INF_01: p = "Nom_Type"; break; return sprintf(buf, "%.*s", bufsize-1, p);
case IDS_INF_02: p = "Type_Donn<EFBFBD>es"; break; } // end of GetRcString
case IDS_INF_03: p = "Pr<EFBFBD>cision"; break;
case IDS_INF_04: p = "Pr<EFBFBD>fixe_Lit<EFBFBD>ral"; break; #endif // !XMSG
case IDS_INF_05: p = "Suffixe_Lit<EFBFBD>ral"; break;
case IDS_INF_06: p = "Cr<EFBFBD>ation_Params"; break;
case IDS_INF_07: p = "Nullifiable"; break;
case IDS_INF_08: p = "Maj_Minuscule"; break;
case IDS_INF_09: p = "Localisable"; break;
case IDS_INF_10: p = "Valeur_Absolue"; break;
case IDS_INF_11: p = "Monnaie"; break;
case IDS_INF_12: p = "Auto_Incr<EFBFBD>ment"; break;
case IDS_INF_13: p = "Nom_Type_Local"; break;
case IDS_INF_14: p = "Echelle_Minimum"; break;
case IDS_INF_15: p = "Echelle_Maximum"; 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<EFBFBD>ro_Cl<EFBFBD>"; break;
case IDS_PKY_06: p = "Nom_Cl<EFBFBD>"; break;
case IDS_FKY_01: p = "PKTable_Catalog"; break;
case IDS_FKY_02: p = "PKTable_Schema"; break;
case IDS_FKY_03: p = "PKTable_Name"; break;
case IDS_FKY_04: p = "PKColumn_Name"; break;
case IDS_FKY_05: p = "FKTable_Catalog"; break;
case IDS_FKY_06: p = "FKTable_Schema"; break;
case IDS_FKY_07: p = "FKTable_Name"; break;
case IDS_FKY_08: p = "FKColumn_Name"; break;
case IDS_FKY_09: p = "Key_Seq"; break;
case IDS_FKY_10: p = "Update_Rule"; break;
case IDS_FKY_11: p = "Delete_Rule"; break;
case IDS_FKY_12: p = "FK_Name"; break;
case IDS_FKY_13: p = "PK_Name"; 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_SPC_01: p = "Champ"; break;
case IDS_SPC_02: p = "Nom_Colonne"; break;
case IDS_SPC_03: p = "Type_Donn<EFBFBD>es"; break;
case IDS_SPC_04: p = "Nom_Type"; break;
case IDS_SPC_05: p = "Pr<EFBFBD>cision"; break;
case IDS_SPC_06: p = "Longueur"; break;
case IDS_SPC_07: p = "Echelle"; break;
case IDS_SPC_08: p = "Pseudo_Colonne"; break;
case IDS_DRV_01: p = "Description"; break;
case IDS_DRV_02: p = "Attributs"; break;
case IDS_DSC_01: p = "Nom"; break;
case IDS_DSC_02: p = "Description"; break;
#else // English
#if 0
case IDS_01: p = "%s: error allocating communication buffer of %d bytes"; break;
case IDS_02: p = "%s: error allocating parser memory for %d columns"; break;
case IDS_03: p = "%s: Invalid special command"; break;
case IDS_04: p = "%s: Wrong number of arguments %d"; break;
case IDS_05: p = "%s"; break;
case IDS_06: p = "%s: Command bigger than internal buffer of size = %d"; break;
case IDS_07: p = "%s: Data truncated to buffer size, actual length is %d bytes"; break;
case IDS_08: p = "%s: Result bigger than internal buffer of size = %d"; break;
case IDS_09: p = "Error in %s: %s"; break;
case IDS_10: p = "%s: error allocating instance memory of %d bytes"; break;
case IDS_11: p = "%s: wrong connection key value %d"; break;
case IDS_12: p = "%s: No more than %d connections allowed from one process"; break;
case IDS_13: p = "%s: invalid connection key value %d"; break;
case IDS_14: p = "SafeDB: %s rc=%d"; break;
case IDS_15: p = "Wrong communication Dll called for engine %s"; break;
#endif // 0
case IDS_TAB_01: p = "Table_Cat"; break;
case IDS_TAB_02: p = "Table_Schema"; break;
case IDS_TAB_03: p = "Table_Name"; break;
case IDS_TAB_04: p = "Table_Type"; break;
case IDS_TAB_05: p = "Remark"; break;
case IDS_COL_01: p = "Table_Cat"; break;
case IDS_COL_02: p = "Table_Schema"; break;
case IDS_COL_03: p = "Table_Name"; break;
case IDS_COL_04: p = "Column_Name"; break;
case IDS_COL_05: p = "Data_Type"; break;
case IDS_COL_06: p = "Type_Name"; break;
case IDS_COL_07: p = "Column_Size"; break;
case IDS_COL_08: p = "Buffer_Length"; break;
case IDS_COL_09: p = "Decimal_Digits"; break;
case IDS_COL_10: p = "Radix"; break;
case IDS_COL_11: p = "Nullable"; break;
case IDS_COL_12: p = "Remarks"; break;
#if 0
case IDS_INF_01: p = "Type_Name"; break;
case IDS_INF_02: p = "Data_Type"; break;
case IDS_INF_03: p = "Precision"; break;
case IDS_INF_04: p = "Literal_Prefix"; break;
case IDS_INF_05: p = "Literal_Suffix"; break;
case IDS_INF_06: p = "Create_Params"; break;
case IDS_INF_07: p = "Nullable"; break;
case IDS_INF_08: p = "Case_Sensitive"; break;
case IDS_INF_09: p = "Searchable"; break;
case IDS_INF_10: p = "Unsigned_Attribute"; break;
case IDS_INF_11: p = "Money"; break;
case IDS_INF_12: p = "Auto_Increment"; break;
case IDS_INF_13: p = "Local_Type_Name"; break;
case IDS_INF_14: p = "Minimum_Scale"; break;
case IDS_INF_15: p = "Maximum_Scale"; break;
#endif // 0
case IDS_PKY_01: p = "Table_Catalog"; break;
case IDS_PKY_02: p = "Table_Schema"; break;
case IDS_PKY_03: p = "Table_Name"; break;
case IDS_PKY_04: p = "Column_Name"; break;
case IDS_PKY_05: p = "Key_Seq"; break;
case IDS_PKY_06: p = "Pk_Name"; break;
#if 0
case IDS_FKY_01: p = "PKTable_Catalog"; break;
case IDS_FKY_02: p = "PKTable_Schema"; break;
case IDS_FKY_03: p = "PKTable_Name"; break;
case IDS_FKY_04: p = "PKColumn_Name"; break;
case IDS_FKY_05: p = "FKTable_Catalog"; break;
case IDS_FKY_06: p = "FKTable_Schema"; break;
case IDS_FKY_07: p = "FKTable_Name"; break;
case IDS_FKY_08: p = "FKColumn_Name"; break;
case IDS_FKY_09: p = "Key_Seq"; break;
case IDS_FKY_10: p = "Update_Rule"; break;
case IDS_FKY_11: p = "Delete_Rule"; break;
case IDS_FKY_12: p = "FK_Name"; break;
case IDS_FKY_13: p = "PK_Name"; break;
#endif // 0
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;
#if 0
case IDS_SPC_01: p = "Scope"; break;
case IDS_SPC_02: p = "Column_Name"; break;
case IDS_SPC_03: p = "Data_Type"; break;
case IDS_SPC_04: p = "Type_Name"; break;
case IDS_SPC_05: p = "Precision"; break;
case IDS_SPC_06: p = "Length"; break;
case IDS_SPC_07: p = "Scale"; break;
case IDS_SPC_08: p = "Pseudo_Column"; break;
#endif // 0
case IDS_DRV_01: p = "Description"; break;
case IDS_DRV_02: p = "Attributes"; break;
case IDS_DSC_01: p = "Name"; break;
case IDS_DSC_02: p = "Description"; break;
#endif // English
} // endswitch(id)
return p;
} // end of GetMsgid
int GetRcString(int id, char *buf, int bufsize)
{
char *p = NULL, msg[32];
if (!(p = GetMsgid(id))) {
sprintf(msg, "ID=%d unknown", id);
p = msg;
} // endif p
return sprintf(buf, "%.*s", bufsize-1, p);
} // end of GetRcString

View File

@@ -1,147 +1,46 @@
//{{NO_DEPENDENCIES}} #define IDS_TABLES 100
// Microsoft Developer Studio generated include file. #define IDS_TAB_01 101
// Used by PlgSock.rc #define IDS_TAB_02 102
// #define IDS_TAB_03 103
#if 0 #define IDS_TAB_04 104
#define IDS_00 115 #define IDS_TAB_05 105
#define IDS_01 116 #define IDS_COLUMNS 106
#define IDS_02 117 #define IDS_COL_01 107
#define IDS_03 118 #define IDS_COL_02 108
#define IDS_04 119 #define IDS_COL_03 109
#define IDS_05 120 #define IDS_COL_04 110
#define IDS_06 121 #define IDS_COL_05 111
#define IDS_07 122 #define IDS_COL_06 112
#define IDS_08 123 #define IDS_COL_07 113
#define IDS_09 124 #define IDS_COL_08 114
#define IDS_10 125 #define IDS_COL_09 115
#define IDS_11 126 #define IDS_COL_10 116
#define IDS_12 127 #define IDS_COL_11 117
#define IDS_13 128 #define IDS_COL_12 118
#define IDS_14 129 #define IDS_PKEY 119
#define IDS_15 130 #define IDS_PKY_01 120
#define IDS_16 131 #define IDS_PKY_02 121
#define IDS_17 132 #define IDS_PKY_03 122
#define IDS_18 133 #define IDS_PKY_04 123
#define IDS_19 134 #define IDS_PKY_05 124
#define IDS_20 135 #define IDS_PKY_06 125
#define IDS_21 136 #define IDS_STAT 126
#endif // 0 #define IDS_STA_01 127
#define IDS_TABLES 143 #define IDS_STA_02 128
#define IDS_TAB_01 144 #define IDS_STA_03 129
#define IDS_TAB_02 145 #define IDS_STA_04 130
#define IDS_TAB_03 146 #define IDS_STA_05 131
#define IDS_TAB_04 147 #define IDS_STA_06 132
#define IDS_TAB_05 148 #define IDS_STA_07 133
#define IDS_COLUMNS 159 #define IDS_STA_08 134
#define IDS_COL_01 160 #define IDS_STA_09 135
#define IDS_COL_02 161 #define IDS_STA_10 136
#define IDS_COL_03 162 #define IDS_STA_11 137
#define IDS_COL_04 163 #define IDS_STA_12 138
#define IDS_COL_05 164 #define IDS_STA_13 139
#define IDS_COL_06 165 #define IDS_DRIVER 140
#define IDS_COL_07 166 #define IDS_DRV_01 141
#define IDS_COL_08 167 #define IDS_DRV_02 142
#define IDS_COL_09 168 #define IDS_DSRC 143
#define IDS_COL_10 169 #define IDS_DSC_01 144
#define IDS_COL_11 170 #define IDS_DSC_02 145
#define IDS_COL_12 171
#if 0
#define IDS_INFO 175
#define IDS_INF_01 176
#define IDS_INF_02 177
#define IDS_INF_03 178
#define IDS_INF_04 179
#define IDS_INF_05 180
#define IDS_INF_06 181
#define IDS_INF_07 182
#define IDS_INF_08 183
#define IDS_INF_09 184
#define IDS_INF_10 185
#define IDS_INF_11 186
#define IDS_INF_12 187
#define IDS_INF_13 188
#define IDS_INF_14 189
#define IDS_INF_15 190
#endif // 0
#define IDS_PKEY 191
#define IDS_PKY_01 192
#define IDS_PKY_02 193
#define IDS_PKY_03 194
#define IDS_PKY_04 195
#define IDS_PKY_05 196
#define IDS_PKY_06 197
#if 0
#define IDS_FKEY 207
#define IDS_FKY_01 208
#define IDS_FKY_02 209
#define IDS_FKY_03 210
#define IDS_FKY_04 211
#define IDS_FKY_05 212
#define IDS_FKY_06 213
#define IDS_FKY_07 214
#define IDS_FKY_08 215
#define IDS_FKY_09 216
#define IDS_FKY_10 217
#define IDS_FKY_11 218
#define IDS_FKY_12 219
#define IDS_FKY_13 220
#endif // 0
#define IDS_STAT 223
#define IDS_STA_01 224
#define IDS_STA_02 225
#define IDS_STA_03 226
#define IDS_STA_04 227
#define IDS_STA_05 228
#define IDS_STA_06 229
#define IDS_STA_07 230
#define IDS_STA_08 231
#define IDS_STA_09 232
#define IDS_STA_10 233
#define IDS_STA_11 234
#define IDS_STA_12 235
#define IDS_STA_13 236
#if 0
#define IDS_SPCOLS 1247
#define IDS_SPC_01 1248
#define IDS_SPC_02 1249
#define IDS_SPC_03 1250
#define IDS_SPC_04 1251
#define IDS_SPC_05 1252
#define IDS_SPC_06 1253
#define IDS_SPC_07 1254
#define IDS_SPC_08 1255
#define IDS_CNX 1263
#define IDS_CNX_01 1264
#define IDS_CNX_02 1265
#define IDS_CNX_03 1266
#define IDS_CNX_04 1267
#define IDS_PLGCOL 1279
#define IDS_PLG_01 1280
#define IDS_PLG_02 1281
#define IDS_PLG_03 1282
#define IDS_PLG_04 1283
#define IDS_PLG_05 1284
#define IDS_PLG_06 1285
#define IDS_PLG_07 1286
#define IDS_PLG_08 1287
#define IDS_PLG_09 1288
#endif // 0
#define IDS_DRIVER 1290
#define IDS_DRV_01 1291
#define IDS_DRV_02 1292
#define IDS_DSRC 1295
#define IDS_DSC_01 1296
#define IDS_DSC_02 1297
//#define IDS_DSC_03 1298
//#define IDS_DSC_04 1299
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 1300
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1440
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@@ -161,7 +161,7 @@ class TDBFMT : public TDBCSV {
protected: protected:
virtual bool PrepareWriting(PGLOBAL g) virtual bool PrepareWriting(PGLOBAL g)
{strcpy(g->Message, "FMT is read only"); return true;} {sprintf(g->Message, MSG(TABLE_READ_ONLY), "FMT"); return true;}
// Members // Members
PSZ *FldFormat; // Field read format PSZ *FldFormat; // Field read format

View File

@@ -859,6 +859,7 @@ bool TDBMYSQL::OpenDB(PGLOBAL g)
/* Table already open, just replace it at its beginning. */ /* Table already open, just replace it at its beginning. */
/*******************************************************************/ /*******************************************************************/
Myc.Rewind(); Myc.Rewind();
N = -1;
return false; return false;
} // endif use } // endif use

View File

@@ -95,7 +95,7 @@ ODBCDEF::ODBCDEF(void)
{ {
Connect= Tabname= Tabschema= Tabcat= Srcdef= Qchar= Qrystr= Sep= NULL; Connect= Tabname= Tabschema= Tabcat= Srcdef= Qchar= Qrystr= Sep= NULL;
Catver = Options = Quoted = Maxerr = Maxres = 0; Catver = Options = Quoted = Maxerr = Maxres = 0;
Xsrc = false; Scrollable = Xsrc = false;
} // end of ODBCDEF constructor } // end of ODBCDEF constructor
/***********************************************************************/ /***********************************************************************/
@@ -129,6 +129,11 @@ bool ODBCDEF::DefineAM(PGLOBAL g, LPCSTR am, int poff)
Maxres = GetIntCatInfo("Maxres", 0); Maxres = GetIntCatInfo("Maxres", 0);
Quoted = GetIntCatInfo("Quoted", 0); Quoted = GetIntCatInfo("Quoted", 0);
Options = ODBConn::noOdbcDialog; Options = ODBConn::noOdbcDialog;
//Options = ODBConn::noOdbcDialog | ODBConn::useCursorLib;
if ((Scrollable = GetBoolCatInfo("Scrollable", false)))
Elemt = 0; // Not compatible with extended fetch
Pseudo = 2; // FILID is Ok but not ROWID Pseudo = 2; // FILID is Ok but not ROWID
return false; return false;
} // end of DefineAM } // end of DefineAM
@@ -193,6 +198,7 @@ TDBODBC::TDBODBC(PODEF tdp) : TDBASE(tdp)
Quoted = MY_MAX(0, tdp->GetQuoted()); Quoted = MY_MAX(0, tdp->GetQuoted());
Rows = tdp->GetElemt(); Rows = tdp->GetElemt();
Catver = tdp->Catver; Catver = tdp->Catver;
Scrollable = tdp->Scrollable;
} else { } else {
Connect = NULL; Connect = NULL;
TableName = NULL; TableName = NULL;
@@ -205,6 +211,7 @@ TDBODBC::TDBODBC(PODEF tdp) : TDBASE(tdp)
Quoted = 0; Quoted = 0;
Rows = 0; Rows = 0;
Catver = 0; Catver = 0;
Scrollable = false;
} // endif tdp } // endif tdp
Quote = NULL; Quote = NULL;
@@ -231,6 +238,7 @@ TDBODBC::TDBODBC(PTDBODBC tdbp) : TDBASE(tdbp)
Catalog = tdbp->Catalog; Catalog = tdbp->Catalog;
Srcdef = tdbp->Srcdef; Srcdef = tdbp->Srcdef;
Qrystr = tdbp->Qrystr; Qrystr = tdbp->Qrystr;
Scrollable = tdbp->Scrollable;
Quote = tdbp->Quote; Quote = tdbp->Quote;
Query = tdbp->Query; Query = tdbp->Query;
Count = tdbp->Count; Count = tdbp->Count;
@@ -757,6 +765,12 @@ bool TDBODBC::OpenDB(PGLOBAL g)
// To_Kindex->Reset(); // To_Kindex->Reset();
// rewind(Stream); >>>>>>> Something to be done with Cursor <<<<<<< // rewind(Stream); >>>>>>> Something to be done with Cursor <<<<<<<
if (Ocp->Rewind(Query, (PODBCCOL)Columns)) {
Ocp->Close();
return true;
} // endif Rewind
Fpos = 0;
return false; return false;
} // endif use } // endif use

View File

@@ -59,6 +59,7 @@ class DllExport ODBCDEF : public TABDEF { /* Logical table description */
int Quoted; /* Identifier quoting level */ int Quoted; /* Identifier quoting level */
int Maxerr; /* Maxerr for an Exec table */ int Maxerr; /* Maxerr for an Exec table */
int Maxres; /* Maxres for a catalog table */ int Maxres; /* Maxres for a catalog table */
bool Scrollable; /* Use scrollable cursor */
bool Xsrc; /* Execution type */ bool Xsrc; /* Execution type */
}; // end of ODBCDEF }; // end of ODBCDEF
@@ -142,6 +143,7 @@ class TDBODBC : public TDBASE {
int Rbuf; // Number of lines read in buffer int Rbuf; // Number of lines read in buffer
int BufSize; // Size of connect string buffer int BufSize; // Size of connect string buffer
int Nparm; // The number of statement parameters int Nparm; // The number of statement parameters
bool Scrollable; // Use scrollable cursor
}; // end of class TDBODBC }; // end of class TDBODBC
/***********************************************************************/ /***********************************************************************/

View File

@@ -47,13 +47,17 @@
#include "user_connect.h" #include "user_connect.h"
#include "mycat.h" #include "mycat.h"
extern uint worksize;
/****************************************************************************/ /****************************************************************************/
/* Initialize the user_connect static member. */ /* Initialize the user_connect static member. */
/****************************************************************************/ /****************************************************************************/
PCONNECT user_connect::to_users= NULL; PCONNECT user_connect::to_users= NULL;
/****************************************************************************/
/* Get the work_size SESSION variable value . */
/****************************************************************************/
uint GetWorkSize(void);
void SetWorkSize(uint);
/* -------------------------- class user_connect -------------------------- */ /* -------------------------- class user_connect -------------------------- */
/****************************************************************************/ /****************************************************************************/
@@ -90,6 +94,7 @@ user_connect::~user_connect()
bool user_connect::user_init() bool user_connect::user_init()
{ {
// Initialize Plug-like environment // Initialize Plug-like environment
uint worksize= GetWorkSize();
PACTIVITY ap= NULL; PACTIVITY ap= NULL;
PDBUSER dup= NULL; PDBUSER dup= NULL;
@@ -142,6 +147,8 @@ void user_connect::SetHandler(ha_connect *hc)
bool user_connect::CheckCleanup(void) bool user_connect::CheckCleanup(void)
{ {
if (thdp->query_id > last_query_id) { if (thdp->query_id > last_query_id) {
uint worksize= GetWorkSize();
PlugCleanup(g, true); PlugCleanup(g, true);
if (g->Sarea_Size != worksize) { if (g->Sarea_Size != worksize) {
@@ -151,7 +158,7 @@ bool user_connect::CheckCleanup(void)
// Check whether the work area size was changed // Check whether the work area size was changed
if (!(g->Sarea = PlugAllocMem(g, worksize))) { if (!(g->Sarea = PlugAllocMem(g, worksize))) {
g->Sarea = PlugAllocMem(g, g->Sarea_Size); g->Sarea = PlugAllocMem(g, g->Sarea_Size);
worksize = g->Sarea_Size; // Was too big SetWorkSize(g->Sarea_Size); // Was too big
} else } else
g->Sarea_Size = worksize; // Ok g->Sarea_Size = worksize; // Ok

View File

@@ -62,7 +62,7 @@
/***********************************************************************/ /***********************************************************************/
extern MBLOCK Nmblk; /* Used to initialize MBLOCK's */ extern MBLOCK Nmblk; /* Used to initialize MBLOCK's */
#if defined(XMAP) #if defined(XMAP)
extern bool xmap; extern my_bool xmap;
#endif // XMAP #endif // XMAP
/***********************************************************************/ /***********************************************************************/