Commit graph

551 commits

Author SHA1 Message Date
kostja@bodhi.local
f8d34e1030 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-14897
2006-08-30 00:45:33 +04:00
evgen@sunlight.local
f17a536e09 Fixed bug#16861: User defined variable can have a wrong value if a tmp table was
used.

Sorting by RAND() uses a temporary table in order to get a correct results.
User defined variable was set during filling the temporary table and later
on it is substituted for its value from the temporary table. Due to this
it contains the last value stored in the temporary table.

Now if the result_field is set for the Item_func_set_user_var object it 
updates variable from the result_field value when being sent to a client.

The Item_func_set_user_var::check() now accepts a use_result_field
parameter. Depending on its value the result_field or the args[0] is used
to get current value.
2006-08-22 17:37:41 +04:00
kroki/tomash@moonlight.intranet
9c1b3f5797 Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0
into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-bug21051-2
2006-08-22 12:21:37 +04:00
kroki/tomash@moonlight.intranet
0f0ddc398a BUG#21051: RESET QUERY CACHE very slow when query_cache_type=0
There were two problems: RESET QUERY CACHE took a long time to complete
and other threads were blocked during this time.

The patch does three things:
  1 fixes a bug with improper use of test-lock-test_again technique.
      AKA Double-Checked Locking is applicable here only in few places.
  2 Somewhat improves performance of RESET QUERY CACHE.
      Do my_hash_reset() instead of deleting elements one by one.  Note
      however that the slowdown also happens when inserting into sorted
      list of free blocks, should be rewritten using balanced tree.
  3 Makes RESET QUERY CACHE non-blocking.
      The patch adjusts the locking protocol of the query cache in the
      following way: it introduces a flag flush_in_progress, which is
      set when Query_cache::flush_cache() is in progress.  This call
      sets the flag on enter, and then releases the lock.  Every other
      call is able to acquire the lock, but does nothing if
      flush_in_progress is set (as if the query cache is disabled).
      The only exception is the concurrent calls to
      Query_cache::flush_cache(), that are blocked until the flush is
      over.  When leaving Query_cache::flush_cache(), the lock is
      acquired and the flag is reset, and one thread waiting on
      Query_cache::flush_cache() (if any) is notified that it may
      proceed.
2006-08-22 11:47:52 +04:00
kroki/tomash@moonlight.intranet
053c9af65b Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-release
into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-main
2006-07-27 13:47:36 +04:00
kostja@bodhi.local
f22a4ce1a1 A fix and a test case for Bug#21002 "Derived table not selecting from a
"real" table fails in JOINs".

This is a regression caused by the fix for Bug 18444. 
This fix removed the assignment of empty_c_string to table->db performed 
in add_table_to_list, as neither me nor anyone else knew what it was 
there for. Now we know it and it's covered with tests: the only case 
when a table database name can be empty is when the table is a derived 
table. The fix puts the assignment back but makes it a bit more explicit.

Additionally, finally drop sp.result.orig which was checked in by mistake.
2006-07-19 22:33:19 +04:00
evgen@moonbone.local
8394aec4e6 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  moonbone.local:/work/tmp_merge-5.0-opt-mysql
2006-07-13 18:16:16 +04:00
gkodinov/kgeorge@macbook.gmz
8f71e47a0d Merge macbook.gmz:/Users/kgeorge/mysql/work/B14553-4.1-opt
into  macbook.gmz:/Users/kgeorge/mysql/work/B14553-5.0-opt
2006-07-10 16:44:05 +03:00
gkodinov/kgeorge@macbook.gmz
893e92761f Merge rakia:mysql/4.1/B14553
into  macbook.gmz:/Users/kgeorge/mysql/work/B14553-4.1-opt
2006-07-10 16:27:04 +03:00
gkodinov/kgeorge@mysql.com/rakia.(none)
2c9f5cc706 BUG#14553: NULL in WHERE resets LAST_INSERT_ID
To make MySQL compatible with some ODBC applications, you can find
the AUTO_INCREMENT value for the last inserted row with the following query:
 SELECT * FROM tbl_name WHERE auto_col IS NULL.
