mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 9a833dc688
			
		
	
	
	9a833dc688
	
	
	
		
			
			The old code to print partition values was too complicated:
- it created new Items for character set conversion purposes.
- it mixed string conversion and partition error reporting
  in the same code blocks.
Simplifying the code as follows:
- Adding helper methods String::can_be_safely_convert_to() and
  String::append_introducer_and_hex().
- Adding DBUG_EXECUTE_IF("generate_partition_syntax_for_frm",  push_warning...)
  into generate_partition_syntax_for_frm(), to test the PARTITON
  clause written to FRM. Adding test partition_utf8-debug.test for this.
- Removing functions get_cs_converted_part_value_from_string() and
  get_cs_converted_string_value. Changing get_partition_column_description()
  to use Type_handler::partition_field_append_value() instead.
  This makes SHOW CREATE TABLE and SELECT FROM I_S.PARTITIONS
  use the same code path.
- Changing Type_handler::partition_field_append_value() not to
  call convert_charset_partition_constant(), to avoid creating a new Item
  for string conversion pursposes.
  Rewritting the code to use only String methods.
- Removing error reporting code (ER_PARTITION_FUNCTION_IS_NOT_ALLOWED)
  from Type_handler::partition_field_append_value().
  The error is correctly detected and reported on the caller level.
  So error reporting was redundant here.
Also:
- Moving methods Type_handler::partition_field_*() from sql_partition.cc
  to sql_type.cc. This fixes compilation problem with -DPLUGIN_PARTITION=NO,
  earlier introduced by the patch for MDEV-20831.
		
	
			
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| --source include/have_partition.inc
 | |
| --source include/have_debug_sync.inc
 | |
| 
 | |
| --echo #
 | |
| --echo # Start of 10.5 tests
 | |
| --echo #
 | |
| 
 | |
| --echo #
 | |
| --echo # MDEV-20856 Bad values in metadata views for partitions on VARBINARY
 | |
| --echo #
 | |
| 
 | |
| SET NAMES utf8;
 | |
| SET @save_dbug = @@debug_dbug;
 | |
| SET SESSION debug_dbug="+d,generate_partition_syntax_for_frm";
 | |
| 
 | |
| 
 | |
| --error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
 | |
| CREATE OR REPLACE TABLE t1 (a VARCHAR(10)) CHARACTER SET latin1
 | |
|   PARTITION BY LIST COLUMNS (a) (PARTITION p0 VALUES IN (_utf8'Ṡ'));
 | |
| 
 | |
| --error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
 | |
| CREATE OR REPLACE TABLE t1 (a VARCHAR(10)) CHARACTER SET latin1
 | |
|   PARTITION BY LIST COLUMNS (a) (PARTITION p0 VALUES IN ('Ṡ'));
 | |
| 
 | |
| CREATE OR REPLACE TABLE t1 (a VARCHAR(10)) CHARACTER SET latin1
 | |
|   PARTITION BY LIST COLUMNS (a) (PARTITION p0 VALUES IN (_latin1 0xDF));
 | |
| SELECT PARTITION_DESCRIPTION FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='t1';
 | |
| DROP TABLE t1;
 | |
| 
 | |
| CREATE OR REPLACE TABLE t1 (a VARCHAR(10)) CHARACTER SET latin1
 | |
|   PARTITION BY LIST COLUMNS (a) (PARTITION p0 VALUES IN (_utf8'ß'));
 | |
| SELECT PARTITION_DESCRIPTION FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='t1';
 | |
| DROP TABLE t1;
 | |
| 
 | |
| CREATE OR REPLACE TABLE t1 (a VARCHAR(10)) CHARACTER SET latin1
 | |
|   PARTITION BY LIST COLUMNS (a) (PARTITION p0 VALUES IN ('ß'));
 | |
| DROP TABLE t1;
 | |
| 
 | |
| CREATE OR REPLACE TABLE t1 (a VARCHAR(10)) CHARACTER SET utf8
 | |
|   PARTITION BY LIST COLUMNS (a) (PARTITION p0 VALUES IN (_utf8'ß'));
 | |
| SELECT PARTITION_DESCRIPTION FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='t1';
 | |
| DROP TABLE t1;
 | |
| 
 | |
| CREATE OR REPLACE TABLE t1 (a VARCHAR(10)) CHARACTER SET utf8
 | |
|   PARTITION BY LIST COLUMNS (a) (PARTITION p0 VALUES IN ('ß'));
 | |
| SELECT PARTITION_DESCRIPTION FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='t1';
 | |
| DROP TABLE t1;
 | |
| 
 | |
| 
 | |
| CREATE OR REPLACE TABLE t1 (a VARBINARY(10)) CHARACTER SET utf8
 | |
|   PARTITION BY LIST COLUMNS (a) (PARTITION p0 VALUES IN (0xFF));
 | |
| SELECT PARTITION_DESCRIPTION FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='t1';
 | |
| DROP TABLE t1;
 | |
| 
 | |
| 
 | |
| CREATE OR REPLACE TABLE t1 (a DATE) CHARACTER SET utf8
 | |
|   PARTITION BY LIST COLUMNS (a) (PARTITION p0 VALUES IN (FROM_DAYS(NULL)));
 | |
| SELECT PARTITION_DESCRIPTION FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='t1';
 | |
| DROP TABLE t1;
 | |
| 
 | |
| CREATE OR REPLACE TABLE t1 (a DATE) CHARACTER SET utf8
 | |
|   PARTITION BY LIST COLUMNS (a) (PARTITION p0 VALUES IN (FROM_DAYS(100)));
 | |
| SELECT PARTITION_DESCRIPTION FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='t1';
 | |
| DROP TABLE t1;
 | |
| 
 | |
| 
 | |
| SET debug_dbug=@save_dbug;
 | |
| 
 | |
| --echo #
 | |
| --echo # End of 10.5 tests
 | |
| --echo #
 |