out of order". (final version)
Now instead of binding Item_trigger_field to TABLE objects during
trigger definition parsing at table open, we perform pass through
special list of all such objects in trigger. This allows easily check
all references to fields in old/new version of row in trigger during
execution of CREATE TRIGGER statement (this is more courtesy for users
since we can't check everything anyway).
We also report that such reference is bad by returning error from
Item_trigger_field::fix_fields() method (instead of setup_field())
This means that if trigger is broken we will bark during trigger
execution instead of trigger definition parsing at table open.
(i.e. now we allow to open tables with broken triggers).
mysql-test/r/trigger.result:
Added test which attempts to create trigger for table referencing to
field which does not exist in this table.
mysql-test/t/trigger.test:
Added test which attempts to create trigger for table referencing to
field which does not exist in this table.
sql/item.cc:
Item_trigger_field::setup_field() now returns void. If any error
will occur we will report it at fix_fields() stage.
sql/item.h:
Item_trigger_field:
- Added next_trg_field member for linking all such objects in trigger
in one list.
- Also setup_field() now returns void. If any error will occur we will
report it at fix_fields() stage.
sql/mysql_priv.h:
Added SQL_LIST::push_back() method which allows to add another SQL_LIST
to the end of this SQL_LIST.
sql/sp_head.cc:
sp_head::init()/reset_lex()/restore_lex():
In order to fill global LEX::trg_table_fields (list of all
Item_trigger_field objects for trigger) we should init the same list
in LEX of substatement before its parsing and merge it to global list
after parsing.
sql/sp_head.h:
sp_instr_trigger_field:
Made trigger_field member public to be able to add it more easily to
global list of all Item_trigger_field objects in trigger.
sql/sql_lex.cc:
LEX::trg_table was removed.
sql/sql_lex.h:
Now we are binding Item_trigger_field's to TABLE object by passing
through specially constructed list of all such objects in this trigger
instead of doing this during trigger definition parsing at table open.
So we no longer need LEX::trg_table, we use LEX::trg_table_fields list
instead.
sql/sql_parse.cc:
mysql_execute_command():
Since now we use trigger body for some checks in
mysql_create_or_drop_trigger() we should destroy it only
after calling this function.
sql/sql_trigger.cc:
Now instead of binding Item_trigger_field to TABLE objects during
trigger definition parsing at table open, we perform pass through
special list of all such objects in trigger. This allows easily check
all references to fields in old/new version of row in trigger during
execution of CREATE TRIGGER statement (this is more courtesy for users
since we can't check everything anyway).
We also report that such reference is bad by returning error from
Item_trigger_field::fix_fields() method (instead of setup_field())
This means that if trigger is broken we will bark during trigger
execution instead of trigger definition parsing at table open.
(i.e. now we allow to open tables with broken triggers).
Table_triggers_list::prepare_old_row_accessors() method was added to be
able to reuse code creating Field objects referencing TABLE::record[1]
buffer instead of TABLE::record[0].
sql/sql_trigger.h:
Added Table_triggers_list::prepare_old_row_accessors() method to be
able to reuse code creating Field objects referencing to TABLE::record[1]
instead of record[0].
sql/sql_yacc.yy:
Now instead of performing binding of Item_trigger_field objects
to TABLE object during trigger definition parsing at table open,
we perform this binding by passing through specially constructed
list of all such items in trigger.
We also check value returned from memory allocation functions.
Fixed bug 'using of alias with information schema tables in views'
removed compiler warnings
mysql-test/r/information_schema.result:
More test cases are added
mysql-test/t/information_schema.test:
More test cases are added
sql/sql_select.cc:
Fixed bug 'using of alias with information schema tables in views'
sql/sql_show.cc:
Fixed bug 'using of alias with information schema tables in views'
Changed length of some columns
sql/table.h:
Fixed bug 'using of alias with information schema tables in views'
tests/client_test.c:
Changed length of some columns
BitKeeper/etc/ignore:
auto-union
BitKeeper/etc/logging_ok:
auto-union
Docs/Support/texi2html:
Auto merged
client/mysqltest.c:
Auto merged
innobase/lock/lock0lock.c:
Auto merged
innobase/row/row0sel.c:
Auto merged
mysql-test/r/fulltext.result:
Auto merged
mysql-test/r/heap.result:
Auto merged
mysql-test/r/key.result:
Auto merged
mysql-test/r/myisam.result:
Auto merged
mysql-test/r/rpl000015.result:
Auto merged
mysql-test/r/rpl_log_pos.result:
Auto merged
mysql-test/r/rpl_rotate_logs.result:
Auto merged
mysql-test/r/subselect.result:
Auto merged
mysql-test/r/type_blob.result:
Auto merged
mysql-test/t/key.test:
Auto merged
mysql-test/t/myisam.test:
Auto merged
mysql-test/t/rpl000015.test:
Auto merged
mysql-test/t/rpl_log_pos.test:
Auto merged
mysql-test/t/rpl_rotate_logs.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/handler.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_do.cc:
Auto merged
sql/sql_table.cc:
Auto merged
BitKeeper/etc/logging_ok:
auto-union
Docs/Support/texi2html:
Auto merged
client/mysqltest.c:
Auto merged
myisam/ft_boolean_search.c:
Auto merged
mysql-test/r/fulltext.result:
Auto merged
mysql-test/r/rpl000015.result:
Auto merged
mysql-test/r/rpl_log_pos.result:
Auto merged
mysql-test/r/rpl_rotate_logs.result:
Auto merged
mysql-test/t/fulltext.test:
Auto merged
mysql-test/t/rpl000001.test:
Auto merged
mysql-test/t/rpl000015.test:
Auto merged
mysql-test/t/rpl_log_pos.test:
Auto merged
mysql-test/t/rpl_rotate_logs.test:
Auto merged
Added check for duplicate column in key
Added tests and fixed tests which exploit bug
mysql-test/r/delete.result:
Fix test as it exploited Bug#6252
mysql-test/r/innodb.result:
Test for Bug#6126
mysql-test/r/key.result:
Test for Bug#6126/6252
mysql-test/r/type_blob.result:
Fix test as it exploited Bug#6252
mysql-test/t/delete.test:
Fix test as it exploited Bug#6252
mysql-test/t/innodb.test:
Test for Bug#6126
mysql-test/t/key.test:
Test for Bug#6126/6252
mysql-test/t/type_blob.test:
Fix test as it exploited Bug#6252
sql/sql_table.cc:
Bug#6252 - Duplicate columns in keys should fail
Added check for duplicate column.
range for BETWEEN typo fixed
extra/perror.c:
meaningless error message fixed
heap/hp_rfirst.c:
Bug #6748 heap_rfirst() doesn't work (and never did!)
mysql-test/r/heap.result:
Bug #6748 heap_rfirst() doesn't work (and never did!)
mysql-test/r/range.result:
range for BETWEEN typo fixed
mysql-test/t/heap.test:
Bug #6748 heap_rfirst() doesn't work (and never did!)
sql/handler.cc:
Bug #6748 heap_rfirst() doesn't work (and never did!)
sql/sql_select.cc:
range for BETWEEN typo fixed
results." a.k.a. "Proper cleanup of subqueries is missing for SET and DO
statements". (Version #2 with after-review fixes).
To perform proper cleanup for statements that can contain subqueries
but don't have main select we must call free_undelaid_joins().
mysql-test/r/subselect.result:
Added test for bug #6462 "Same request on same data returns different
results." a.k.a. "Proper cleanup of subqueries is missing for SET and DO
statements".
mysql-test/t/subselect.test:
Added test for bug #6462 "Same request on same data returns different
results." a.k.a. "Proper cleanup of subqueries is missing for SET and DO
statements".
sql/set_var.cc:
Added missing cleanup of joins used in subqueries to SET statement.
sql/sql_do.cc:
Added missing cleanup of joins used in subqueries to DO statement.
- 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.
of <parameter> IS NULL":
we must not only set Item::null_value in Item_param, but implement
Item_param::is_null() to work well with IS NULL/IS NOT NULL clauses.
mysql-test/r/ps.result:
Test case for Bug#6297: test results fixed.
mysql-test/t/ps.test:
A test case for Bug#6297 "prepared statement, wrong handling of
<parameter> IS NULL"
sql/item.h:
A fix for Bug#6297: we must not only set null_value in Item_param, but
also implement Item_param::is_null() to work well with IS NULL/
IS NOT NULL.
Item::is_null() commented.
BitKeeper/etc/ignore:
auto-union
BitKeeper/etc/logging_ok:
auto-union
client/Makefile.am:
Auto merged
client/mysqlbinlog.cc:
Auto merged
configure.in:
Auto merged
include/my_time.h:
Auto merged
innobase/fil/fil0fil.c:
Auto merged
innobase/include/fil0fil.h:
Auto merged
libmysql/libmysql.c:
Auto merged
mysql-test/r/func_group.result:
Auto merged
mysql-test/r/func_str.result:
Auto merged
mysql-test/r/func_time.result:
Auto merged
mysql-test/r/union.result:
Auto merged
mysql-test/t/func_group.test:
Auto merged
mysql-test/t/func_time.test:
Auto merged
sql/field.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/item.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/item_sum.h:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_prepare.cc:
Auto merged
tests/client_test.c:
Auto merged
fixed bug: "create view v7 as select * from information_schema.tables;" failed
mysql-test/r/information_schema.result:
changed field names, fields order according to WL description
mysql-test/t/information_schema.test:
changed field names, fields order according to WL description
sql/sql_show.cc:
changed field names, fields order according to WL description
sql/sql_view.cc:
fixed bug: "create view v7 as select * from information_schema.tables;" failed
tests/client_test.c:
changed field names, fields order according to WL description
wrong datetime values for too big argument" from 4.0 tree to 4.1 tree.
mysql-test/r/func_time.result:
Manual merge
mysql-test/t/func_time.test:
Manual merge
sql/item_timefunc.cc:
Manual merge
properly" with main tree.
libmysql/libmysql.c:
Auto merged
sql-common/my_time.c:
Auto merged
sql/field.cc:
Auto merged
sql/item.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
tests/client_test.c:
Manual merge.
strings/ctype-mb.c:
Incorrect response with partial utf8 index:
Fill the max string with max_sort_char up to res_length bytes.
strings/ctype-uca.c:
Incorrect response with partial utf8 index.
Typo fixes for UTF8 collations.
into mysql.com:/home/cps/mysql/devel/innotask/mysql-5.0-inno-final
sql/ha_innodb.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/structs.h:
Auto merged
InnoDB status variables
innobase/buf/buf0buf.c:
Added function to get the number of latched pages
innobase/buf/buf0flu.c:
Added support for dblwr_pages_written, dblwr_writes and
buffer_pool_pages_flushed status variables
innobase/buf/buf0lru.c:
Added support for _buffer_pool_wait_free status variable
innobase/buf/buf0rea.c:
Added support for buffer_pool_read_ahead_rnd, buffer_pool_read_ahead_seq
and srv_buf_pool_reads status variables
innobase/fil/fil0fil.c:
Added support for os_log_fsyncs, data_read, and data_written
innobase/include/buf0buf.h:
Functions and variables needed for new status variables declared
innobase/include/buf0flu.ic:
Added support for buffer_pool_write_requests status variable
innobase/include/fil0fil.h:
Variable declared
innobase/include/os0file.h:
Declared several variabled
innobase/include/srv0srv.h:
Declared all new variables needed for InnoDB status variables
innobase/log/log0log.c:
Added support for various log-related status variables
innobase/os/os0file.c:
Added support for pending_writes, pending_reads status variables
innobase/srv/srv0srv.c:
Added internal counters and function to accumulate information for
InnoDB status variables
mysql-test/r/innodb.result:
result fot the test
mysql-test/t/innodb.test:
We have tests only for few variables, as we cannot predict value for
most of the added variables. It depends on the system load, OS, HDD
e.t.c Thus, we cannot test them with mysql-test.
sql/ha_innodb.cc:
Added an array for InnoDB status variables. This is part of the
WL2059 Engine-specific status variables framework
sql/ha_innodb.h:
Declared status variables array and the function to refresh statistics
sql/handler.cc:
Added function to get statistics
sql/handler.h:
Declared function to update handlers statistics
sql/mysql_priv.h:
declared opt_innodb to see it from handlers
sql/mysqld.cc:
Don't include Innodb_* status variables into "show status" if we
are compiling without InnoDB
sql/sql_show.cc:
mysqld_show modified and split into two parts to support enclosed
arrays in the show_var_st structure. This is a part of
WL2059 Engine-specific status variables framework.
sql/structs.h:
Added new value to mark enclosed array in the status variables array
client/Makefile.am:
Auto merged
mysql-test/r/ctype_ucs.result:
Auto merged
mysql-test/r/fulltext.result:
Auto merged
mysql-test/r/heap.result:
Auto merged
mysql-test/r/heap_hash.result:
Auto merged
mysql-test/r/select.result:
Auto merged
mysql-test/t/select.test:
Auto merged
mysql-test/t/user_var.test:
Auto merged
ndb/src/mgmsrv/main.cpp:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/slave.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/structs.h:
Auto merged
Rework parser expression rules
Rework handling for "||" concat/or
Eliminate some shift/reduce conflicts
Add support for "xxx IS [ NOT ] truth_value"
mysql-test/r/ansi.result:
Fix test for new BROKEN_NOT mode bit
mysql-test/r/bool.result:
WL#638
New test for BROKEN_NOT mode
New test for "expr IS [NOT] truth_value" syntax
mysql-test/r/sql_mode.result:
Fix test for new BROKEN_NOT mode bit
mysql-test/t/bool.test:
WL#638
New test for BROKEN_NOT mode
New test for "expr IS [NOT] truth_value" syntax
sql/lex.h:
WL#638
"&&" and "AND" return different tokens,
NOT token changed to NOT_SYM
OR_OR_CONCAT token changed to OR_OR_SYM
New token "UNKNOWN"
sql/mysql_priv.h:
WL#638
New mode: BROKEN_NOT
sql/mysqld.cc:
WL#638
New mode: BROKEN_NOT
sql/set_var.cc:
WL#638
New mode: BROKEN_NOT
BROKEN_NOT is set in MYSQL323 and MYSQL40 modes
sql/sql_lex.cc:
Bug#638
Alter tokens returned by lexer depending upon sql_mode:
Return NOT2_SYM token instead of NOT_SYM when in BROKEN_NOT mode
Return OR2_SYM token instead of OR_OR_SYM when not in PIPES_AS_CONCAT mode
sql/sql_yacc.yy:
WL#638
Change grammar to respect proper SQL syntax for NOT
Clean up grammar, eliminate >100 shift/reduce conflicts
New support for "expr IS [NOT] truth_value" SQL syntax
Remove or_or_concat() support func. New support func is_truth_value()
code cleanup
mysql-test/r/information_schema.result:
Fix for Auto_increment filed value in 'show table status'
mysql-test/t/information_schema.test:
Fix for Auto_increment filed value in 'show table status'
Moving the part of user_var.test using UCS2 to ctype_ucs.test
mysql-test/r/ctype_ucs.result:
result update
mysql-test/r/user_var.result:
result update
mysql-test/t/ctype_ucs.test:
importing test piece from user_var.test
mysql-test/t/user_var.test:
using UCS2 in this test fails on non-USC2-capable binaries, so let's move this piece to ctype_ucs.test.
sql/slave.cc:
changing arg type to uint32* (as what is used in this arg is &thd->db_length which is uint32*)
sql/slave.h:
changing arg type to uint32*
sql/sql_parse.cc:
changing arg types to uint32, as what is used in these args is a create_field::length which is uint32.