This is done with a special code that replaces 'auto_col IS NULL' with
'auto_col = LAST_INSERT_ID'.
However this also resets the LAST_INSERT_ID to 0 as it uses it for a flag
so as to ensure that only the first SELECT ... WHERE auto_col IS NULL
after an INSERT has this special behaviour.
In order to avoid resetting the LAST_INSERT_ID a special flag is introduced
in the THD class. This flag is used to restrict the second and subsequent
SELECTs instead of LAST_INSERT_ID.
2006-07-10 16:27:03 +03:00
kostja@bodhi.local
f1d949a856 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-runtime-merge-41
2006-07-08 21:45:02 +04:00
kostja@bodhi.local
a2c0cdd75b Merge bodhi.local:/opt/local/work/tmp_merge
into  bodhi.local:/opt/local/work/mysql-5.0-runtime-merge-41
2006-07-08 02:30:07 +04:00
ingo@chilla.local
518fcc8f80 Merge chilla.local:/home/mydev/mysql-5.0
into  chilla.local:/home/mydev/mysql-5.0-ateam
2006-07-06 15:59:03 +02:00
ingo@mysql.com
a21071d912 Merge mysql.com:/home/mydev/mysql-4.1-bug14400
into  mysql.com:/home/mydev/mysql-5.0-ateam
2006-07-05 11:20:10 +02:00
konstantin@mysql.com
b99e11c8bd A fix and a test case for Bug#17843 "Certain stored procedures fail to
run at startup"

The server returned an error when trying to execute init-file with a 
stored procedure that could return multiple result sets to the client. 
A stored procedure can return multiple result sets if it contains 
PREPARE, SELECT, SHOW and similar statements.
   
The fix is to set client_capabilites|=CLIENT_MULTI_RESULTS in
sql_parse.cc:handle_bootstrap(). There is no "client" really, so 
nothing is ever sent. This makes init-file feature behave consistently: 
the prepared statements that can be called directly in the init-file 
can be used in a stored procedure too.

Re-committed the patch originally submitted by Per-Erik after review.
2006-07-04 23:46:15 +04:00
ingo@mysql.com
40c103478d Merge mysql.com:/home/mydev/mysql-4.0-bug14400
into  mysql.com:/home/mydev/mysql-4.1-bug14400
2006-07-04 19:10:13 +02:00
bar@mysql.com
3855520138 WL#2928 Date Translation NRE
(implemented by by Josh Chamas)
2006-07-04 17:40:40 +05:00
ingo@mysql.com
99ad23ec7c Bug#14400 - Query joins wrong rows from table which is subject of "concurrent insert"
It was possible that fetching a record by an exact key value 
(including the record pointer) could return a record with a 
different key value. This happened only if a concurrent insert 
added a record with the searched key value after the fetching 
statement locked the table for read.

The search succeded on the key value, but the record was
rejected as it was past the file length that was remembered
at start of the fetching statement. With other words it was 
rejected as being a concurrently inserted record.

The action to recover from this problem was to fetch the 
record that is pointed at by the next key of the index. 
This was repeated until a record below the file length was 
found.

