Commit graph

61 commits

Author SHA1 Message Date
monty@mysql.com/narttu.mysql.fi
088e2395f1 WL#3817: Simplify string / memory area types and make things more consistent (first part)
The following type conversions was done:

- Changed byte to uchar
- Changed gptr to uchar*
- Change my_string to char *
- Change my_size_t to size_t
- Change size_s to size_t

Removed declaration of byte, gptr, my_string, my_size_t and size_s. 

Following function parameter changes was done:
- All string functions in mysys/strings was changed to use size_t
  instead of uint for string lengths.
- All read()/write() functions changed to use size_t (including vio).
- All protocoll functions changed to use size_t instead of uint
- Functions that used a pointer to a string length was changed to use size_t*
- Changed malloc(), free() and related functions from using gptr to use void *
  as this requires fewer casts in the code and is more in line with how the
  standard functions work.
- Added extra length argument to dirname_part() to return the length of the
  created string.
- Changed (at least) following functions to take uchar* as argument:
  - db_dump()
  - my_net_write()
  - net_write_command()
  - net_store_data()
  - DBUG_DUMP()
  - decimal2bin() & bin2decimal()
- Changed my_compress() and my_uncompress() to use size_t. Changed one
  argument to my_uncompress() from a pointer to a value as we only return
  one value (makes function easier to use).
- Changed type of 'pack_data' argument to packfrm() to avoid casts.
- Changed in readfrm() and writefrom(), ha_discover and handler::discover()
  the type for argument 'frmdata' to uchar** to avoid casts.
- Changed most Field functions to use uchar* instead of char* (reduced a lot of
  casts).
- Changed field->val_xxx(xxx, new_ptr) to take const pointers.

Other changes:
- Removed a lot of not needed casts
- Added a few new cast required by other changes
- Added some cast to my_multi_malloc() arguments for safety (as string lengths
  needs to be uint, not size_t).
- Fixed all calls to hash-get-key functions to use size_t*. (Needed to be done
  explicitely as this conflict was often hided by casting the function to
  hash_get_key).
- Changed some buffers to memory regions to uchar* to avoid casts.
- Changed some string lengths from uint to size_t.
- Changed field->ptr to be uchar* instead of char*. This allowed us to
  get rid of a lot of casts.
- Some changes from true -> TRUE, false -> FALSE, unsigned char -> uchar
- Include zlib.h in some files as we needed declaration of crc32()
- Changed MY_FILE_ERROR to be (size_t) -1.
- Changed many variables to hold the result of my_read() / my_write() to be
  size_t. This was needed to properly detect errors (which are
  returned as (size_t) -1).
- Removed some very old VMS code
- Changed packfrm()/unpackfrm() to not be depending on uint size
  (portability fix)
- Removed windows specific code to restore cursor position as this
  causes slowdown on windows and we should not mix read() and pread()
  calls anyway as this is not thread safe. Updated function comment to
  reflect this. Changed function that depended on original behavior of
  my_pwrite() to itself restore the cursor position (one such case).
- Added some missing checking of return value of malloc().
- Changed definition of MOD_PAD_CHAR_TO_FULL_LENGTH to avoid 'long' overflow.
- Changed type of table_def::m_size from my_size_t to ulong to reflect that
  m_size is the number of elements in the array, not a string/memory
  length.
