1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-13 02:22:51 +03:00
Commit Graph

20681 Commits

Author SHA1 Message Date
402bc523b2 Bug#36540: CREATE EVENT and ALTER EVENT statements fail with large server_id
The problem is that creating a event could fail if the value of
the variable server_id didn't fit in the originator column of
the event system table. The cause is two-fold: it was possible
to set server_id to a value outside the documented range (from
0 to 2^32-1) and the originator column of the event table didn't
have enough room for values in this range.

The log tables (general_log and slow_log) also don't have a proper
column type to store the server_id and having a large server_id
value could prevent queries from being logged.

The solution is to ensure that all system tables that store the
server_id value have a proper column type (int unsigned) and that
the variable can't be set to a value that is not within the range.

mysql-test/r/events_bugs.result:
  Add test case result for Bug#36540
mysql-test/r/log_tables.result:
  Update column type.
mysql-test/r/system_mysql_db.result:
  Update column type.
mysql-test/r/variables.result:
  Add test case result for server_id value range.
mysql-test/suite/sys_vars/r/server_id_basic_64.result:
  Update test case results.
mysql-test/t/events_bugs.test:
  Add test case for Bug#36540
mysql-test/t/log_tables.test:
  Fix column type.
mysql-test/t/variables.test:
  Add test case for server_id value range.
scripts/mysql_system_tables.sql:
  Columns that store the server_id value must be of type INT UNSIGNED,
  fix event (originator), general_log and slow_log (server_id) tables
  in accordance.
scripts/mysql_system_tables_fix.sql:
  Columns that store the server_id value must be of type INT UNSIGNED,
  fix event (originator), general_log and slow_log (server_id) tables
  in accordance.
sql/mysqld.cc:
  Set min and max values for the server_id variable.
  Unfortunately we can't easily change server_id variable type
  from ulong to uint32 because of the sys_var classes.
2009-03-11 17:30:56 -03:00
fd35040890 Change optimizer_switch from no_xxx to xxx=on/xx=off.
mysql-test/r/index_merge_myisam.result:
  Testcases
mysql-test/t/index_merge_myisam.test:
  Testcases
sql/strfunc.cc:
  Change optimizer_switch from no_xxx to xxx=on/xx=off.
  - Add functions to parse the new syntax