I do now avoid this loop if an exact match was searched. 
If this match is beyond the file length, it is now treated 
as "key not found". There cannot be another key with the 
same record pointer.
2006-06-28 18:55:30 +02:00
sergefp@mysql.com
827fe15621 Remove deadcode in select_dumpvar::send_data() 2006-06-21 02:21:10 +04:00
ramil@mysql.com
f2899063ee after-merge fixes. 2006-06-16 14:05:58 +05:00
ramil@mysql.com
bbb991e597 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/usr/home/ram/work/4.1.b16900
2006-05-25 16:05:55 +05:00
knielsen@mysql.com
6703a50f7d BUG#18037: Fix stack corruption in THD::rollback_item_tree_changes().
Stored procedure execution sometimes placed the address of auto variables
in the list of Item changes to undo in THD::rollback_item_tree_changes().
This could cause stack corruption.
2006-05-15 12:01:55 +02:00
kroki@mysql.com
b0c1e49a11 Bug#15728: LAST_INSERT_ID function inside a stored function returns 0
Do not reset value of LAST_INSERT_ID() in sub-statement.
2006-04-21 18:55:04 +04:00
konstantin@mysql.com
c49e6f8869 Post-merge fixes. Add a new error message for max_prepared_stmt_count
limit.
2006-04-13 01:46:44 +04:00
konstantin@mysql.com
75792fc0dc Merge mysql.com:/opt/local/work/mysql-4.1-16365
into  mysql.com:/opt/local/work/mysql-5.0-merge
2006-04-12 18:30:54 +04:00
aivanov@mysql.com
612266ec90 Fixed BUG#15758: "Holding adaptive search latch in
innobase_query_caching_of_table_permitted()".
 Applied the patch due to Heikki Tuuri.
 Also removed superfluous #ifdefs.
