It was hard to understand what the error really meant.
The error checking in partitioning is done in several different
parts during the execution of a query which can make it
hard to return useful errors.
Added a new error for bad VALUES part in the per PARTITION clause.
Using the more verbose error that a column is not allowed in
the partitioning function instead of just that the function is
not allowed.
mysql-test/r/partition.result:
changed error to be more specific
mysql-test/r/partition_error.result:
updated result
mysql-test/std_data/parts/t1TIMESTAMP.frm:
.frm file of CREATE TABLE t1 (a TIMESTAMP) PARTITION BY HASH(TO_DAYS(a));
mysql-test/t/partition.test:
changed error to be more specific
mysql-test/t/partition_error.test:
Added test (also for verifying behaviour of previously
created tables which is no longer allowed).
Updated expected errors in other places
sql/partition_info.cc:
Added function report_part_expr_error to
be able to return a more specific error.
Renamed fix_func_partition to fix_partition_values
since the function really fixes/checks the VALUES clause.
sql/partition_info.h:
removed part_result_type, since it was unused.
renamed fix_funk_partition->fix_partition_values
added report_part_expr_error
sql/share/errmsg-utf8.txt:
Added a more specific error.
sql/sql_partition.cc:
made use of report_part_expr_error to get a more specific error.
sql/sql_yacc.yy:
Changed error message to be more specific. And return an other error code.
Fix warnings flagged by the new warning option -Wunused-but-set-variable
that was added to GCC 4.6 and that is enabled by -Wunused and -Wall. The
option causes a warning whenever a local variable is assigned to but is
later unused. It also warns about meaningless pointer dereferences.
client/mysql.cc:
Meaningless pointer dereferences.
client/mysql_upgrade.c:
Check whether reading from the file succeeded.
extra/comp_err.c:
Unused.
extra/yassl/src/yassl_imp.cpp:
Skip instead of reading data that is discarded.
include/my_pthread.h:
Variable is only used in debug builds.
include/mysys_err.h:
Add new error messages.
mysys/errors.c:
Add new error message for permission related functions.
mysys/mf_iocache.c:
Variable is only checked under THREAD.
mysys/my_copy.c:
Raise a error if chmod or chown fails.
mysys/my_redel.c:
Raise a error if chmod or chown fails.
regex/engine.c:
Use a equivalent variable for the assert.
server-tools/instance-manager/instance_options.cc:
Unused.
sql/field.cc:
Unused.
sql/item.cc:
Unused.
sql/log.cc:
Do not ignore the return value of freopen: only set buffer if
reopening succeeds.
Adjust doxygen comment to the right function.
Pass message lenght to log function.
sql/mysqld.cc:
Do not ignore the return value of freopen: only set buffer if
reopening succeeds.
sql/partition_info.cc:
Unused.
sql/slave.cc:
No need to set pointer to the address of '\0'.
sql/spatial.cc:
Unused. Left for historical purposes.
sql/sql_acl.cc:
Unused.
sql/sql_base.cc:
Pointers are always set to the same variables.
sql/sql_parse.cc:
End statement if reading fails.
Store the buffer after it has actually been updated.
sql/sql_repl.cc:
No need to set pointer to the address of '\0'.
sql/sql_show.cc:
Put variable under the same ifdef block.
sql/udf_example.c:
Set null pointer flag appropriately.
storage/csv/ha_tina.cc:
Meaningless dereferences.
storage/example/ha_example.cc:
Return the error since it's available.
storage/myisam/mi_locking.c:
Remove unused and dead code.
Although the C standard mandates that sprintf return the number
of bytes written, some very ancient systems (i.e. SunOS 4)
returned a pointer to the buffer instead. Since these systems
are not supported anymore and are hopefully long dead by now,
simply remove the portability wrapper that dealt with this
discrepancy. The autoconf check was causing trouble with GCC.
Fix various mismatches between function's language linkage. Any
particular function that is declared in C++ but should be callable
from C must have C linkage. Note that function types with different
linkages are also distinct. Thus, if a function type is declared in
C code, it will have C linkage (same if declared in a extern "C"
block).
client/mysql.cc:
Mismatch between prototype and declaration.
client/mysqltest.cc:
mysqltest used to be C code. Use C linkage where appropriate.
cmd-line-utils/readline/input.c:
Isolate unreachable code.
include/my_alloc.h:
Function type must have C linkage.
include/my_base.h:
Function type must have C linkage.
include/my_global.h:
Add helper macros to avoid spurious namespace indentation.
include/mysql.h.pp:
Update ABI file.
mysys/my_gethwaddr.c:
Remove stray carriage return and fix coding style.
plugin/semisync/semisync_master_plugin.cc:
Callback function types have C linkage.
plugin/semisync/semisync_slave_plugin.cc:
Callback function types have C linkage.
sql/derror.cc:
Expected function type has C linkage.
sql/field.cc:
Use helper macro and fix indentation.
sql/handler.cc:
Expected function type has C linkage.
sql/item_sum.cc:
Correct function linkages. Remove now unnecessary cast.
sql/item_sum.h:
Add prototypes with the appropriate linkage as otherwise they
are distinct.
sql/mysqld.cc:
Wrap functions in C linkage mode.
sql/opt_range.cc:
C language linkage is ignored for class member functions.
sql/partition_info.cc:
Add wrapper functions with C linkage for class member functions.
sql/rpl_utility.h:
Use helper macro and fix indentation.
sql/sql_class.cc:
Change type of thd argument -- THD is a class.
Use helper macro and fix indentation.
sql/sql_class.h:
Change type of thd argument -- THD is a class.
sql/sql_select.cc:
Expected function type has C linkage.
sql/sql_select.h:
Move prototype to sql_test.h
sql/sql_show.cc:
Expected function type has C linkage.
sql/sql_test.cc:
Fix required function prototype and fix coding style.
sql/sql_test.h:
Removed unnecessary export and add another.
storage/myisammrg/ha_myisammrg.cc:
Expected function type has C linkage.
storage/perfschema/pfs.cc:
PSI headers are declared with C language linkage, which also
applies to function types.
Backport from mysql-pe (of those parts which have not been upmerged from 5.1)
sql/field.cc:
Local scope variable or method argument same as class attribute.
sql/item.cc:
Rename auto variable to avoid name clash.
sql/item.h:
Item_ref::basic_const_item had wrong signature (missing const)
and was thus never called.
sql/partition_info.cc:
Rename, to avoid name clashes.
sql/sql_load.cc:
Rename, to avoid name clashes.
Add -Wall to gcc/g++
Fix most warnings reported in dbg and opt mode.
cmd-line-utils/libedit/filecomplete.c:
Remove unused auto variables.
configure.cmake:
Add -Wall to gcc.
extra/comp_err.c:
Cast to correct type.
extra/perror.c:
Fix segfault (but warnings about deprecated features remain)
extra/yassl/taocrypt/include/runtime.hpp:
Comparing two literals was reported as undefined behaviour.
include/my_global.h:
Add a template for aligning character buffers.
mysys/lf_alloc-pin.c:
Initialize pointer.
sql/mysqld.cc:
Use UNINIT_VAR rather than LINT_INIT.
sql/partition_info.cc:
Use UNINIT_VAR rather than LINT_INIT.
sql/rpl_handler.cc:
Use char[] rather than unsigned long[] array for placement buffer.
sql/spatial.cc:
Use char[] rather than unsigned void*[] array for placement buffer.
sql/spatial.h:
Use char[] rather than unsigned void*[] array for placement buffer.
sql/sql_partition.cc:
Initialize auto variable.
sql/sql_table.cc:
Initialize auto variables.
Add parens around assignment within if()
sql/sys_vars.cc:
Use UNINIT_VAR.
storage/innobase/os/os0file.c:
Init first slot in auto variable.
storage/myisam/mi_create.c:
Use UNINIT_VAR rather than LINT_INIT.
storage/myisam/mi_open.c:
Remove (wrong) casting.
storage/myisam/mi_page.c:
Remove (wrong) casting.
storage/myisam/mi_search.c:
Cast to uchar* rather than char*.
strings/ctype-ucs2.c:
Use UNINIT_VAR rather than LINT_INIT.
Add (uchar*) casting.
Conflicts:
Text conflict in mysql-test/r/grant.result
Text conflict in mysql-test/t/grant.test
Text conflict in mysys/mf_loadpath.c
Text conflict in sql/slave.cc
Text conflict in sql/sql_priv.h
This is the 5.1 merge and extension of the fix.
The server was happily accepting paths in table name in all places a table
name is accepted (e.g. a SELECT). This allowed all users that have some
privilege over some database to read all tables in all databases in all
mysql server instances that the server file system has access to.
Fixed by :
1. making sure no path elements are allowed in quoted table name when
constructing the path (note that the path symbols are still valid in table names
when they're properly escaped by the server).
2. checking the #mysql50# prefixed names the same way they're checked for
path elements in mysql-5.0.
This patch:
- Moves all definitions from the mysql_priv.h file into
header files for the component where the variable is
defined
- Creates header files if the component lacks one
- Eliminates all include directives from mysql_priv.h
- Eliminates all circular include cycles
- Rename time.cc to sql_time.cc
- Rename mysql_priv.h to sql_priv.h
There was no check for DATA/INDEX DIRECTORY for subpartitions
Added the same check as for partitions.
mysql-test/r/partition_error.result:
Bug#42954: SQL MODE 'NO_DIR_IN_CREATE' does not work with subpartitions
Updated results
mysql-test/t/partition_error.test:
Bug#42954: SQL MODE 'NO_DIR_IN_CREATE' does not work with subpartitions
Added tests
sql/partition_info.cc:
Bug#42954: SQL MODE 'NO_DIR_IN_CREATE' does not work with subpartitions
moved the check for DATA/INDEX DIRECTORY into a function
and used it for both partitions as well as subpartitions.
(Was not checked at all for subpartitions before)
The non documented command 'ALTER PARTITION t REORGANIZE PARTITION'
(without any partitions!) which only make sense for nativly
partitioned engines, such as NDB, crashes the server if there was
no change of number of partitions.
The problem was wrong usage of fast_end_partition function,
which led to usage of a non initialized variable.
mysql-test/r/partition_mgm.result:
Bug#40389: REORGANIZE PARTITION crashes when only using one partition
Updated test result.
mysql-test/t/partition_mgm.test:
Bug#40389: REORGANIZE PARTITION crashes when only using one partition
Added new test case.
sql/partition_info.cc:
Bug#40389: REORGANIZE PARTITION crashes when only using one partition
Added DBUG_ASSERT to easier catch similar problems.
sql/sql_partition.cc:
Bug#40389: REORGANIZE PARTITION crashes when only using one partition
fast_end_partitions is called later in mysql_alter_table if
variable fast_alter_partition is set.
warnings)
Before this fix, several places in the code would raise a warning with an
error code 0, making it impossible for a stored procedure, a connector,
or a client application to trigger logic to handle the warning.
Also, the warning text was hard coded, and therefore not translated.
With this fix, new errors numbers have been created to represent these
warnings, and the warning text is coded in the errmsg.txt file.
Updated the test due to bug 32167
Corrected spelling of error message
mysql-test/r/partition_not_windows.result:
Updated test result due to test case changes and corrected spelling error
mysql-test/r/partition_symlink.result:
Bug#35305: partition_symlink test failure
Updated test result due to test case changes
mysql-test/r/symlink.result:
Updated test result due to test case changes and corrected spelling error
mysql-test/t/disabled.def:
Bug#35305: partition_symlink test failure
Enable the test after it has been fixed
mysql-test/t/partition_not_windows.test:
Removed disable/enable_query_log for better result files
mysql-test/t/partition_symlink.test:
Bug#35305: partition_symlink test failure
Changes due to bug 32167
mysql-test/t/symlink.test:
using replace_result instead of disable_query_log
sql/partition_info.cc:
corrected spelling
sql/sql_parse.cc:
corrected spelling
into pcg5ppc.xiphis.org:/Network/Servers/anubis.xiphis.org/home/antony/work/merge.20080307/mysql-5.1
configure.in:
Auto merged
mysql-test/r/func_misc.result:
Auto merged
mysql-test/r/myisam.result:
Auto merged
mysql-test/r/partition.result:
Auto merged
mysql-test/r/partition_symlink.result:
Auto merged
mysql-test/t/func_misc.test:
Auto merged
mysql-test/t/partition.test:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/item.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/partition_info.cc:
Auto merged
sql/partition_info.h:
Auto merged
sql/rpl_rli.cc:
Auto merged
sql/sql_plugin.cc:
Auto merged
sql/sql_show.cc:
Auto merged
mysql-test/r/symlink.result:
manual merge
mysql-test/suite/parts/inc/partition_basic.inc:
manual merge
mysql-test/suite/parts/r/partition_basic_innodb.result:
manual merge
mysql-test/suite/parts/r/partition_basic_myisam.result:
manual merge
mysql-test/t/partition_symlink.test:
manual merge
mysql-test/t/symlink.test:
manual merge
sql/sql_parse.cc:
manual merge
added new function test_if_data_home_dir() which checks that
path does not contain mysql data home directory.
Using of 'mysql data home'/'any db name' in
DATA DIRECTORY & INDEX DIRECTORY is disallowed
mysql-test/r/partition.result:
test result
mysql-test/r/partition_not_windows.result:
result fix
mysql-test/r/partition_symlink.result:
result fix
mysql-test/r/symlink.result:
test result update
mysql-test/t/partition.test:
test case
mysql-test/t/partition_not_windows.test:
test case update
mysql-test/t/partition_symlink.test:
test case update
mysql-test/t/symlink.test:
test case
sql/mysql_priv.h:
new variable mysql_unpacked_real_data_home
sql/mysqld.cc:
new variable mysql_unpacked_real_data_home
sql/partition_info.cc:
new check_partition_dirs() which checks
data directory and index directory for partition elements
sql/partition_info.h:
new check_partition_dirs() which checks
data directory and index directory for partition elements
sql/sql_parse.cc:
added new function test_if_data_home_dir() which checks that
path does not contain mysql data home directory.
Using of 'mysql data home'/'any db name' in
DATA DIRECTORY & INDEX DIRECTORY is disallowed
Fixed a missed case in the patch for Bug#31931.
Also makes Bug#33722 a duplicate of Bug#31931.
Added tests for better coverage.
Replaced some legacy function calls.
mysql-test/r/partition.result:
Added tests for better coverage
mysql-test/r/partition_datatype.result:
Added tests for better coverage
mysql-test/r/partition_error.result:
Added tests for better coverage
mysql-test/suite/parts/inc/partition_engine.inc:
Bug#31931: Mix of handlers error message
Bug#33722 is fixed within this patch too
mysql-test/suite/parts/r/partition_engine_innodb.result:
Bug#31931: Mix of handlers error message
Bug#33722 is fixed within this patch too
mysql-test/suite/parts/r/partition_engine_myisam.result:
Bug#31931: Mix of handlers error message
Bug#33722 is fixed within this patch too
mysql-test/t/partition.test:
Added tests for better coverage
mysql-test/t/partition_datatype.test:
Added tests for better coverage
mysql-test/t/partition_error.test:
Added tests for Bug#31931
sql/partition_info.cc:
Bug#31931: Mix of handlers error message
Fixed case where given info->db_type not matched
thd->lex->create_info.db_type
And the check for inconsistent subpartition engines-clauses.
sql/sql_partition.cc:
Changed ha_legacy_type to ha_resolve_storage_engine_name
sql/sql_table.cc:
Changed ha_legacy_type to ha_resolve_storage_engine_name
into witty.:/Users/mattiasj/clones/topush-51
mysql-test/r/partition.result:
Auto merged
mysql-test/suite/ndb/r/ndb_partition_key.result:
Auto merged
mysql-test/suite/ndb/t/ndb_partition_key.test:
Auto merged
mysql-test/t/partition.test:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/partition_info.cc:
SCCS merged
Problem was that the mix of handlers was not consistent between
CREATE and ALTER
changed so that it works like:
- All partitions must use the same engine
AND it must be the same as the table.
- if one does NOT specify an engine on the table level
then one must either NOT specify any engine on any
partition/subpartition OR for ALL partitions/subpartitions
Note: that after a table have been created, the storage engine
is specified for all parts of the table (table/partition/subpartition)
and so when using alter, one does not need to specify it (unless one
wants to change the storage engine, then one have to specify it on the
table level)
mysql-test/r/partition.result:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test result updated
mysql-test/r/partition_innodb.result:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test result updated
mysql-test/suite/ndb/r/ndb_partition_key.result:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test result updated
mysql-test/suite/ndb/t/ndb_partition_key.test:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test case update
mysql-test/suite/parts/inc/partition_engine.inc:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test case updated
mysql-test/suite/parts/r/ndb_partition_key.result:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test result updated
mysql-test/suite/parts/r/partition_engine_innodb.result:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test result updated
mysql-test/suite/parts/r/partition_engine_myisam.result:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test result updated
mysql-test/suite/parts/t/ndb_partition_key.test:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test case updated
mysql-test/t/partition.test:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test case updated
mysql-test/t/partition_innodb.test:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test case updated
sql/partition_info.cc:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
moved the check_engine_condition here from sql_partition.cc
created a new check_engine_mix from check_native_partitioned in
sql_partition.cc
sql/partition_info.h:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
non static function check_engine_mix (now used in sql_partition.cc)
sql/sql_partition.cc:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
moved check_engine_condition to partition_info.cc and moved out some
common code in check_native_partitioned to check_engine_mix in
partition_info.cc
Problem was that there are no support for symlinked files on Windows for
mysqld. So we fail when trying to create them.
Solution: Ignore the DATA/INDEX DIRECTORY clause for partitions and push
a warning. (Just like a MyISAM table)
mysql-test/r/partition.result:
Bug#30459 Partitioning across disks failing on Windows
Moved symlink specific tests to partition_symlink
result file
mysql-test/r/partition_symlink.result:
Bug#30459 Partitioning across disks failing on Windows
Moved symlink specific tests from partition.test
result file
mysql-test/r/partition_windows.result:
Bug#30459 Partitioning across disks failing on Windows
result file
mysql-test/t/partition.test:
Bug#30459 Partitioning across disks failing on Windows
Moved symlink specific tests to partition_symlink
test file
mysql-test/t/partition_symlink.test:
Bug#30459 Partitioning across disks failing on Windows
Moved symlink specific tests from partition.test
test file
mysql-test/t/partition_windows.test:
Bug#30459 Partitioning across disks failing on Windows
test file
into stella.local:/home2/mydev/mysql-5.1-axmrg
mysql-test/t/disabled.def:
Auto merged
sql/partition_info.cc:
Auto merged
storage/csv/ha_tina.cc:
Auto merged
mysql-test/r/func_misc.result:
SCCS merged
mysql-test/t/func_misc.test:
SCCS merged
Problems:
1. looking for a matching partition we miss the fact that the maximum
allowed value is in the PARTITION p LESS THAN MAXVALUE.
2. one can insert maximum value if numeric maximum value is the last range.
(should only work if LESS THAN MAXVALUE).
3. one cannot have both numeric maximum value and MAXVALUE string as ranges
(the same value, but different meanings).
Fix: consider the maximum value as a supremum.
mysql-test/r/partition.result:
Fix for bug #29258: Partitions: search fails for maximum unsigned bigint
- test result.
mysql-test/t/partition.test:
Fix for bug #29258: Partitions: search fails for maximum unsigned bigint
- test case.
sql/partition_info.cc:
Fix for bug #29258: Partitions: search fails for maximum unsigned bigint
- In case of PARTITION p VALUES LESS THAN MAXVALUE consider the
maximium value as a supremum.
sql/sql_partition.cc:
Fix for bug #29258: Partitions: search fails for maximum unsigned bigint
- In case of PARTITION p VALUES LESS THAN MAXVALUE consider the
maximium value as a supremum.