2009-03-11 23:13:39 +03:00
ba1b5eb4b5 merged bug 43354 to 5.1-bugteam 2009-03-11 14:29:59 +02:00
d3d6f4fdad Bug #43354: Use key hint can crash server in explain extended query
The copy of the original arguments of a aggregate function was not
initialized until after fix_fields().
Sometimes (e.g. when there's an error processing the statement)
the print() can be called with no corresponding fix_fields() call.
      
Fixed by adding a check if the Item is fixed before using the arguments
copy.

mysql-test/r/explain.result:
  Bug #43354: test case
mysql-test/t/explain.test:
  Bug #43354: test case
sql/item_sum.cc:
  Bug #43354: use the argument list copy only if it's initialized
2009-03-11 14:10:44 +02:00
0614532a92 Merge of fix into actual tree 2009-03-10 18:21:35 +01:00
b5804db393 Merge from bugfix tree. 2009-03-10 12:53:43 -04:00
8b055e2444 Merge into actual tree 2009-03-10 16:54:24 +01:00
632a33f8fc Merge 2009-03-10 00:53:38 +03:00
89a1db2bd2 Bug#42635: mysqldump includes views that were excluded using the \
--ignore-table option

mysqldump would correctly omit temporary tables for views, but would
incorrectly still emit all CREATE VIEW statements.

Backport a fix from 5.1, where we capture the names we want to emit
views for in one pass (the placeholder tables) and in the pass where
we actually emit the views, we don't emit a view if it wasn't in that
list.
2009-03-09 16:58:47 -04:00
1c4fc84c9e automerge 2009-03-09 15:57:34 +01:00
e7afab7245 Bug#40657: assertion with out of range variables and traditional sql_mode
test-fixes for 32-bit

mysql-test/t/variables.test:
  Test for 10351 ("Max_Heap_Table_Size cannot be set to 4 gb")
  now throws a warning on 32-bit, as it should. As we're not
  actually interested in the warning but only in whether the
  variable is set to a correct value afterwards, we disable
  warnings for the duration of that test case so we won't have
  to split the test into a 32-bit and a 64-bit flavour for no
  real reason.
2009-03-09 15:26:53 +01:00
ec5e3b624c merging with latest changes. 2009-03-09 13:58:48 +05:30
cee070e1bb manual merge 2009-03-06 16:11:34 +01:00
2417d31045 Merge 5.0 -> 5.1 of fix for Bug#42003 and Bug#43114 2009-03-06 15:56:17 +01:00
0183d4d842 Merge of fix for Bug#42003 and Bug#43114 into more actual GCA tree
modifications according to the reviews are included
2009-03-05 14:35:03 +01:00
53802ae6ca Bug#41465: confusing error message when comment is too long
The problem was that the server was trying to use the unknown
error format string (ER_UNKNOWN_ERROR) to print messages about
comments being too long, but the said format string does not
accept arguments and will always default to "Unknown error".

The solution is to introduce new error messages which are
specific to the error conditions so that server wants to
signal -- this also means that it's possible to translate
those messages.

mysql-test/r/strict.result:
  Update test case result.
mysql-test/t/strict.test:
  Update test case with new errors.
sql/share/errmsg.txt:
  Introduce new errors for long comments.
sql/unireg.cc:
  Use new errors.
2009-03-05 08:20:01 -03:00
d40b1be906 Automerge 2009-03-06 10:52:43 +01:00
ddaede8087 Bug#39843 DELETE requires write access to table in subquery in where clause
An unnecessarily restrictive lock were taken on sub-SELECTs during DELETE.

During parsing, a global structure is reused for sub-SELECTs and the attribute
keeping track of lock options were not reset properly.
This patch introduces a new attribute to keep track on the syntactical lock
option elements found in a sub-SELECT and then sets the lock options accordingly.

Now the sub-SELECTs will try to acquire a READ lock if possible
instead of a WRITE lock as inherited from the outer DELETE statement.


mysql-test/r/lock.result:
  Added test case for bug39843
mysql-test/t/lock.test:
  Added test case for bug39843
sql/sql_lex.cc:
  * Reset member variable lock_option on each new query.
sql/sql_lex.h:
  * Introduced new member variable 'lock_option' which is keeping track
    of the syntactical lock option of a (sub-)select query.
sql/sql_parse.cc:
  * Wrote comments to functions.
sql/sql_yacc.yy:
  * Introduced an attribute to keep track of syntactical lock options
    in sub-selects.
  * Made sure that the default value TL_READ_DEFAULT is at the begining
    of each subselect-rule.
2009-03-05 15:22:33 +01:00
3ef86918a2 Bug#41030 Wrong meta data (incorrect fieldlen)
set user variable max length on
fix_length_and_dec() stage
using real value length.


mysql-test/r/variables.result:
  test result
mysql-test/t/variables.test:
  test case
sql/item_func.cc:
  set user variable max length on
  fix_length_and_dec() stage
  using real value length.
2009-03-05 15:34:02 +04:00
b4fdb8aec1 BUG#37051 Replication rules not evaluated correctly
Backporting patch to 5.0.
2009-03-05 18:10:44 +08:00
cd5c40ecd4 Bug 43258 merged from gca 2009-03-04 15:56:13 +01:00
9f493ea98a bug#43258 prepared for push on 5.1 2009-03-04 13:45:49 +01:00
161b8d0b2f Fix for bug #40702 "skip_name_resolve fails sporadically on
pushbuild".

Under new MTR the server is not restarted for every test, so
threads started in the previous test case can show up in the
results of SHOW PROCESSLIST statement in this test, causing a
test failure.

Since we are not really interested in results of SHOW PROCESSLIST
in this test but rather in fact that server doesn't crash when
executing this statement this fix simply disables output of this
statement.

mysql-test/r/skip_name_resolve.result:
  Disable SHOW PROCESSLIST output to make test immune to threads
  started in previous test cases.
mysql-test/t/skip_name_resolve.test:
  Disable SHOW PROCESSLIST output to make test immune to threads
  started in previous test cases.
2009-03-04 15:33:56 +03:00
aa13f72b90 Bug#41305 server crashes when inserting duplicate row into a merge table
This problem comes while inserting a duplicate row in merge table 
without key but the child table has a primary key. 
While forming the error message handler tries to locate the key field
which is creating this problem but as there is no key on the merge
table there is a segmentation fault.

mysql-test/r/merge.result:
  Updated results with new test for this bug.
mysql-test/t/merge.test:
  Added new test to test error generated from a key on child table 
  where merge table doesn't have any key.
storage/myisammrg/ha_myisammrg.cc:
  Added a new check to see if the value of error key is higher than 
  the number of key in merge table and if it is the error key set 
  to MAX_KEY. The error message generation routine treats MAX_KEY as 
  unknown key and doesn't tries to access this in key_info.
2009-03-04 14:48:07 +05:30
140cc614c9 Last slice of fix for Bug#42003 tests missing the disconnect of connections <> default
+ Fix for Bug#43114 wait_until_count_sessions too restrictive, random PB failures
+ Removal of a lot of other weaknesses found
+ modifications according to review
2009-03-03 21:34:18 +01:00
82c21e46f6 Merged from gca branch (bug 42711) 2009-03-02 14:26:57 +01:00
f61230131b Merged from gca branch (bug 42711) 2009-03-02 14:03:01 +01:00
f5d1109c11 Prepared BUG#42711 for push on 5.1 2009-03-02 11:22:38 +01:00
ef165e36d9 Prepared BUG#42711 for push 2009-03-02 11:03:13 +01:00
fe09326edf automerge 2009-02-27 21:43:43 +01:00
2bc070a05a merged the fix for bug 41610 to 5.1-bugteam 2009-02-27 17:07:27 +02:00
15760fe9d8 Bug #41610: key_infix_len can be overwritten causing some group by queries to
return no rows

The algorithm of determining the best key for loose index scan is doing a loop
over the available indexes and selects the one that has the best cost.
It retrieves the parameters of the current index into a set of variables.
If the cost of using the current index is lower than the best cost so far it 
copies these variables into another set of variables that contain the 
information for the best index so far.
After having checked all the indexes it uses these variables (outside of the 
index loop) to create the table read plan object instance.
The was a single omission : the key_infix/key_infix_len variables were used 
outside of the loop without being preserved in the loop for the best index 
so far.
This causes these variables to get overwritten by the next index(es) checked.
Fixed by adding variables to hold the data for the current index, passing 
the new variables to the function that assigns values to them and copying 
the new variables into the existing ones when selecting a new current best 
index.
To avoid further such problems moved the declarations of the variables used 
to keep information about the current index inside the loop's compound 
statement.

mysql-test/r/group_min_max.result:
  Bug #41610: test case
mysql-test/t/group_min_max.test:
  Bug #41610: test case
sql/opt_range.cc:
  Bug #41610: copy the infix data for the current best index
2009-02-27 15:25:06 +02:00
1dc084f358 merge. 2009-02-27 10:45:19 +02:00
897ea3744a merge 2009-02-27 10:43:06 +02:00
1f847d1604 Bug#41893: main.variables mysql-test fails in new variable like '%alloc%' is added.
Added ORDER BY clause to I_S query to ensure consistent order.
There were differences between 5.1 and 6.0 output.  Correcting it 5.1.
2009-02-27 10:24:57 +02:00
8726343624 Merge 5.0->5.1 2009-02-27 09:47:29 +02:00
ee77216803 addendum to the fix for bug #41354: fixed the error returned by SELECT * 2009-02-27 09:41:39 +02:00
4ea27a3cdf Merged from gca-branch (bug 42567) 2009-02-26 19:21:51 +01:00
f3c6ff1f7a null-merged the fix and kept the test for bug #41354 from 5.0-bugteam 2009-02-26 19:20:50 +02:00
2cca1991bd Prepared for push (BUG#42567) 2009-02-26 18:17:06 +01:00
a9d707037a Bug #41354: Access control is bypassed when all columns
of a view are selected by * wildcard

Backported a part of the fix for 36086 to 5.0

mysql-test/r/view_grant.result:
  Bug #41354: test case
mysql-test/t/view_grant.test:
  Bug #41354: test case
sql/sql_acl.cc:
  Bug #41354: return table error when no access and *
sql/sql_base.cc:
  Bug #41354: backported the check in bug 36086 to 5.0
2009-02-26 19:00:44 +02:00
afdf8a447f Bug#41893 - main.variables mysql-test fails if new variable like '%alloc%' is added.
Fixed a typo in the bug fix patch.
2009-02-26 18:00:47 +02:00
6877425f2f Bug#41893: main.variables mysql-test fails if new variable like '%alloc%' is added.
Started fix in 5.0 as the same issue is here.
Revising queries used given what appears to be the scope of this test to only select the manipulated variables.
Added tests for values that are / are not multiples of 1024 to test rounding / constraints.
This behavior is not currently documented (docs bug has been opened)
2009-02-26 10:57:33 +02:00
00ac598a44 Prepared for push (BUG#43110) 2009-02-25 16:53:49 +01:00
b19b8afe6c Merged from gca-branch (bug 43111) 2009-02-25 14:52:33 +01:00
a357073774 Merged from gca-branch (bug 43111) 2009-02-25 14:49:59 +01:00
b253edff98 Merged from 5.0
bug#43111
2009-02-25 12:47:28 +01:00
5a6fa28226 Prepare for push of BUG#43111 2009-02-25 11:37:30 +01:00
620438fdae backport the fix for bug #37191 to 5.1-bugteam 2009-02-25 12:19:29 +02:00
dc69c3439f merged bug 31060 to 5.1-bugteam 2009-02-25 11:09:41 +02:00