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.
That is, when the precision of DEFAULT NOW() is less than
the precision of the column, do not convert it to unireg_check,
use the new approach where DEFAULT is tryly an expression.
* revert part of the db7edfe that moved calculations from
fix_fields to val_str for Item_func_sysconst and descendants
* mark session state dependent functions in check_vcol_func_processor()
* re-run fix_fields for all such functions for every statement
* fix CURRENT_USER/CURRENT_ROLE not to use Name_resolution_context
(that is allocated on the stack in unpack_vcol_info_from_frm())
Note that NOW(), CURDATE(), etc use lazy initialization and do *not*
force fix_fields to be re-run. The rule is:
* lazy initialization is *not* allowed, if it changes metadata (so,
e.g. DAYNAME() cannot use it)
* lazy initialization is *preferrable* if it has side effects (e.g.
NOW() sets thd->time_zone_used=1, so it's better to do it when
the value of NOW is actually needed, not when NOW is simply prepared)
- Adding SHOW CREATE TABLE into all DEFAULT tests,
to cover need_parentheses_in_default() for all items
- Fixing a few items not to print parentheses in DEFAULT:
spatial function-alike predicates, IS_IPV4 and IS_IPV6 functions,
COLUMN_CHECK() and COLUMN_EXISTS().
- Force usage of () around complex DEFAULT expressions
- Give error if DEFAULT expression contains invalid characters
- Don't use const_charset_conversion for stored Item_func_sysconf expressions
as the result is not constaint over different executions
- Fixed Item_func_user() to not store calculated value in str_value
MDEV-10134 Add full support for DEFAULT
- Added support for using tables with MySQL 5.7 virtual fields,
including MySQL 5.7 syntax
- Better error messages also for old cases
- CREATE ... SELECT now also updates timestamp columns
- Blob can now have default values
- Added new system variable "check_constraint_checks", to turn of
CHECK constraint checking if needed.
- Removed some engine independent tests in suite vcol to only test myisam
- Moved some tests from 'include' to 't'. Should some day be done for all tests.
- FRM version increased to 11 if one uses virtual fields or constraints
- Changed to use a bitmap to check if a field has got a value, instead of
setting HAS_EXPLICIT_VALUE bit in field flags
- Expressions can now be up to 65K in total
- Ensure we are not refering to uninitialized fields when handling virtual fields or defaults
- Changed check_vcol_func_processor() to return a bitmap of used types
- Had to change some functions that calculated cached value in fix_fields to do
this in val() or getdate() instead.
- store_now_in_TIME() now takes a THD argument
- fill_record() now updates default values
- Add a lookahead for NOT NULL, to be able to handle DEFAULT 1+1 NOT NULL
- Automatically generate a name for constraints that doesn't have a name
- Added support for ALTER TABLE DROP CONSTRAINT
- Ensure that partition functions register virtual fields used. This fixes
some bugs when using virtual fields in a partitioning function
Print default values for BLOB's.
This is a part commit for automatic changes to make the real commit smaller.
All changes here are related to that we now print DEFAULT NULL for blob and
text fields, like we do for all other fields.
Table corruption happens during table reading in ha_tina::find_current_row() func.
Field::store() method returns error(true) if stored value is 0.
The fix:
added special case for enum type which correctly processes 0 value.
Additional fix:
INSERT...(default) and INSERT...() have the same behaviour now for enum type.
mysql-test/r/csv.result:
test result
mysql-test/r/default.result:
result fix
mysql-test/t/csv.test:
test case
sql/item.cc:
Changes:
do not print warning for 'enum' type if there is no default value.
set default value.
storage/csv/ha_tina.cc:
Table corruption happens during table reading in ha_tina::find_current_row() func.
Field::store() method returns error(true) if stored value is 0.
The fix:
added special case for enum type which correctly processes 0 value.
INSERT .. SELECT .. ON DUPLICATE KEY UPDATE col=DEFAULT
In order to get correct values from update fields that
belongs to the SELECT part in the INSERT .. SELECT .. ON
DUPLICATE KEY UPDATE statement, the server adds referenced
fields to the select list. Part of the code that does this
transformation is shared between implementations of
the DEFAULT(col) function and the DEFAULT keyword (in
the col=DEFAULT expression), and an implementation of
the DEFAULT keyword is incomplete.
mysql-test/r/default.result:
Added test case for bug #39002.
mysql-test/t/default.test:
Added test case for bug #39002.
sql/item.cc:
The Item_default_value::transform() function has been
modified to take into account the fact that the DEFAULT
keyword has no arguments unlike the DEFAULT(col) function
that always has an argument.
into mysql.com:/home/gluh/MySQL/Merge/5.1-opt
mysql-test/r/alter_table.result:
Auto merged
mysql-test/r/create.result:
Auto merged
mysql-test/r/ctype_collate.result:
Auto merged
mysql-test/r/ctype_recoding.result:
Auto merged
mysql-test/r/default.result:
Auto merged
mysql-test/r/gis.result:
Auto merged
mysql-test/r/grant.result:
Auto merged
mysql-test/r/information_schema.result:
Auto merged
mysql-test/r/key.result:
Auto merged
mysql-test/r/mysql.result:
Auto merged
mysql-test/r/ps_1general.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/r/type_enum.result:
Auto merged
mysql-test/r/type_ranges.result:
Auto merged
mysql-test/r/show_check.result:
manual merge
mysql-test/t/information_schema.test:
manual merge
sql/sql_show.cc:
manual merge
added get_field_default_value() function which obtains default value from the field
(used in store_create_info() & get_schema_column_record() functions)
mysql-test/r/alter_table.result:
result fix
mysql-test/r/create.result:
result fix
mysql-test/r/ctype_collate.result:
result fix
mysql-test/r/ctype_recoding.result:
result fix
mysql-test/r/default.result:
result fix
mysql-test/r/gis.result:
result fix
mysql-test/r/grant.result:
result fix
mysql-test/r/information_schema.result:
result fix
mysql-test/r/key.result:
result fix
mysql-test/r/mysql.result:
result fix
mysql-test/r/ps_1general.result:
result fix
mysql-test/r/show_check.result:
result fix
mysql-test/r/sp.result:
result fix
mysql-test/r/type_enum.result:
result fix
mysql-test/r/type_ranges.result:
result fix
mysql-test/t/information_schema.test:
test case
into mysql.com:/home/hf/work/20691/my51-20691
mysql-test/r/default.result:
Auto merged
sql/item.cc:
Auto merged
mysql-test/r/gis.result:
SCCS merged
mysql-test/t/gis.test:
merging
Some fields (GEOMETRY first of all) can't be handled properly in this
case at all. So we return an error in this case
mysql-test/r/default.result:
result fixed
mysql-test/r/gis.result:
result fixed
mysql-test/t/default.test:
VIEW test added
mysql-test/t/gis.test:
testcase added
sql/item.cc:
set_defaults() changed with the 'reset()'
specifying DEFAULT
This was not specific to datetime. When there is no default value
for a column, and the user inserted DEFAULT, we would write
uninitialized memory to the table.
Now, insist on writing a default value, a zero-ish value, the same
one that comes from inserting NULL into a not-NULL field.
(This is, at best, really strange behavior that comes from allowing
sloppy usage, and serves as a good reason always to run one's server
in a strict SQL mode.)
mysql-test/r/default.result:
Verify that all kinds of types work, even others other than datetime.
mysql-test/t/default.test:
Verify that all kinds of types work, even others other than datetime.
sql/item.cc:
Even if we warn that there is no default value in the table definition,
we have to insert /something/.
mysql-test/r/alter_table.result:
Update test result
mysql-test/r/analyse.result:
Update test result
mysql-test/r/archive.result:
Update test result
mysql-test/r/archive_bitfield.result:
Update test result
mysql-test/r/archive_gis.result:
Update test result
mysql-test/r/bdb.result:
Update test result
mysql-test/r/bdb_gis.result:
Update test result
mysql-test/r/bigint.result:
Update test result
mysql-test/r/binary.result:
Update test result
mysql-test/r/case.result:
Update test result
mysql-test/r/cast.result:
Update test result
mysql-test/r/constraints.result:
Update test result
mysql-test/r/create.result:
Update test result
mysql-test/r/ctype_collate.result:
Update test result
mysql-test/r/ctype_create.result:
Update test result
mysql-test/r/ctype_latin1_de.result:
Update test result
mysql-test/r/ctype_many.result:
Update test result
mysql-test/r/ctype_mb.result:
Update test result
mysql-test/r/ctype_recoding.result:
Update test result
mysql-test/r/ctype_sjis.result:
Update test result
mysql-test/r/ctype_tis620.result:
Update test result
mysql-test/r/ctype_ucs.result:
Update test result
mysql-test/r/ctype_ujis.result:
Update test result
mysql-test/r/ctype_utf8.result:
Update test result
mysql-test/r/default.result:
Update test result
mysql-test/r/events.result:
Update test result
mysql-test/r/federated.result:
Update test result
mysql-test/r/fulltext.result:
Update test result
mysql-test/r/func_gconcat.result:
Update test result
mysql-test/r/func_group.result:
Update test result
mysql-test/r/func_math.result:
Update test result
mysql-test/r/func_misc.result:
Update test result
mysql-test/r/func_str.result:
Update test result
mysql-test/r/func_system.result:
Update test result
mysql-test/r/gis-rtree.result:
Update test result
mysql-test/r/heap.result:
Update test result
mysql-test/r/index_merge_innodb.result:
Update test result
mysql-test/r/information_schema.result:
Update test result
mysql-test/r/innodb.result:
Update test result
mysql-test/r/innodb_gis.result:
Update test result
mysql-test/r/key.result:
Update test result
mysql-test/r/merge.result:
Update test result
mysql-test/r/myisam.result:
Update test result
mysql-test/r/mysqldump-max.result:
Update test result
mysql-test/r/mysqldump.result:
Update test result
mysql-test/r/ndb_bitfield.result:
Update test result
mysql-test/r/ndb_gis.result:
Update test result
mysql-test/r/ndb_partition_key.result:
Update test result
mysql-test/r/null.result:
Update test result
mysql-test/r/partition.result:
Update test result
mysql-test/r/partition_02myisam.result:
Update test result
mysql-test/r/partition_mgm_err.result:
Update test result
mysql-test/r/partition_range.result:
Update test result
mysql-test/r/ps_2myisam.result:
Update test result
mysql-test/r/ps_3innodb.result:
Update test result
mysql-test/r/ps_4heap.result:
Update test result
mysql-test/r/ps_5merge.result:
Update test result
mysql-test/r/ps_6bdb.result:
Update test result
mysql-test/r/rpl_mixed_ddl_dml.result:
Update test result
mysql-test/r/rpl_multi_engine.result:
Update test result
mysql-test/r/rpl_ndb_UUID.result:
Update test result
mysql-test/r/show_check.result:
Update test result
mysql-test/r/sp-vars.result:
Update test result
mysql-test/r/sp.result:
Update test result
mysql-test/r/sql_mode.result:
Update test result
mysql-test/r/strict.result:
Update test result
mysql-test/r/subselect.result:
Update test result
mysql-test/r/symlink.result:
Update test result
mysql-test/r/synchronization.result:
Update test result
mysql-test/r/system_mysql_db.result:
Update test result
mysql-test/r/temp_table.result:
Update test result
mysql-test/r/trigger.result:
Update test result
mysql-test/r/type_binary.result:
Update test result
mysql-test/r/type_bit.result:
Update test result
mysql-test/r/type_bit_innodb.result:
Update test result
mysql-test/r/type_blob.result:
Update test result
mysql-test/r/type_decimal.result:
Update test result
mysql-test/r/type_enum.result:
Update test result
mysql-test/r/type_float.result:
Update test result
mysql-test/r/type_nchar.result:
Update test result
mysql-test/r/type_newdecimal.result:
Update test result
mysql-test/r/type_set.result:
Update test result
mysql-test/r/type_timestamp.result:
Update test result
mysql-test/r/type_varchar.result:
Update test result
mysql-test/r/union.result:
Update test result
mysql-test/r/user_var.result:
Update test result
mysql-test/r/variables.result:
Update test result
sql/sql_show.cc:
Make ouput from SHOW CREATE TABLE use uppercase for "CHARACTER SET", "COLLATE", "DEFAULT", "ON UPDATE" and "AUTO_INCREMENT"
Moved enabling of warnings to ensure that no warnings are generated
when this test case is executed on a clone where InnoDB is not
activated. This would fail the test case in those clones otherwise.
mysql-test/r/default.result:
Rename: mysql-test/r/bugs.result -> mysql-test/r/default.result
mysql-test/t/default.test:
Moved enabling of warnings to ensure that no warnings are generated
when this test case is executed on a clone where InnoDB is not
activated. This would fail the test case in those clones otherwise.