Commit graph

6 commits

Author SHA1 Message Date
Sergei Golubchik
a411d7f4f6 store/show vcols as item->print()
otherwise we'd need to store sql_mode *per vcol*
(consider CREATE INDEX...) and how SHOW CREATE TABLE would
support that?

Additionally, get rid of vcol::expr_str, just to make sure
the string is always generated and never leaked in the
original form.
2016-12-12 20:35:41 +01:00
Oleksandr Byelkin
53ff66fe31 MDEV-6996: SET STATEMENT default_week_format = .. has no effect
Change constant with a system variable.
2014-12-02 09:29:53 +01:00
Alexey Kopytov
c08e6c8867 Bug #42849: innodb crash with varying time_zone on partitioned
timestamp primary key 
 
Since TIMESTAMP values are adjusted by the current time zone  
settings in both numeric and string contexts, using any 
expressions involving TIMESTAMP values as a  
(sub)partitioning function leads to undeterministic behavior of  
partitioned tables. The effect may vary depending on a storage  
engine, it can be either incorrect data being retrieved or  
stored, or an assertion failure. The root cause of this is the  
fact that the calculated partition ID may differ from a  
previously calculated ID for the same data due to timezone  
adjustments of the partitioning expression value. 
 
Fixed by disabling any expressions involving TIMESTAMP values  
to be used in partitioning functions with the follwing two 
exceptions: 
 
1. Creating or altering into a partitioned table that violates 
the above rule is not allowed, but opening existing such tables 
results in a warning rather than an error so that such tables 
could be fixed. 
 
2. UNIX_TIMESTAMP() is the only way to get a 
timezone-independent value from a TIMESTAMP column, because it 
returns the internal representation (a time_t value) of a 
TIMESTAMP argument verbatim. So UNIX_TIMESTAMP(timestamp_column)
is allowed and should be used to fix existing tables if one 
wants to use TIMESTAMP columns with partitioning.

mysql-test/r/partition_bug18198.result:
  Corrected the error.
mysql-test/r/partition_error.result:
  Corrected error texts.
  Added test cases for bug #42849.
mysql-test/t/partition_bug18198.test:
  Corrected error code.
mysql-test/t/partition_error.test:
  Corrected error codes.
  Added test cases for bug #42849.
sql/item.h:
  Added is_timezone_dependent_processor() to Item.
sql/item_func.h:
  Added has_timestamp_args() and the implementation of
  is_timezone_dependent_processor() for Item_func.
sql/item_timefunc.h:
  Added is_timezone_dependent_processor() to 
  Item_func_unix_timestamp.
sql/share/errmsg.txt:
  Renamed ER_CONST_EXPR_IN_PARTITION_FUNC_ERROR to
  ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR to better reflect the
  meaning. Adjusted the error message.
sql/sql_partition.cc:
  Modified fix_fields_part_func() to walk through partitioning
  expression tree with is_timezone_dependent_processor() and issue
  a warning/error if it depends on the timezone settings.
  
  Changed fix_fields_part_func() to a static function since it is
  not used anywhere except sql_partition.cc
sql/sql_partition.h:
  Removed the unneeded declaration of fix_fields_part_func()
  since it is now a static function.
sql/sql_yacc.yy:
  ER_CONST_EXPR_IN_PARTITION_FUNC_ERROR ->
  ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR.
2009-12-13 23:29:50 +03:00
unknown
ff3f8990e7 Disabled ascii-function
mysql-test/r/partition_bug18198.result:
  Disabled a lot of test cases using ascii-function
mysql-test/r/partition_charset.result:
  Disabled a lot of test cases using ascii-function
mysql-test/r/partition_error.result:
  Disabled a lot of test cases using ascii-function
mysql-test/r/partition_pruning.result:
  Disabled a lot of test cases using ascii-function
mysql-test/r/partition_range.result:
  Disabled a lot of test cases using ascii-function
mysql-test/t/partition_bug18198.test:
  Disabled a lot of test cases using ascii-function
mysql-test/t/partition_charset.test:
  Disabled a lot of test cases using ascii-function
mysql-test/t/partition_error.test:
  Disabled a lot of test cases using ascii-function
mysql-test/t/partition_pruning.test:
  Disabled a lot of test cases using ascii-function
mysql-test/t/partition_range.test:
  Disabled a lot of test cases using ascii-function
2007-06-13 17:28:59 +02:00
unknown
e0c0cdc3fa Removed warnings 2007-04-20 18:46:12 +02:00
unknown
2ad7512a57 More test cases
mysql-test/t/partition_charset.test:
  New test case from bug report
mysql-test/t/partition_list.test:
  New test case from bug report
mysql-test/r/partition_bug18198.result:
  New test case
mysql-test/t/partition_bug18198.test:
  New test case
2007-04-12 20:34:36 +02:00