2006-04-07 23:58:17 +04:00
konstantin@mysql.com
518993312c A fix and a test case for Bug#16365 "Prepared Statements: DoS with
too many open statements". The patch adds a new global variable
@@max_prepared_stmt_count. This variable limits the total number
of prepared statements in the server. The default value of
@@max_prepared_stmt_count is 16382. 16382 small statements
(a select against 3 tables with GROUP, ORDER and LIMIT) consume 
100MB of RAM. Once this limit has been reached, the server will 
refuse to prepare a new statement and return ER_UNKNOWN_ERROR 
(unfortunately, we can't add new errors to 4.1 without breaking 5.0). The limit is changeable after startup
and can accept any value from 0 to 1 million. In case
the new value of the limit is less than the current
statement count, no new statements can be added, while the old
still can be used. Additionally, the current count of prepared 
statements is now available through a global read-only variable 
@@prepared_stmt_count.
2006-04-07 23:37:06 +04:00
monty@mysql.com
82b77cdd90 Fixes to embedded server to be able to run tests with it
(Needed for "list of pushes" web page and autopush)
2006-02-24 18:34:15 +02:00
bar@mysql.com
cc3623aecf Many files:
Backporting character_set_filesystem from 5.0 to 5.1.
2006-02-14 08:24:01 +04:00
konstantin@mysql.com
98091b152a Merge mysql.com:/opt/local/work/mysql-4.1-root
into  mysql.com:/opt/local/work/mysql-5.0-root
2006-02-02 18:17:18 +03:00
ramil@mysql.com
c5c0caec27 Fix for bug #16900: Crash during query "reap" on OS X. 2006-02-02 10:27:48 +04:00
bell@sanja.is.com.ua
e87d5e9a83 Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1
into  sanja.is.com.ua:/home/bell/mysql/bk/work-bug8-4.1
2006-01-18 13:49:37 +02:00
bell@sanja.is.com.ua
4e931d3c45 Excluded posibility of tmp_table_param.copy_field double deletion (BUG#14851). 2006-01-18 13:48:57 +02:00
jani@ua141d10.elisa.omakaista.fi
df801decef Fixed refresh_status function. 2006-01-10 18:56:23 +02:00
kent@mysql.com
63b4ce720a Merge 2005-12-18 15:26:37 +01:00
ramil@mysql.com
04cff0d055 Fix for bug #15623: Test case rpl000001 and rpl_error_ignored_table failure on MacOSX
and bug #15668: Test 'sp-error' crashes server on Mac OS X.
2005-12-14 21:42:08 +04:00
igor@rurik.mysql.com
ad53d72033 Merge rurik.mysql.com:/home/igor/mysql-5.0
into  rurik.mysql.com:/home/igor/dev/mysql-5.0-2
2005-12-10 23:31:03 -08:00
anozdrin@mysql.com
0ff8f60b45 Patch for WL#2894: Make stored routine variables work
according to the standard.

The idea is to use Field-classes to implement stored routines
variables. Also, we should provide facade to Item-hierarchy
by Item_field class (it is necessary, since SRVs take part
in expressions).

The patch fixes the following bugs:
  - BUG#8702: Stored Procedures: No Error/Warning shown for inappropriate data 
    type matching; 
 
  - BUG#8768: Functions: For any unsigned data type, -ve values can be passed 
    and returned; 
 
  - BUG#8769: Functions: For Int datatypes, out of range values can be passed 
    and returned; 
 
  - BUG#9078: STORED PROCDURE: Decimal digits are not displayed when we use 
    DECIMAL datatype; 
 
  - BUG#9572: Stored procedures: variable type declarations ignored; 
 
  - BUG#12903: upper function does not work inside a function; 
 
  - BUG#13705: parameters to stored procedures are not verified; 
 
  - BUG#13808: ENUM type stored procedure parameter accepts non-enumerated
    data; 
 
  - BUG#13909: Varchar Stored Procedure Parameter always BINARY string (ignores 
    CHARACTER SET); 
 
  - BUG#14161: Stored procedure cannot retrieve bigint unsigned;

  - BUG#14188: BINARY variables have no 0x00 padding;

  - BUG#15148: Stored procedure variables accept non-scalar values;
2005-12-07 17:01:17 +03:00
igor@rurik.mysql.com
09e6597015 Merge rurik.mysql.com:/home/igor/mysql-5.0
into  rurik.mysql.com:/home/igor/dev/mysql-5.0-2
2005-12-02 20:42:36 -08:00
ramil@mysql.com
ab04ceafc7 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/usr/home/ram/work/mysql-5.0
2005-12-01 14:31:28 +04:00
ramil@mysql.com
37cfade0b4 Fix for bug #14304: auto_increment field incorrect set from within stored procedure (insert select). 2005-12-01 14:26:46 +04:00
timour@mysql.com
d80feb9e21 Merge mysql.com:/home/timka/mysql/src/5.0-virgin
into  mysql.com:/home/timka/mysql/src/5.0-bug-14920
2005-12-01 09:26:17 +02:00
timour@mysql.com
999a73ace5 Fix for BUG#14920 Ordering aggregated result sets corrupts resultset.
The cause of the bug was the use of end_write_group instead of end_write
in the case when ORDER BY required a temporary table, which didn't take
into account the fact that loose index scan already computes the result
of MIN/MAX aggregate functions (and performs grouping).

The solution is to call end_write instead of end_write_group and to add
the MIN/MAX functions to the list of regular functions so that their
values are inserted into the temporary table.
2005-11-30 12:52:12 +02:00
pem@mysql.com
23cab491e9 Some post-merge cleaning, and made assert THD::store_globals() work at all times. 2005-11-24 19:13:13 +01:00
igor@rurik.mysql.com
9b9f8cab4c Merge rurik.mysql.com:/home/igor/mysql-5.0
into  rurik.mysql.com:/home/igor/dev/mysql-5.0-2
2005-11-23 21:44:21 -08:00
konstantin@mysql.com
6fab184f30 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/opt/local/work/mysql-5.0-root
2005-11-23 21:20:31 +03:00
konstantin@mysql.com
b1d951d462 Always initialize THD::thread_stack: it's used in
check_stack_overrun().
2005-11-23 21:18:10 +03:00
bell@sanja.is.com.ua
1343975dda A name of macro is fixed. 2005-11-23 12:26:07 +02:00
igor@rurik.mysql.com
7b1b69a6e7 Merge rurik.mysql.com:/home/igor/mysql-5.0
into  rurik.mysql.com:/home/igor/dev/mysql-5.0-2
2005-11-22 23:00:57 -08:00
bell@sanja.is.com.ua
7d2442a160 Merge sanja.is.com.ua:/home/bell/mysql/bk/work-bug2-5.0
into  sanja.is.com.ua:/home/bell/mysql/bk/work-merge-5.0
2005-11-23 00:58:13 +02:00