Commit graph

423 commits

Author SHA1 Message Date
istruewing@chilla.local
e2fa2becfc Merge bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  chilla.local:/home/mydev/mysql-5.1-bug17332
2007-05-10 17:30:50 +02:00
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
cmiller@zippy.cornsilk.net
79d652408d Merge zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-unified02
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-comeng-unification
2007-05-07 16:59:03 -04:00
cmiller@zippy.cornsilk.net
bc90657830 Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug27976/my51-bug27976
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-maint
2007-05-07 09:15:28 -04:00
cmiller@zippy.cornsilk.net
424ee09a2b Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug27976/my50-bug27976
into  zippy.cornsilk.net:/home/cmiller/work/mysql/bug27976/my51-bug27976
2007-05-04 23:30:29 -04:00
cmiller@zippy.cornsilk.net
6fd39b4948 Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug27173/my50-bug27173
into  zippy.cornsilk.net:/home/cmiller/work/mysql/bug27173/my51-bug27173
2007-05-04 13:28:15 -04:00
cmiller@zippy.cornsilk.net
71a0ecee6e Merge zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-enterprise-formergecomm
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-unified02
2007-04-27 16:45:01 -04:00
istruewing@chilla.local
e327818c28 Merge bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  chilla.local:/home/mydev/mysql-5.1-wl2936-two
2007-04-27 19:09:39 +02:00
svoj@april.(none)
640b3e4e74 Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.1-build
into  mysql.com:/home/svoj/devel/mysql/merge/mysql-5.1-engines
2007-04-27 01:33:16 +05:00
iggy@recycle.(none)
13b54aa963 Bug#24732 Executables do not include Vista manifests
- Post merge cleanup.
2007-04-23 16:23:32 -04:00
svoj@june.mysql.com
40a3e2fe04 Merge mysql.com:/home/svoj/devel/mysql/warn/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/warn/mysql-5.1-engines
2007-04-19 11:59:20 +05:00
svoj@june.mysql.com
05a8c545df Merge mysql.com:/home/svoj/devel/mysql/BUG24342/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG24342/mysql-5.1-engines
2007-04-18 16:35:22 +05:00
serg@sergbook.mysql.com
6bc9bc92df Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  sergbook.mysql.com:/usr/home/serg/Abk/mysql-5.1-wl2936
2007-04-16 10:37:50 +02:00
svoj@june.mysql.com
dd8e472661 Merge mysql.com:/home/svoj/devel/mysql/BUG27516/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG27516/mysql-5.1-engines
2007-04-13 12:44:02 +05:00
istruewing@chilla.local
3f0bfd831a Merge chilla.local:/home/mydev/mysql-5.0-axmrg
into  chilla.local:/home/mydev/mysql-5.1-axmrg
2007-03-28 17:06:09 +02:00
istruewing@chilla.local
350c5da724 Merge bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  chilla.local:/home/mydev/mysql-5.1-axmrg
2007-03-28 16:57:08 +02:00
istruewing@chilla.local
942cd7d424 Bug#17332 - changing key_buffer_size on a running server
can crash under load
After review fixes
2007-03-23 11:52:45 +01:00
istruewing@chilla.local
32da2907f8 Merge bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  chilla.local:/home/mydev/mysql-5.1-bug26782
2007-03-23 10:27:33 +01:00
istruewing@chilla.local
3a726ab6e2 Bug#26782 - Patch: myisamchk -rq creates .MYI.MYI file on packed MyISAM tables
After merge fix
In conjunction with the newest 5.1 we always need to
create a real path name to be able to detect already
open tables.
2007-03-23 10:26:14 +01:00
istruewing@chilla.local
52debcb820 After merge fix 2007-03-22 21:28:28 +01:00
svoj@june.mysql.com
9f3320e2e1 Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  mysql.com:/home/svoj/devel/mysql/BUG25908/mysql-5.1-engines
2007-03-21 17:13:19 +04:00
svoj@mysql.com/june.mysql.com
b88e7e0f97 BUG#25908 - corrupted myisam table crashes server even after repair
Opening certain tables that have different definitions in .MYI and
.frm may result in a server crash.

Compare .MYI and .frm definition when myisam table is opened. In case
definitions are diffirent refuse to open such table.