- Moved THD::max_row_length() to table.cc (as it's not depending on THD).
  Inlined max_row_length_blob() into this function.
- More function comments
- Fixed some compiler warnings when compiled without partitions.
- Removed setting of LEX_STRING() arguments in declaration (portability fix).
- Some trivial indentation/variable name changes.
- Some trivial code simplifications:
  - Replaced some calls to alloc_root + memcpy to use
    strmake_root()/strdup_root().
  - Changed some calls from memdup() to strmake() (Safety fix)
  - Simpler loops in client-simple.c
2007-05-10 12:59:39 +03:00
kent@mysql.com/kent-amd64.(none)
226a5c833f Many files:
Changed header to GPL version 2 only
2006-12-23 20:17:15 +01:00
bar@mysql.com
6ed5cdfd57 ctype-czech.c:
Fixing wrong min_sort_char.
2006-03-23 12:15:13 +04:00
bar@mysql.com
82de23010b Merge mysql.com:/usr/home/bar/mysql-4.1.b17374
into  mysql.com:/usr/home/bar/mysql-5.0
2006-03-23 10:17:31 +04:00
bar@mysql.com
da8a68b4ca Bug#17374: select ... like 'A%' operator fails to find value on columuns with key
Fixed that LIKE worked case insensitively for latin2_czech_cs,
which was wrong for a case sensitive collation.
2006-03-20 16:28:25 +04:00
bar@mysql.com
39b0712cf7 type_binary.result, type_binary.test:
new file
mysql_fix_privilege_tables.sql, mysql_create_system_tables.sh:
  Adding true BINARY/VARBINARY: fixing "password" type, not to be 0x00-padding.
Many files:
  Adding true BINARY/VARBINARY: fixing tests not to output 0x00 bytes.
  Adding true BINARY/VARBINARY: new pad_char structure member.
ctype-bin.c:
  Adding true BINARY/VARBINARY: new pad_char structure member.
  New strnxfrm, with two trailing length bytes.
field.cc:
  Adding true BINARY/VARBINARY.
2005-10-13 19:16:19 +05:00
elliot@mysql.com
55b81af671 Merge mysql.com:/home/emurphy/src/bk-clean/mysql-4.1
into  mysql.com:/home/emurphy/src/work/mysql-5.0
2005-08-19 15:29:30 -04:00
elliot@mysql.com
197782605f BUG#11338 (logging of prepared statement w/ blob type)
In cp932, '\' character can be the second byte in a 
multi-byte character stream. This makes it difficult to use
mysql_escape_string. Added flag to indicate which languages allow
'\' as second byte of multibyte sequence so that when putting a prepared
statement into the binlog we can decide at runtime whether hex encoding
is really needed.
2005-08-17 04:26:32 -04:00
bar@mysql.com
2df945d87b Bug#8610: The ucs2_turkish_ci collation fails with upper('i')
UPPER/LOWER now can return a string with different length.

mi_test1.c:
  Adding new arguments.
Many files:
  Changeing caseup/casedn to return a result with different
  length than argument.
sql_string.h:
  Removing unused method,
mysql_priv.h:
  Removing unused method
2005-06-06 16:54:15 +05:00
bar@noter.(none)
153b928c10 Bug#9509 Optimizer: wrong result after AND with latin1_german2_ci
We cannot propagate constants with tricky collations.
2005-05-05 21:13:57 +05:00
bar@mysql.com
8828884f4c CSC#4385: slow sorting for UTF8 large table:
my_strnxfrm_utf8 now requires 2 bytes per character
in filesort key, instead of 3 bytes per character.
Shorter filesort keys make sorting faster.
2005-01-26 16:34:09 +04:00
konstantin@mysql.com
a676498977 manual merge 2005-01-13 17:31:49 +03:00
bar@mysql.com
e3d6e6736b bug#7284: strnxfrm returns different results for equal strings 2005-01-13 18:12:04 +04:00
monty@mysql.com
d71c030587 After merge fixes 2004-12-31 00:44:00 +02:00
monty@mysql.com
77207d19f2 Merge with new VARCHAR code 2004-12-06 19:18:35 +02:00
monty@mysql.com
67ce247965 Add support for up to VARCHAR (size up to 65535)
Renamed HA_VAR_LENGTH to HA_VAR_LENGTH_PART
Renamed in all files FIELD_TYPE_STRING and FIELD_TYPE_VAR_STRING to MYSQL_TYPE_STRING and MYSQL_TYPE_VAR_STRING to make it easy to catch all possible errors
Added support for VARCHAR KEYS to heap
Removed support for ISAM
Now only long VARCHAR columns are changed to TEXT on demand (not CHAR)
Internal temporary files can now use fixed length tables if the used VARCHAR columns are short
2004-12-06 02:00:37 +02:00
bar@mysql.com
e3b94d4ef5 Bug #6737: REGEXP gives wrong result with case sensitive collation:
- A new flag MY_CS_CSSORT was introduced for case sensitivity.
- Item_func_regexp doesn't substiture ICASE not only
  for binary collations but for case sensitive collations as well.
2004-11-22 11:58:40 +04:00
bar@mysql.com
cbd3e61c8d Unicode collation algorithm: contraction support.
E.g. 'Ch' is treated as a separate letter in Czech,
not as a combination of C+h.
2004-06-12 20:36:58 +05:00
serg@serg.mylan
035e03c1f6 merged 2004-06-11 20:55:08 +02:00
bar@mysql.com
c64d93b274 Allocate memory when a character set is requested:
- For simple character sets: from_uni convertion table.
- For UCA: alternative weight arrays.
Use mbminlen instead of MY_CS_NONTEXT
2004-06-11 16:29:16 +05:00
serg@serg.mylan
78fa465b92 bug#3964 and related issues: FTB problems with charsets where one byte can match many
correct prefix compare with my_strnncoll
2004-06-10 21:18:57 +02:00
bar@mysql.com
34d413a6a0 Optimization to use less memory. 2004-06-10 19:10:21 +05:00
bar@bar.intranet.mysql.r18.ru
8962ed3c7d WL#916: Unicode collations for some languages 2004-06-08 17:56:15 +05:00
bar@bar.intranet.mysql.r18.ru
391d5629f6 Preparation for user-defined Unicode collations:
weights data now comes from a static variables
but from the charset structure.
2004-05-25 17:40:20 +05:00
bar@bar.intranet.mysql.r18.ru
df8e3eac45 ctype-win1250ch.c, ctype-czech.c:
Czech collations were renamed to _cs
Index.xml:
  Czech collation were renamed to _cs
2004-05-07 10:24:12 +05:00
monty@mysql.com
ebc3b3afac BTREE-indexes in HEAP tables can now be used to optimize ORDER BY
Don't read character set files if we are using only the default charset. In most cases the user will not anymore get a warning about missing character set files
Compare strings with space extend instead of space strip. Now the following comparisons holds:  "a" == "a " and "a\t" < "a". (Bug #3152).
Note: Because of the above fix, one has to do a REPAIR on any table that has an ascii character < 32 last in a CHAR/VARCHAR/TEXT columns.
2004-03-25 15:05:01 +02:00
bar@bar.intranet.mysql.r18.ru
fc17aad767 min_sort_char was added, for the future UCA implementation.
UCS2 now has its own my_like_range function.
2004-03-19 10:00:46 +04:00
monty@mysql.com
f43093ec0e After merge fixes
Added more DBUG statements
Ensure that we are comparing end space with BINARY strings
Use 'any_db' instead of '' to mean any database. (For HANDLER command)
Only strip ' ' when comparing CHAR, not other space-like characters (like \t)
2004-02-16 10:03:25 +02:00
bar@bar.intranet.mysql.r18.ru
f802ec0215 UCS-2 aligning 0xAA -> 0x00AA 2004-01-19 19:16:30 +04:00
bar@bar.mysql.r18.ru
e0a0790ebb Fixed that multibyte charsets didn't honor multibyte
sequence boundaries in functions LIKE and LOCATE in
the case of "binary" collation. Comparison was done
like if the strings were just a binary strings without
character set assumption.
2003-09-19 15:18:19 +05:00
bar@bar.mysql.r18.ru
31d0d44919 --with-charset was not up to date
ctype_ucs2 and ctype_ujis were skipped in mistake
2003-05-26 20:22:23 +05:00
bar@bar.mysql.r18.ru
8192d169a2 CHARSET_INFO structure reorganization for easier maintainance 2003-05-23 17:45:52 +05:00
bar@bar.mysql.r18.ru
2b1e1f6494 Variables were rename, binary collation names were added
Fixed that SHOW CHARACTER SET displayed non-dynamic charsets even if they were not really compiled
2003-05-22 17:20:19 +05:00
bar@bar.mysql.r18.ru
ca1a736296 mbcharlen() is now used instead of ismbhead(). The last one has been removed. 2003-04-01 15:52:09 +05:00
bar@bar.mysql.r18.ru
0002beb7a4 my_strncasecmp() is not used anymore. Use my_strncoll() instead. 2003-04-01 14:17:28 +05:00
bar@bar.mysql.r18.ru
5b50426f8f Some optimization in CHARSET_INFO:
We don't need separate hash_sort() and hash_caseup()
  We don't need tosort(). strnxfrm will do the same.
2003-04-01 12:45:16 +05:00
bar@bar.mysql.r18.ru
4e06f1f5bd German Phone book collation is always compiled
Some collation names have been renamed
2003-03-26 13:27:19 +04:00
bar@bar.mysql.r18.ru
b009386fa4 Every charset now have its own parser state arrays 2003-03-14 18:08:12 +04:00
bar@bar.mysql.r18.ru
f5d6b4952f New fields in CHARSET_INFO structure to optimize searching for
binary and primary collations in the future
2003-03-05 16:43:10 +04:00
bar@bar.mysql.r18.ru
24be8669a0 New functions in CHARSET_INFO structure 2003-01-31 16:22:22 +04:00
bar@bar.mysql.r18.ru
52c053ca9b New CHARSET_INFO function to compare strings regardless to trailing spaces 2003-01-31 13:48:35 +04:00
bar@bar.mysql.r18.ru
a292d4f632 New "fill" function in charset_info_st structure 2003-01-28 14:58:06 +04:00
bar@bar.mysql.r18.ru
2a41e291dc New scan() function in CHARSET_INFO structure (not used yet) 2003-01-17 18:14:54 +04:00
bar@bar.mysql.r18.ru
5743f94b57 All charsets now have strnxfrm.
Some function names have been renamed to be more self-descriptive
2003-01-15 18:06:07 +04:00
bar@bar.mysql.r18.ru
a172e5ad2a Some changes to separate charset and collation terms 2003-01-04 14:12:20 +04:00
bar@bar.mysql.r18.ru
a345447ad0 Preparing for charset dependant int10_to_str 2002-12-11 12:30:05 +04:00
bar@bar.mysql.r18.ru
61141a30ee Preparing to use better string-to-number functions to avoid c_ptr() call,
wich is slower and is not ucs2 compatible
2002-11-27 15:47:39 +04:00
bar@bar.mysql.r18.ru
41554da7ff move like_range into CHARSET_INFO structure 2002-11-15 11:44:23 +04:00
bar@bar.mysql.r18.ru
237e2ca001 New wildcmp() function in CHARSET_INFO structure 2002-11-14 16:07:29 +04:00
bar@bar.mysql.r18.ru
ae7d6838b2 Preparing to embed string to number conversion functions into charset structure 2002-11-13 17:13:29 +04:00