Commit graph

379 commits

Author SHA1 Message Date
konstantin@mysql.com
daa4c2495c A fix and test case for Bug#5987 "subselect in bool function
crashes server (prepared statements)": the bug was that all boolean
items always recovered its original arguments at statement cleanup 
stage.
This collided with Item_subselect::select_transformer, which tries to 
permanently change the item tree to use a transformed subselect instead of
original one.
So we had this call sequence for prepare:
mysql_stmt_prepare -> JOIN::prepare -> 
Item_subselect::fix_fields -> the item tree gets transformed ->
Item_bool_rowready_func2::cleanup, item tree is recovered to original
state, while it shouldn't have been;
mysql_stmt_execute -> attempts to execute a broken tree -> crash.
Now instead of bluntly recovering all arguments of bool functions in 
Item_bool_rowready_func2::cleanup, we recover only those
which were changed, and do it in one place.
There still would exist a possibility for a collision with subselect
tranformation, if permanent and temporary changes were performed at the 
same stage.
But fortunately subselect transformation is always done first, so it 
doesn't conflict with the optimization done by propogate_cond_constants.
Now we have: 
mysql_stmt_prepare -> JOIN::prepare -> subselect transformation 
permanently changes the tree -> cleanup doesn't recover anything, 
because nothing was registered for recovery.
mysql_stmt_execute -> JOIN::prepare (the tree is already transformed, 
so it doesn't change), JOIN::optimize -> 
propogate_cond_constants -> temporary changes the item tree 
with constants -> JOIN::execute -> cleanup -> 
the changes done by propogate_cond_constants are recovered, as
they were registered for recovery.
2004-10-10 02:39:22 +04:00
igor@rurik.mysql.com
71f6ab7a09 Merge for Item_equal. 2004-10-09 10:34:13 -07:00
konstantin@mysql.com
234c80b689 Deployment of centralized Item change registry, step 2: Item_ref
doesn't need to have it's own recovery mechanism.
2004-10-08 19:13:09 +04:00
monty@mysql.com
62f3cd6a31 Merge with 4.0 for 4.1 release
Noteworthy:
- New HANDLER code
- New multi-update-grant-check code
- Table lock code in ha_innodb.cc was not applied
2004-10-06 19:14:33 +03:00
gluh@gluh.mysql.r18.ru
276622c92d Fix for bug #5595: NULLIF() IS NULL returns false if NULLIF() returns NULL 2004-09-18 13:06:44 +04:00
bell@sanja.is.com.ua
f797298fc5 fixed merged view fields names (BUG#5147)
support of merged VIEW over several tables added (WL#1809)
2004-09-14 19:28:29 +03:00
monty@mysql.com
31122efde7 Merge with 4.1
(Includes merge of arena code in 4.1 and 5.0)
2004-09-06 15:14:10 +03:00
bell@sanja.is.com.ua
2cf1234ba2 after review patch 2004-08-31 21:10:57 +03:00
timour@mysql.com
4d070fd92b Fix for Bug#3759
The cause of the bug is that Item_func_in::fix_fields did not fully update its
used_table_cache. This was the cause for not_null_tables in setup_conds() to be
still 0 after the call
  not_null_tables= (*conds)->not_null_tables();
As a result the condition in setup_conds()
  if ( ... (table->table->map & not_null_tables) ...)
failed, which was the cause for the ON expression not to be added to conds, and later
the optimizer couldn't detect that it could apply the OUTER JOIN ==> JOIN optimization.
2004-08-30 15:26:27 +03:00
bell@sanja.is.com.ua
18366c930c NOT elimination moved in parsing (suggested by Monty) 2004-08-29 23:14:46 +03:00
igor@rurik.mysql.com
4b760fcb94 null.test, null.result:
Added test case for bug #4256.
join_outer.result:
  Fixed bug #4256.
item_cmpfunc.h:
  Fixed inconsistency of values of used_tables_cache and
  const_item_cache for Item_func_isnull objects.
  This inconsistency caused bug #4256.
2004-08-20 23:48:30 -07:00
sergefp@mysql.com
83dc887b9d Renamed Arg_comparator::compare_int -> compare_int_signed 2004-08-18 02:37:31 +04:00
sergefp@mysql.com
fdb51f67a2 Fix for bug#4488: sign-aware equality check 2004-08-17 02:59:24 +04:00
sergefp@mysql.com
4ddeee9d2f Fix for BUG#4488: first portion: sign aware '<' and '>' comparisons. 2004-08-11 23:08:20 +04:00
monty@mysql.com
1e31199995 Merge with 4.1.3-beta 2004-07-07 11:29:39 +03:00
igor@rurik.mysql.com
64d46dfe9b After merge fix 2004-06-25 06:48:10 -07:00
dlenev@brandersnatch.localdomain
b20dca925d Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into brandersnatch.localdomain:/home/dlenev/src/mysql-4.1-bg4200
2004-06-22 19:28:01 +04:00
dlenev@brandersnatch.localdomain
eea19e5235 Fix for Bug# 4200 "Parse error on LIKE ESCAPE with parameter binding"
Now ESCAPE in LIKE will accept not only string literal but constant 
delimited expression.
2004-06-22 19:27:16 +04:00
bell@sanja.is.com.ua
a19b0f0a8e cleanup for Item_func_regex (Bug #4199) 2004-06-19 13:26:39 +03:00
igor@rurik.mysql.com
356cbe4fa2 join_nested.test, join_nested.result:
new file
Many files:
  Nested joins added.
2004-06-10 22:27:21 -07:00
monty@mysql.com
ff223db0fe Merge with 3.23 to get latest bug fixes 2004-06-10 11:59:45 +03:00
bell@sanja.is.com.ua
73964382a7 removed incorrect destructor (to prevent deleting item by recursion instead of by list scanning in case of chained OR or AND) 2004-06-03 15:38:38 +03:00
pem@mysql.comhem.se
d02d105916 Fixed (portability) bug in handler.h, and tried to silence cast warnings on some platforms. 2004-05-06 19:55:12 +02:00
bell@sanja.is.com.ua
2f4d2a0e38 fixed brocken of client_test
fixed aggregate functions in PS (BUG#3360)
2004-04-03 11:13:51 +03:00
monty@mysql.com
1448199bd7 Cleanups & safety fixes 2004-03-25 22:11:22 +02:00
bell@sanja.is.com.ua
d095d4753e after review changes 2004-03-20 13:36:26 +02:00
bell@sanja.is.com.ua
2b45b53066 DBUG_ASSERT(fixed == 1); added to val*
small optimisation in signed_literal
2004-03-18 15:14:36 +02:00
bell@sanja.is.com.ua
8035ce40ec DBUG_ASSERT(fixed == 0) added to fix_fields() 2004-03-17 14:26:26 +02:00
igor@rurik.mysql.com
bae2554367 sql_select.cc, item_cmpfunc.h:
After merge fix for collation.
2004-02-19 17:12:31 -08:00
igor@rurik.mysql.com
f18e0068ba Manual merge 2004-02-19 01:09:54 -08:00
igor@rurik.mysql.com
09fa16424a Many files:
After review fixes for Item_equal.
2004-02-18 22:21:37 -08:00
bell@sanja.is.com.ua
a66b398eb8 merge 2004-02-17 11:12:55 +02: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
bell@sanja.is.com.ua
272bd74abb memory leacks in PS with subqueries fixed (adddition to fix of BUG#2462) 2004-02-12 03:10:26 +02:00
monty@mysql.com
ce14578909 Merge with 4.0.18 2004-02-11 00:06:46 +01:00
bell@sanja.is.com.ua
cefdd4fec6 merge 2004-02-09 15:49:11 +02:00
bell@sanja.is.com.ua
69e2460bd4 fixed subquery with PS (BUG#2462)
fixed UNION preparation
2004-02-08 20:14:13 +02:00
monty@mysql.com
480b082cf4 merge 2004-02-05 18:14:48 +01:00
bar@bar.intranet.mysql.r18.ru
e2ffbc1a6a Indexes can be used for optimization if the operation
collation is the same with the index collation.
2004-02-02 17:50:14 +04:00
monty@mysql.com
0eb6070068 Code cleanup
Fixed bug in optimizer where it didn't choose right table order in some cases
2004-01-19 23:51:17 +01:00
hf@deer.(none)
1f8eb40310 Code cleanup (working on PS & cleanup() code)
Item & changed with Item* in Item_xxx constructors
tables_list.first -> get_table_list()
2004-01-19 19:53:25 +04:00
ram@gw.mysql.r18.ru
e49c7ae45f Fix for the bug #2231: string column, INDEX+LIKE, don't take the ESCAPE character.
(acctually i don't like the fix, any suggestions?)
2003-12-30 19:23:38 +04:00
hf@deer.(none)
bfe134b86f Fix for prepared statements
Here i added Item_*::cleanup() functions,
removed a lot of ~Item_*'s,
added code to restore order_list and group_list
2003-12-30 14:08:19 +04:00
igor@rurik.mysql.com
e235d796c9 Merge 2003-12-01 18:47:19 -08:00
igor@rurik.mysql.com
e282c8cc6f Merge rurik.mysql.com:/home/igor/mysql-5.0
into rurik.mysql.com:/home/igor/dev/mysql-5.0-1
2003-12-01 16:20:46 -08:00
igor@rurik.mysql.com
441ad81b48 join_outer.result, null.result, null.test:
Fixed inconsistency of values of used_tables_cache
  and const_item_cache for Item_func_isnull objects (bug #1990).
item_cmpfunc.h:
  Fixed inconsistency of values of used_tables_cache
  and const_item_cache for Item_func_isnull objects (bug #1990).
2003-12-01 16:12:05 -08:00
igor@rurik.mysql.com
dcbbbe6b94 join_outer.result, null.result, null.test, item_cmpfunc.h:
Fixed inconsistency of values of used_tables_cache and
  const_item_cache for Item_func_isnull objects (bug #1990).
2003-12-01 13:59:09 -08:00
monty@mysql.com
ede8169d24 Added missing SSL library (Should be in source distribution)
Fixed compiler warnings (a lot of hidden variables detected by the Forte compiler)
Added a lot of 'version_xxx' strings to 'show variables'
Prevent copying of TMP_TABLE_PARAM (This caused core dump bug on Solaris)
Fixed problem with printing sub selects to debug log
2003-11-28 12:18:13 +02:00
igor@rurik.mysql.com
3938ac5436 This ChangeSet Introdices Item_equal.
The objects of this class represent multiple conjunctive equalities
in where conditions: =(f1,f2,...fn) <=> f1=f2 and f2= ... and =fn.
The objects are used to generate new possibale paths to access
the tables when executing a query.
They are also used to optimize the execution plan 
chosen by the optimizer for the query.
2003-11-26 17:23:52 -08:00
monty@mashka.mysql.fi
0bd17351ca Changed mysql_next_result() to return int instead of bool
Changed ~Item_func_in() to call cleanup() (to fix memory leak)
Fixed test_multi_statements() test in client_test
2003-11-19 17:31:57 +02:00