No test case, since it requires broken table.
2007-03-21 17:12:30 +04:00
istruewing@chilla.local
0282c199a0 Merge chilla.local:/home/mydev/mysql-5.1-bug17332-old
into  chilla.local:/home/mydev/mysql-5.1-bug17332
2007-03-20 17:59:09 +01:00
kostja@bodhi.local
bdb10baec1 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.local:/opt/local/work/mysql-5.1-runtime
2007-03-20 00:42:11 +03:00
serg@janus.mylan
68fd66e853 wl#3700 - post-review fixes:
s/ulonglong/key_part_map/, comments
2007-03-17 00:13:25 +01:00
serg@janus.mylan
55a548cf4d Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  janus.mylan:/usr/home/serg/Abk/mysql-5.1
2007-03-16 20:33:27 +01:00
istruewing@chilla.local
02d318e4bd Merge bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  chilla.local:/home/mydev/mysql-5.1-bug26782
2007-03-16 16:44:21 +01:00
serg@janus.mylan
f813272125 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  janus.mylan:/usr/home/serg/Abk/mysql-5.1
2007-03-16 14:09:30 +01:00
istruewing@blade08.mysql.com
dba23b56e5 Merge istruewing@bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  blade08.mysql.com:/data0/istruewing/autopush/mysql-5.1-bug25289
2007-03-16 09:17:12 +01:00
holyfoot/hf@hfmain.(none)
1d0b7020b3 Merge bk@192.168.21.1:mysql-5.1
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-16 11:54:36 +04:00
istruewing@chilla.local
b1c5288e2e Merge chilla.local:/home/mydev/mysql-5.0-bug25289
into  chilla.local:/home/mydev/mysql-5.1-bug25289
2007-03-15 14:45:25 +01:00
holyfoot/hf@hfmain.(none)
6767673750 Merge bk@192.168.21.1:mysql-5.1
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-15 16:22:32 +04:00
istruewing@blade08.mysql.com
b6a66ee829 Merge istruewing@bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  blade08.mysql.com:/data0/istruewing/autopush/mysql-5.1-bug25460
2007-03-14 11:20:06 +01:00
svoj@april.(none)
94f0977b86 Merge mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-5.1-engines
2007-03-14 04:48:43 +04:00
istruewing@blade08.mysql.com
d3b7fce8cf Merge istruewing@bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  blade08.mysql.com:/data0/istruewing/autopush/mysql-5.1-bug25460
2007-03-13 17:55:04 +01:00
istruewing@chilla.local
67d97254b0 Bug#25460 - High concurrency MyISAM access causes severe mysqld crash.
The previous two patches for this bug worked together so that
no permanent table was memory mapped. The first patch tried to
avoid mapping while a table is in use. It allowed mapping only
if there was exactly one lock on the table, assuming that the
calling thread owned it. During mi_open(), a different call to
memory mapping was coded, which did not have this limitation.

The second patch tried to remove the code duplication and just
called mi_extra() from mi_open() an thus inherited the limitation.
But on open, a thread does not have a lock on the table...

A possible solution would be to check for zero or one lock.
But since I learned that it is safe to memory map a file while
normal file I/O is done on it, I removed the restriction altogether
and allow to memory map while a table is in use.

No test case. I do not see a chance to verify with the test suite
which kind of I/O is used on a table.
2007-03-13 16:43:45 +01:00
svoj@april.(none)
31329c83c0 Merge mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-5.1-engines
2007-03-13 19:05:35 +04:00
istruewing@chilla.local
3e608ee1f0 Merge chilla.local:/home/mydev/mysql-5.0-bug25673
into  chilla.local:/home/mydev/mysql-5.1-bug25673
2007-03-09 19:50:49 +01:00
gkodinov/kgeorge@magare.gmz
c03a483c51 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/WL3527-5.1-opt
2007-03-09 17:54:13 +02:00
kroki/tomash@moonlight.home
7bbea96754 Merge moonlight.home:/home/tomash/src/mysql_ab/mysql-5.1
into  moonlight.home:/home/tomash/src/mysql_ab/mysql-5.1-bug9953
2007-03-09 13:17:46 +03:00
kroki/tomash@moonlight.home
c19affef54 BUG#9953: CONVERT_TZ requires mysql.time_zone_name to be locked
The problem was that some facilities (like CONVERT_TZ() function or
server HELP statement) may require implicit access to some tables in
'mysql' database.  This access was done by ordinary means of adding
such tables to the list of tables the query is going to open.
However, if we issued LOCK TABLES before that, we would get "table
was not locked" error trying to open such implicit tables.

The solution is to treat certain tables as MySQL system tables, like
we already do for mysql.proc.  Such tables may be opened for reading
at any moment regardless of any locks in effect.  The cost of this is
that system table may be locked for writing only together with other
system tables, it is disallowed to lock system tables for writing and
have any other lock on any other table.

