diff options
author | monty@mysql.com <> | 2004-06-18 03:02:29 +0300 |
---|---|---|
committer | monty@mysql.com <> | 2004-06-18 03:02:29 +0300 |
commit | fd0153304dc0e2ada1144fc79f117f02bdcd132b (patch) | |
tree | bbef0bb6fad673089610709f1981fd9f249b7833 /myisam | |
parent | 2f76413e5a457741e33ca023a860da8fc1dcf297 (diff) | |
download | mariadb-git-fd0153304dc0e2ada1144fc79f117f02bdcd132b.tar.gz |
Fixed some byte order bugs with prepared statements on machines with high-byte-first. (Bug #4173)
Fixed problem with NULL and derived tables (Bug #4097)
Cleanup of new pushed code
Diffstat (limited to 'myisam')
-rw-r--r-- | myisam/ft_boolean_search.c | 9 | ||||
-rw-r--r-- | myisam/mi_check.c | 2 | ||||
-rw-r--r-- | myisam/mi_unique.c | 9 | ||||
-rw-r--r-- | myisam/myisamchk.c | 8 |
4 files changed, 15 insertions, 13 deletions
diff --git a/myisam/ft_boolean_search.c b/myisam/ft_boolean_search.c index cac4d08f5d6..196cb5c21fb 100644 --- a/myisam/ft_boolean_search.c +++ b/myisam/ft_boolean_search.c @@ -53,10 +53,11 @@ static double _nwghts[11]= -3.796875000000000}; static double *nwghts=_nwghts+5; /* nwghts[i] = -0.5*1.5**i */ -#define FTB_FLAG_TRUNC 1 /* */ -#define FTB_FLAG_YES 2 /* no two from these three */ -#define FTB_FLAG_NO 4 /* YES, NO, WONLY */ -#define FTB_FLAG_WONLY 8 /* should be _ever_ set both */ +#define FTB_FLAG_TRUNC 1 +/* At most one of the following flags can be set */ +#define FTB_FLAG_YES 2 +#define FTB_FLAG_NO 4 +#define FTB_FLAG_WONLY 8 typedef struct st_ftb_expr FTB_EXPR; struct st_ftb_expr diff --git a/myisam/mi_check.c b/myisam/mi_check.c index 96a26fd90f1..052fa55a559 100644 --- a/myisam/mi_check.c +++ b/myisam/mi_check.c @@ -376,8 +376,6 @@ int chk_key(MI_CHECK *param, register MI_INFO *info) for (key= 0,keyinfo= &share->keyinfo[0]; key < share->base.keys ; rec_per_key_part+=keyinfo->keysegs, key++, keyinfo++) { - if (*killed_ptr(param)) - DBUG_RETURN(-1); param->key_crc[key]=0; if (!(((ulonglong) 1 << key) & share->state.key_map)) { diff --git a/myisam/mi_unique.c b/myisam/mi_unique.c index 06d50e6905b..77e967e52e2 100644 --- a/myisam/mi_unique.c +++ b/myisam/mi_unique.c @@ -69,7 +69,7 @@ my_bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, byte *record, ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const byte *record) { const byte *pos, *end; - ulong crc= 0; + ha_checksum crc= 0; ulong seed= 4; HA_KEYSEG *keyseg; @@ -109,8 +109,11 @@ ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const byte *record) end= pos+length; if (type == HA_KEYTYPE_TEXT || type == HA_KEYTYPE_VARTEXT) { + ulong tmp= 0; keyseg->charset->coll->hash_sort(keyseg->charset, - (const uchar*) pos, length, &crc, &seed); + (const uchar*) pos, length, &tmp, + &seed); + crc^= tmp; } else while (pos != end) @@ -118,7 +121,7 @@ ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const byte *record) (((uchar) *(uchar*) pos++))) + (crc >> (8*sizeof(ha_checksum)-8)); } - return (ha_checksum)crc; + return crc; } /* diff --git a/myisam/myisamchk.c b/myisam/myisamchk.c index ef4b7a5ff87..c4b5acadc92 100644 --- a/myisam/myisamchk.c +++ b/myisam/myisamchk.c @@ -362,13 +362,13 @@ static void usage(void) this option is deprecated; you can set variables\n\ directly with '--variable-name=value'.\n\ -t, --tmpdir=path Path for temporary files. Multiple paths can be\n\ - specified, separated by " + specified, separated by "); #if defined( __WIN__) || defined(OS2) || defined(__NETWARE__) - "semicolon (;)" + puts("semicolon (;)"); #else - "colon (:)" + puts("colon (:)"); #endif - ", they will be used\n\ + puts(", they will be used\n\ in a round-robin fashion.\n\ -s, --silent Only print errors. One can use two -s to make\n\ myisamchk very silent.\n\ |