After this patch the following tables are treated as MySQL system
tables:
  mysql.help_category
  mysql.help_keyword
  mysql.help_relation
  mysql.help_topic
  mysql.proc (it already was)
  mysql.time_zone
  mysql.time_zone_leap_second
  mysql.time_zone_name
  mysql.time_zone_transition
  mysql.time_zone_transition_type

These tables are now opened with open_system_tables_for_read() and
closed with close_system_tables(), or one table may be opened with
open_system_table_for_update() and closed with close_thread_tables()
(the latter is used for mysql.proc table, which is updated as part of
normal MySQL server operation).  These functions may be used when
some tables were opened and locked already.

NOTE: online update of time zone tables is not possible during
replication, because there's no time zone cache flush neither on LOCK
TABLES, nor on FLUSH TABLES, so the master may serve stale time zone
data from cache, while on slave updated data will be loaded from the
time zone tables.
2007-03-09 13:12:31 +03:00
istruewing@chilla.local
651b7b7fc1 Merge chilla.local:/home/mydev/mysql-5.0-bug25673
into  chilla.local:/home/mydev/mysql-5.1-bug25673
2007-03-08 21:29:19 +01:00
istruewing@chilla.local
a44009fe75 Merge chilla.local:/home/mydev/mysql-5.0-bug25673
into  chilla.local:/home/mydev/mysql-5.1-bug25673
2007-03-08 12:13:54 +01:00
istruewing@chilla.local
ef885b8e7e Bug#26782 - Patch: myisamchk -rq creates .MYI.MYI file
on packed MyISAM tables

When fixing the indexes with "myisamchk -rq" after compressing
the table with "myisampack", an optionally supplied extension
".MYI" of the index file was not detected. The extension was
appended unconditionally. The result was ".MYI.MYI".

Now an extension is no longer appended if present already.
Thanks to David Shrewsbury for providing this patch.

Another problem was a misplaced parenthesis. We did never unpack
the file name ("~/..") and always returned a real path.

No test case. This is manually tested with the utilities
"myisampack" and "myisamchk".
2007-03-07 16:30:13 +01:00
gkodinov/kgeorge@macbook.gmz
b9c82eaa89 WL#3527: Extend IGNORE INDEX so places where index is ignored
can be specified
Currently MySQL allows one to specify what indexes to ignore during
join optimization. The scope of the current USE/FORCE/IGNORE INDEX 
statement is only the FROM clause, while all other clauses are not 
affected.

However, in certain cases, the optimizer
may incorrectly choose an index for sorting and/or grouping, and
produce an inefficient query plan.

This task provides the means to specify what indexes are
ignored/used for what operation in a more fine-grained manner, thus
making it possible to manually force a better plan. We do this
by extending the current IGNORE/USE/FORCE INDEX syntax to:

IGNORE/USE/FORCE INDEX [FOR {JOIN | ORDER | GROUP BY}]

so that:
- if no FOR is specified, the index hint will apply everywhere.
- if MySQL is started with the compatibility option --old_mode then
  an index hint without a FOR clause works as in 5.0 (i.e, the 
  index will only be ignored for JOINs, but can still be used to
  compute ORDER BY).

See the WL#3527 for further details.
2007-03-05 19:08:41 +02:00
antony@ppcg5.local
dc24473cb2 WL#2936
"Server Variables for Plugins"
  Implement support for plugins to declare server variables.
  Demonstrate functionality by removing InnoDB specific code from sql/*
  New feature for HASH - HASH_UNIQUE flag
  New feature for DYNAMIC_ARRAY - initializer accepts preallocated ptr.
  Completed support for plugin reference counting.
2007-03-02 08:43:45 -08:00
svoj@june.mysql.com
31322ca0cb Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/home/svoj/devel/mysql/BUG26238/mysql-5.1-engines
2007-03-02 14:17:55 +04:00
kent@kent-amd64.(none)
061093e08b Merge mysql.com:/home/kent/bk/mysql-5.1.16-release
into  mysql.com:/home/kent/bk/mysql-5.1.16-build
2007-02-27 20:24:43 +01:00
serg@janus.mylan
30321673a2 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  janus.mylan:/usr/home/serg/Abk/mysql-5.1
2007-02-26 16:12:40 +01:00
kent/mysqldev@mysql.com/production.mysql.com
f52c75e109 mi_open.c:
#if => #ifdef
2007-02-26 00:44:12 +01:00